【问题标题】:Integration of bivariate lognormal density function双变量对数正态密度函数的积分
【发布时间】:2020-02-25 02:09:07
【问题描述】:
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)。

【问题讨论】:

    标签: matlab integration numeric probability-density


    【解决方案1】:

    使用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

    【讨论】:

    • 谢谢,但为什么 vpaintegral 不起作用。我通过使用 vpaintegral 得到 ans = 0.00547892,差别很大。
    • @user53154 我认为这是一个容忍问题。请参阅我的更新答案。如果问题仍然存在,请随时发表评论。
    猜你喜欢
    • 2021-02-14
    • 2020-11-08
    • 2017-05-05
    • 1970-01-01
    • 2018-03-05
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    相关资源
    最近更新 更多