Wolfram mathematica 数学中的变换分布

Wolfram mathematica 数学中的变换分布,wolfram-mathematica,distribution,Wolfram Mathematica,Distribution,我已经开发了一些代码来从对数正态分布和稳定分布的乘积生成随机变量: LNStableRV[{\[Alpha].\[Beta].\[Gamma].\[Sigma].\[Delta].}, n_z]:=模块[{LNRV,SDRV,LNSRV}, LNRV=随机变量[对数正态分布[Log[\[Gamma]],\[Sigma]], n] ); SDRV=随机变量[ 稳定分布[\[Alpha]、\[Beta]、\[Gamma]、\[Sigma]、n]; LNRV*SDRV+\[Delta] ] (*注意,

我已经开发了一些代码来从对数正态分布和稳定分布的乘积生成随机变量:

LNStableRV[{\[Alpha].\[Beta].\[Gamma].\[Sigma].\[Delta].},
n_z]:=模块[{LNRV,SDRV,LNSRV},
LNRV=随机变量[对数正态分布[Log[\[Gamma]],\[Sigma]],
n] );
SDRV=随机变量[
稳定分布[\[Alpha]、\[Beta]、\[Gamma]、\[Sigma]、n];
LNRV*SDRV+\[Delta]
]
(*注意,增量用作位置参数*)
我认为这很好:

LNStableRV[{1.5,1,1,0.5,1},50000];
直方图[%,自动,“概率密度”,
PlotRange->{{-4,6},All},ImageSize->250]
ListPlot[%,合并->真,绘图范围->全部]
现在,我想按照同样的思路创建一个应用程序,这样我就可以在这个自定义发行版上使用PDF[],CDF[]等,并轻松地进行绘图和其他分析

从Documentation Center中的一个示例推断→ 转换分布:

\[ScriptCapitalD]=
变换分布[
u v,{u\[分布]指数分布[1/2],
v\[分布]指数分布[1/3]}];
我试过这个:

lognormalstableddistribution[\[Alpha]、\[Beta]、\[Gamma]\
\[Sigma],\[Delta]:=模[{u,v},
变换分布[
u*v+\[Delta],{u\[Distributed]
对数正态分布[Log[\[Gamma]],\[Sigma]],
v\[已分发]
稳定分布[\[Alpha]、\[Beta]、\[Gamma]、\[Sigma]}]
];
\[ScriptCapital]=LogNormalStableDistribution[1.5,1,1,0.5,1]
这就给了我:

TransformedDistribution[
1+\[FormalX]1\[FormalX]2,{\[FormalX]1\[Distributed]
对数正态分布[0,0.5],\[FormalX]2\[Distributed]
StabledDistribution[1、1.5、1、1、0.5]}]
但是,当我试图绘制发行版的PDF时,它似乎永远不会完成(当然,我不会让它运行超过一分钟或两分钟):

Plot[PDF[\[ScriptCapitalD],x],{x,-4,6}](*这应该在与上面的直方图相同的范围内绘制*)
因此,有些问题:

我的函数lognormalstableddistribution[]做这种事情有意义吗

如果是,我要:

  • 只需让绘图[]运行即可 更长
  • 怎么改变它
  • 我能做些什么来做呢 跑得更快
如果没有:

  • 我是否需要以不同的方式处理这个问题
  • 使用混合分布
  • 用别的吗

您使用转换分布的方法很好,但由于分布的
PDF
不以封闭形式存在,
PDF[TransformedDistribution[…],x]
不是一种方法,因为每个
x
都将应用符号解算器。最好是对您的分发进行按摩,以获得pdf。设X为对数正态稳定随机变量。然后

CDF[LogNormalStableDistribution[params], x] == Probability[X <= x] 
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]]]]
用这个,这里是情节


我没有仔细阅读您的代码,但您可能会看到PDF[[ScriptCapitalD],1]不会返回数值结果…顺便说一句。。。请允许我欢迎您来到StackOverflow,并提醒我们在这里通常会做的三件事:1)当您收到帮助时,尝试给予帮助,回答您专业领域的问题2)3)当您看到好的问答时,请投票支持,因为系统的可信度是基于用户通过分享知识而获得的声誉。还要记得接受更好地解决你的问题的答案,如果有的话,萨沙——谢谢你的解决方案和解释。
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]]]]