У меня есть дополнительный вопрос к ответу Саши на мой предыдущий вопрос по адресу TransformedDistribution в Mathematica .
Поскольку я уже принял ответ некоторое время назад, я подумал, что имеет смысл задать это как новый вопрос.
В рамках ответа Саша определил 2 функции:
LogNormalStableCDF[{alpha_, beta_, gamma_, sigma_, delta_}, x_Real] :=
Block[{u},
NExpectation[
CDF[StableDistribution[alpha, beta, gamma, sigma], (x - delta)/u],
u \[Distributed] LogNormalDistribution[Log[gamma], sigma]]]
LogNormalStablePDF[{alpha_, beta_, gamma_, sigma_, delta_}, x_Real] :=
Block[{u},
NExpectation[
PDF[StableDistribution[alpha, beta, gamma, sigma], (x - delta)/u]/u,
u \[Distributed] LogNormalDistribution[Log[gamma], sigma]]]
Функция PDF работает нормально:
Plot[LogNormalStablePDF[{1.5, 1, 1, 0.5, 1}, x], {x, -4, 6},
PlotRange -> All]
Но если я попытаюсь построить вариант CDF:
Plot[LogNormalStableCDF[{1.5, 1, 1, 0.5, 1}, x], {x, -4, 6},
PlotRange -> All]
Оценка, похоже, никогда не заканчивается.
Я сделал нечто похожее со следующим: заменил NormalDistribution на StableDistribution выше:
LogNormalNormalCDF[{gamma_, sigma_, delta_}, x_Real] :=
Block[{u},
NExpectation[CDF[NormalDistribution[0, Sqrt[2]], (x - delta)/u],
u \[Distributed] LogNormalDistribution[Log[gamma], sigma]]]
LogNormalNormalPDF[{gamma_, sigma_, delta_}, x_Real] :=
Block[{u},
NExpectation[PDF[NormalDistribution[0, Sqrt[2]], (x - delta)/u]/u,
u \[Distributed] LogNormalDistribution[Log[gamma], sigma]]]
Графики версий CDF и PDF работают нормально.
Plot[LogNormalNormalPDF[{0.01, 0.4, 0.0003}, x], {x, -0.10, 0.10}, PlotRange -> All]
Plot[LogNormalNormalCDF[{0.01, 0.4, 0.0003}, x], {x, -0.10, 0.10}, PlotRange -> All]
Это меня озадачило. Очевидно, что общий подход работает в случае LogNormalNormalCDF. Кроме того, LogNormalStablePDF и LogNormalStableCDF практически идентичны. Фактически из самого кода версия CDF, похоже, должна делать меньше, чем версия PDF.
Итак, я надеялся, что кто-то сможет:
объясните, почему LogNormalStableCDF не работает (по крайней мере, в то время, которое я считаю разумным, я попытаюсь запустить его в течение ночи и посмотреть, завершит ли он когда-либо оценку) и
предлагает способ, чтобы get LogNormalStableCDF работал быстрее.
Большое спасибо,
J.