【问题标题】:How to calculate the integral of log-normal distribution with MATLAB如何用 MATLAB 计算对数正态分布的积分
【发布时间】:2015-03-24 23:41:00
【问题描述】:

我想通过以下方式计算对数正态分布的部分期望:

m = 1;
v = 2;
mu = log((m^2)/sqrt(v+m^2));
sigma = sqrt(log(v/(m^2)+1));

syms x;
d = x*lognpdf(x,mu,sigma);

int(d, x, 0, 10);

但是,MATLAB 说:

使用 symfun 时出错>validateArgNames(第 211 行)第二个输入必须是 唯一符号变量的标量或向量。

symfun 中的错误(第 45 行) y.vars = validateArgNames(inputs);

sym/subsasgn 中的错误(第 771 行) C = symfun(B,[inds{:}]);

lognpdf 中的错误(第 36 行)x(x

无标题错误(第 7 行)d = x*lognpdf(x,mu,sigma);

我什至尝试通过以下方式计算 pdf 的积分:

m = 1;
v = 2;
mu = log((m^2)/sqrt(v+m^2));
sigma = sqrt(log(v/(m^2)+1));

syms x;
d = lognpdf(x,mu,sigma);

int(d, x, 0, 10); 

但是还是有错误,MATLAB说:

使用 symfun 时出错>validateArgNames(第 211 行)第二个输入必须是 唯一符号变量的标量或向量。

symfun 中的错误(第 45 行) y.vars = validateArgNames(inputs);

sym/subsasgn 中的错误(第 771 行) C = symfun(B,[inds{:}]);

lognpdf 中的错误(第 36 行)x(x

无标题错误(第 7 行)d = lognpdf(x,mu,sigma);

我真的不知道发生了什么。 pdf的积分应该是cdf吗?

【问题讨论】:

    标签: matlab statistics integration distribution symbolic-math


    【解决方案1】:

    类似于an answer several months ago,统计工具箱目前不支持符号工具箱。 因此,您可以继续对 PDF 本身进行硬编码并对其进行集成:

    d = exp(-(log(x)-mu)^2/(2*sigma^2))/(x*sigma*sqrt(2*pi));
    int(d, x, 0, 10);
    

    或者你可以使用logncdf函数,这样可能更干净。

    【讨论】:

    • 有效!谢谢!但是不明白为什么他们不支持这个,因为它看起来很容易。
    猜你喜欢
    • 2010-10-23
    • 2013-03-21
    • 2020-03-19
    • 2014-01-04
    • 1970-01-01
    • 2021-09-05
    • 2011-08-17
    • 2012-12-05
    相关资源
    最近更新 更多