二元对数正态密度函数的积分

时间:2019-10-29 19:26:11

标签: matlab integration numeric probability-density

rho = 0.8;

ff = @(x, y) (exp(-(((log(x)-10).^2 - 2.* rho .* (log(x)-10) .* (log(y)-10)+(log(y)-10).^2)./(2 .* (1-rho.^2))))./(2.*pi.*sqrt(1-rho.^2).*x.*y));

syms x y
vpaintegral(vpaintegral(ff, x, [0 inf]), y, [0 inf])

为什么在Matlab中上述双变量对数正态密度函数的积分不为1?

注意:此对数正态双变量随机变量的对数变换是一个均值(10,10)和协方差矩阵(1,rho,rho,1)的双变量正态随机变量。

1 个答案:

答案 0 :(得分:3)

使用 integral2

我们得到0.9994,

% MATLAB R2019a
rho = 0.8;
ff = @(x, y) (exp(-(((log(x)-10).^2-2.*rho.*(log(x)-10).*(log(y)-10)+(log(y)-10).^2)./(2.*(1-rho.^2))))./(2.*pi.*sqrt(1-rho.^2).*x.*y));

area = integral2(ff,0,inf,0,inf)     % area = 0.9994

但调整公差可得到理想的结果。

area = integral2(ff,0,inf,0,inf,'Method','iterated','AbsTol',0,'RelTol',1e-10)
  

ans = 1.0000

format long
area
  

ans = 0.999999999999998

不太破旧。


使用 vpaintegral 从符号工具箱:

您也可以为adjust the tolerance vpaintegral

使用1e-4中的Relative Error Tolerance完成工作。该参数极大地影响了计算时间。

syms x y
area = vpaintegral(vpaintegral(ff, x, [0 inf],'RelTol', 1e-4, 'AbsTol', 0), y, [0 inf],'RelTol', 1e-4, 'AbsTol', 0)
  

面积= 1.0