gpt4 book ai didi

wolfram-mathematica - Mathematica 中的变换分布

转载 作者:行者123 更新时间:2023-12-04 08:17:45 25 4
gpt4 key购买 nike

我开发了一些代码来从 LogNormalDistribution 和 StableDistribution 的乘积生成随机变量:

LNStableRV[{\[Alpha]_, \[Beta]_, \[Gamma]_, \[Sigma]_, \[Delta]_},

n_] := Module[{LNRV, SDRV, LNSRV},
LNRV = RandomVariate[LogNormalDistribution[Log[\[Gamma]], \[Sigma]],
n];
SDRV = RandomVariate[
StableDistribution[\[Alpha], \[Beta], \[Gamma], \[Sigma]], n];
LNRV * SDRV + \[Delta]
]

(* Note the delta serves as a location parameter *)
我认为这很好用:
LNStableRV[{1.5, 1, 1, 0.5, 1}, 50000];
Histogram[%, Automatic, "ProbabilityDensity",
PlotRange -> {{-4, 6}, All}, ImageSize -> 250]
ListPlot[%%, Joined -> True, PlotRange -> All]
现在我想创建一个 TransformedDistribution沿着相同的路线,我可以在这个自定义分布上使用 PDF[]、CDF[] 等,并轻松地进行绘图和其他分析。
从文档中心 → TransformedDistribution 中的示例推断:
\[ScriptCapitalD] =
TransformedDistribution[
u v, {u \[Distributed] ExponentialDistribution[1/2],
v \[Distributed] ExponentialDistribution[1/3]}];
我试过这个:
LogNormalStableDistribution[\[Alpha]_, \[Beta]_, \[Gamma]_, \
\[Sigma]_, \[Delta]_] := Module[{u, v},
TransformedDistribution[
u * v + \[Delta], {u \[Distributed]
LogNormalDistribution[Log[\[Gamma]], \[Sigma]],
v \[Distributed]
StableDistribution[\[Alpha], \[Beta], \[Gamma], \[Sigma]]}]
];

\[ScriptCapitalD] = LogNormalStableDistribution[1.5, 1, 1, 0.5, 1]
这给了我这个:
TransformedDistribution[
1 + \[FormalX]1 \[FormalX]2, {\[FormalX]1 \[Distributed]
LogNormalDistribution[0, 0.5], \[FormalX]2 \[Distributed]
StableDistribution[1, 1.5, 1, 1, 0.5]}]
但是当我尝试绘制分布的 PDF 时,它似乎永远不会完成(当然我没有让它运行超过一两分钟):
Plot[PDF[\[ScriptCapitalD], x], {x, -4, 6}] (* This should plot over the same range as the Histogram above *)
所以,一些问题:
我的函数 LogNormalStableDistribution[] 做这种事情有意义吗?
如果是,我是否:
  • 只需要让 Plot[] 运行
    更长?
  • 以某种方式改变它?
  • 我该怎么做才能做到
    跑得更快?

  • 如果不:
  • 我需要以不同的方式解决这个问题吗?
  • 使用 MixtureDistribution?
  • 用别的东西?
  • 最佳答案

    您使用转换分布的方法很好,但是由于分布的 PDF不以封闭形式存在,PDF[TransformedDistribution[..],x]不是办法,至于每x将应用符号求解器。最好按摩您的发行版以达到 pdf。令 X 为 LogNormal-Stable 随机变量。然后

    CDF[LogNormalStableDistribution[params], x] == Probability[X <= x] 

    但是 X==U*V + delta因此 X<=x翻译成 V<=(x-delta)/U .这给
    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]]]]

    关于 x 的区分我们得到 PDF :
    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]]]]

    使用这个,这里是情节

    enter image description here

    关于wolfram-mathematica - Mathematica 中的变换分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171742/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com