Как вычислить интеграл логарифмически нормального распределения с помощью MATLAB

Я хочу рассчитать частичное ожидание логарифмически нормального распределения через:

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 ‹= 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(inputs);

Ошибка в sym/subsasgn (строка 771) C = symfun(B,[inds{:}]);

Ошибка в lognpdf (строка 36) x(x ‹= 0) = Inf;

Ошибка в безымянном (строка 7) d = lognpdf(x,mu,sigma);

Я действительно не знаю, что произошло. Должен ли интеграл PDF быть cdf?


person Ruiwen Zhao    schedule 26.01.2015    source источник


Ответы (1)


Подобно ответу несколько месяцев назад, панель инструментов статистики в настоящее время не поддерживает панель инструментов Symbolic. Поэтому вы можете продолжить, жестко кодируя сам PDF и интегрируя его:

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

Или вы можете использовать функцию logncdf, которая может быть чище.

person TroyHaskin    schedule 26.01.2015
comment
Оно работает! Спасибо! Но не могу понять, почему они не поддерживают это, ведь это кажется простым. - person Ruiwen Zhao; 26.01.2015