I want to integral this function (1-chi-square(x/2,df=10))**5 by the chi-square(x, df=10), so I write the code below. However, the error showed up. Can any one help me solve this problem?
Proc iml;
start integrand(probchi(x,10));
return ((1-probchi((x/2),10))**5);
finish;
call quad(answer, "integrand", {0 .P});
print answer;
quit;
So that we can all use the same terminology, please review "The four essential functions for statistical programmers."
For the chi-square distribution, the CDF at x is the integral of the PDF from 0 to x. It looks like you want your integrand to be
(1 - CDF("ChiSq", x, 10))**5, and the domain of integration to be [0, infinity).
If so, then your code is almost right. Just a slight modification of the calling syntax (and I use CDF instead of PROBCHI):
proc iml;
start integrand(x);
return (1-cdf("ChiSq", x/2,10))##5 ;
finish;
call quad(answer, "integrand", {0 .P});
print answer;
So that we can all use the same terminology, please review "The four essential functions for statistical programmers."
For the chi-square distribution, the CDF at x is the integral of the PDF from 0 to x. It looks like you want your integrand to be
(1 - CDF("ChiSq", x, 10))**5, and the domain of integration to be [0, infinity).
If so, then your code is almost right. Just a slight modification of the calling syntax (and I use CDF instead of PROBCHI):
proc iml;
start integrand(x);
return (1-cdf("ChiSq", x/2,10))##5 ;
finish;
call quad(answer, "integrand", {0 .P});
print answer;
Thank you! Yes, this is very helpful. But I want the "Integrand (CDF("ChiSq", x/2, 10))" instead of Integrand (x)). In other word, I want "dCDF("ChiSq", x/2, 10)" instead of "dx". How should I do that?
Sorry, but I don't understand your notation. I don't know what "dCDF" means, unless you mean PDF, which is the derivative of the CDF.
The Integrand function evaluates a function at a value of x. It returns a number. The QUAD function integrates that function on a (possibly infinite) interval. It returns the definite integral of the function on the interval.
Maybe you should calculated it by hand firstly. Assuming CDF("ChiSq", x/2, 10)= e^x , then dCDF("ChiSq", x/2, 10)= e^x * dx
If F(x) is the cumulative distribution function and f(x) is the associated density, then one iterpretation of "dCDF" is
dF = dF/dx * dx = f(x) dx
which is why I suggested using the PDF function.
However, if the argument to F is itself a function of x, say u(x), then make sure you use the chain rule. For example, if the argument is u(x) then
d(F(u(x)) = dF/du * du/dx * dx = f(u(x)) * u`(x) dx
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.