如何使用 MATLAB 计算对数正态分布的积分

问题描述 投票:0回答:1

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

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(输入);

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

lognpdf 中的错误(第 36 行)x(x <= 0) = Inf;

无标题错误(第 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(输入);

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

lognpdf 中的错误(第 36 行)x(x <= 0) = Inf;

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

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

matlab statistics distribution symbolic-math symbolic-integration
1个回答
1
投票

几个月前的回答类似,统计工具箱目前不支持符号工具箱。 因此,您可以对 PDF 本身进行硬编码并集成它:

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

或者你可以使用

logncdf
功能,可能会更干净。

© www.soinside.com 2019 - 2024. All rights reserved.