你如何创建参数分布?

时间:2011-07-12 00:08:31

标签: statistics maple

我正在尝试使用以下PDF创建Skewed Normal发行版

我正在使用以下命令(引自http://en.wikipedia.org/wiki/Skew_normal_distribution):

我正在尝试执行以下操作:

SkewedNormal:=分布(PDF = unapply(2 * phi(x,mu,sigma)* Phi(alpha * x,mu,sigma),x,mu,sigma,alpha))

此命令执行时没有错误,与以下命令相同:

R:= RandomVariable(SkewNormal)

但是当我尝试执行以下操作时问题就开始了:

CDF(R,x)的

  

错误,(在统计:-CDF中)无效输入:q使用第三个参数sigma,缺少

好的,我添加了第三个参数:

CDF(R,X,Y)

  

错误,(在Statistics:-CDF中)意外参数:y

如果您以前尝试使用以下方式初始化随机变量:

R:= RandomVariable(SkewNormal(mu,sigma))

  

错误,(在统计: - 分布中)无效输入:IsKnownDistribution期望其第一个参数dn为

类型

名称,但收到模块()导出条件,PDF,类型;期权分配,连续;结束模块

如何在Maple 14中创建参数分布?

2 个答案:

答案 0 :(得分:2)

你不能仅仅针对x取消申请吗? (注意你在发布的代码中有一个拼写错误,使用SkewedNormal vs SkewNormal。)

with(Statistics):

SkewNormal := Distribution(PDF =
     unapply(2*phi(x, mu, sigma)*Phi(alpha*x, mu, sigma), x));

R := RandomVariable(SkewNormal):

CDF(R,x);

最终结果是包含alpha,mu和sigma的表达式。因此,可以使用subseval来实例化参数的值。

答案 1 :(得分:1)

如果有人会遇到同样的问题,我就是这样设法解决的:

SkewedNormal := (xi, omega, alpha) ->
Distribution
(
    PDF = ((x) -> x*sqrt(2)*exp(-(1/2)*(x-xi)^2/omega^2)*(1/2+(1/2)*erf((1/2)*alpha*(x-xi)*sqrt(2)/omega))/(omega*sqrt(Pi))),
    CDF = (proc (x) local t; options operator, arrow; return 1/2+(1/2)*erf((1/2)*(x-xi)*sqrt(2)/omega)-(int(exp(-(1/2)*(t-xi)^2*(1+t^2)/omega^2)/(1+t^2), t = 0 .. alpha))/Pi end proc),
    Mean = xi+omega*alpha*sqrt(2/Pi)/sqrt(1+alpha^2),
    Variance = omega^2*(1-2*alpha^2/(sqrt(1+alpha^2)^2*Pi)),
    MGF = ((x) -> 2*exp(xi*x+(1/2)*omega^2*x^2)*(1/2+(1/2)*erf((1/2)*omega*alpha*x*sqrt(2)/sqrt(1+alpha^2))))
)

这种方式允许定义参数分布

示例:

X:=SkewedNormal(u,v,m); # Skewed normal distribution with xi=u, omega=v, alpha=m

Y:=SkewedNormal(a,b,c); # Skewed normal distribution with xi=a, omega=b, alpha=c

它也适用于Statistics包中的函数,例如RandomVariable:

Rx:=RandomVariable(X);    
Ry:=RandomVariable(Y);

并致电:

CDF(Ry,x);

给出

Formula