这与6月份的早期问题有关:
我有一个自定义混合分布使用第二个自定义分布定义,跟随@Sasha过去一年的许多答案中讨论的行.
定义分布的代码如下:
nDist /: CharacteristicFunction[nDist[a_, b_, m_, s_],
t_] := (a b E^(I m t - (s^2 t^2)/2))/((I a + t) (-I b + t));
nDist /: PDF[nDist[a_, b_, m_, s_], x_] := (1/(2*(a + b)))*a*
b*(E^(a*(m + (a*s^2)/2 - x))* Erfc[(m + a*s^2 - x)/(Sqrt[2]*s)] +
E^(b*(-m + (b*s^2)/2 + x))*
Erfc[(-m + b*s^2 + x)/(Sqrt[2]*s)]);
nDist /: CDF[nDist[a_, b_, m_, s_],
x_] := ((1/(2*(a + b)))*((a + b)*E^(a*x)*
Erfc[(m - x)/(Sqrt[2]*s)] -
b*E^(a*m + …Run Code Online (Sandbox Code Playgroud) 我有两个自定义分布的PDF和CDF,一种为每个分布生成RandomVariates的方法,以及用于将参数拟合到数据的代码.我之前发布的一些代码:
其中一些如下:
nlDist /: PDF[nlDist[alpha_, beta_, mu_, sigma_],
x_] := (1/(2*(alpha + beta)))*alpha*
beta*(E^(alpha*(mu + (alpha*sigma^2)/2 - x))*
Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] +
E^(beta*(-mu + (beta*sigma^2)/2 + x))*
Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]);
nlDist /:
CDF[nlDist[alpha_, beta_, mu_, sigma_],
x_] := ((1/(2*(alpha + beta)))*((alpha + beta)*E^(alpha*x)*
Erfc[(mu - x)/(Sqrt[2]*sigma)] -
beta*E^(alpha*mu + (alpha^2*sigma^2)/2)*
Erfc[(mu + alpha*sigma^2 - x)/(Sqrt[2]*sigma)] +
alpha*E^((-beta)*mu + (beta^2*sigma^2)/2 + alpha*x + beta*x)*
Erfc[(-mu + beta*sigma^2 + x)/(Sqrt[2]*sigma)]))/
E^(alpha*x);
dplDist /: PDF[dplDist[alpha_, beta_, mu_, sigma_], …Run Code Online (Sandbox Code Playgroud) 我开始使用新的Mathematica统计和数据分析功能做越来越多的工作.
我参加了周二的"Mathematica统计与数据分析"在线研讨会(精彩的演讲,我强烈推荐),但我遇到了一些问题,我希望这个论坛上有人可能会有一些时间考虑.
我已经创建了一个相当广泛的笔记本来简化我的数据分析,称之为"AnalysisNotebook".它输出一系列广泛的图表和数据,包括:直方图,PDF以及CDF图,QQ图,图研究尾配合,假设检验数据等
这只要我留的伟大工程与数学的现成的货架分布和可能工作正常进行简单的MixtureDistributions乃至ParameterMixtureDistributionS作为这些Mathematica可以容易弄清楚的时刻,PDF并且CDF,FindDistributionParameters通过打破混合物分解成块,等等.
当我尝试定义和使用一个简单的TransformedDistributionie 时遇到麻烦,
LogNormalNormalDistribution[Gamma_, Sigma_, Delta_] :=
TransformedDistribution[ u*v + Delta,
{Distributed[ u, LogNormalDistribution[ Log[Gamma], Sigma] ],
Distributed[ v, NormalDistribution[0, Sqrt[2]]}
];
Run Code Online (Sandbox Code Playgroud)
我想在这样的变形分布中做很多事情.我很欣赏这样的挑战(我在这个论坛上学到了一些 - 谢谢大家):
PDF并且CDF计算可能需要插值,解决方法或自定义方法;FindDistributionParameters并且DistributionFitTest不知道如何处理这种事情.基本上,人们想要使用的标准事物实际上不会/不能工作,人们不能指望他们这样做.
人们可以编写自定义代码来做这些事情(这个论坛再次帮助了我很多),但是然后将自定义替代品的所有复杂性结合到我的AnalysisNotebook中,看起来很愚蠢.AnalysisNotebook会随着每个新的自定义函数而增长.
这将帮助我极大这项工作,如果我能写的我的自定义版本PDF,CDF,FindDistributionParameters,DistributionFitTest和其他任何我可能需要的是更普遍的内置版本只会无缝调用标准.这样,像我的AnalysisNotebook这样的东西可以保持简单和整洁,这是我工具箱中的标准组件.如果你理解我的意思,我可以把时间花在数学而不是管道上.
为了澄清我的意思,类似于如何定义一个函数的版本来做不同的事情(使用不同数量的参数或其他类型的态势感知),Mathematica必须为使用分布作为参数的函数做类似的事情.知道用于特定内置分发的解决方案.我想补充或扩展的功能的能力PDF[],CDF[],FindDistributionParameters[],DistributionFitTest[]在该级别和相关职能-为自定义分布及其配套所需的代码,内置的功能会/可以无缝调用添加功能.
也许只是一个梦想,但如果有人知道我可以采取任何方式,我非常感谢您的反馈.
编辑 -我遇到的那种问题:
以下代码永远不会完成执行
r1 = …Run Code Online (Sandbox Code Playgroud)