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
SAS is headed back to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team.
Interested in speaking? Content from our attendees is one of the reasons that makes SAS Innovate such a special event!
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.