我在使用 MATLAB 时遇到以下问题:
令 Z 服从对数正态分布,使得 ln Z 具有均值 m 和方差 w。设 eta 为负数,ca 为正常数。
我正在尝试计算期望值(让 I(Z<=c) 表示集合的指示函数 (Z<=c))
E[Z^(eta+1) I(Z<=c)] = (1/sqrt(w)) 积分_0^cx^(eta) phi((ln x - m)/sqrt(w)) dx,
其中 phi() 表示标准正态随机变量的概率分布函数。
我做的第一件事是模拟 10.000 次 Z 试验,将值 >c 的向量的条目设置为 0,提高到 (eta+1) 的幂,然后计算平均值。这应该给我预期值的 MC 估计。
ST = random('Lognormal', m,w_sq,10000,1);
hlp = zeros(10000,1);
hlp(ST<=2) = ST(ST<=2);
hlp(hlp>0) = hlp(hlp>0).^(eta1+1); % 0^(eta1+1) gives infinity
mean(hlp)
对于积分,我使用了以下代码
tmpp = integral(@(x) x.^(eta1) .* normpdf((log(x)-m)/sqrt(w_sq),0,c);
tmpp / sqrt(w_sq(1))
不幸的是,这些程序导致了完全不同的结果,尽管在数学上它们应该是相同的。
整个事情是更大代码的一部分,对我来说使用积分版本会更方便。最初我尝试使用 MC 模拟仔细检查,然后发现一定有问题......
有人可以帮忙吗?