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
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Save $200 when you sign up by March 14!