我有一個後續問題,以Sasha的回答我的早期問題在TransformedDistribution in Mathematica。追蹤:轉化爲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]
評估似乎並沒有完成。
我已經做了以下類似的東西 - 代替上述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似乎並沒有工作(至少在我認爲一個合理的時間,我會盡力跑過來晚上看它完成了評估)並且
爲獲得LogNormalStableCDF更快地工作提供了一種方法。
非常感謝, J.
Sjoerd - 謝謝你的回答。當我使用更多新的分發功能時,我將在繪圖中真正注意到這一點。最佳, – Jagra 2011-03-19 17:46:30
@Jarga,而不是刪除_Real,最好使用_?NumberQ。這樣做的好處是,你的CDF將保持未被評估的符號論證,這可能在寫出公式時很方便。 – Sasha 2011-03-27 15:12:20