Differentiating a cumulative distribution function
4 ビュー (過去 30 日間)
古いコメントを表示
I am trying to numerically evaluate the integral of the normal density function of x with respect to the cumulative distribution of (x+y-m).
I am currently attempting to solve this by trying to integrate the derivative of the cdf times the pdf with respect to x.
Here is my code so far:
k=100;
m=20;
y=0;
syms x;
f=normpdf(x);
g=diff(normcdf(y-x+m);
D=simple(int(f*g,0,(k-m)))
Q=double(D);
E=normcdf(y+2*m-k)-D
Any suggestions? The error message is Error using NaN Trailing string input must be 'single' or 'double'.
Error in normcdf (line 60)
p = NaN(size(z),class(z));
0 件のコメント
採用された回答
Tom Lane
2012 年 9 月 17 日
The Statistics Toolbox functions normpdf and normcdf don't accept symbolic inputs. You might be able to use functions like erf, which do operate on symbolic variables, to accomplish what you want to do. Here's a little example where I compute normcdf on a numeric vector, then I use Symbolic Toolbox functions to get the same result:
>> x = [.5 .7 .9];
>> normcdf(x)
ans =
0.6915 0.7580 0.8159
>> syms s;
>> p = erfc(-s/sqrt(2))/2;
>> double(subs(p,'s',x))
ans =
0.6915 0.7580 0.8159
その他の回答 (2 件)
Tom Lane
2012 年 9 月 27 日
You just need to fix your parentheses. Change this
int(exp(-(x-mu)^2)./(2.*(sigma^2))
to this
int(exp(-(1/2)*((x-mu)/sigma)^2)
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!