【问题标题】:How do you create parametric distribution?如何创建参数分布?
【发布时间】:2011-12-21 09:06:31
【问题描述】:

我正在尝试使用以下 PDF 创建偏态正态分布

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

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

SkewedNormal := Distribution(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)

错误,(在统计数据中:-CDF)意外参数:y

如果您之前尝试通过以下方式初始化随机变量:

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

错误,(在 Statistics:-Distribution 中)无效输入:IsKnownDistribution 期望它的第一个参数 dn 是类型

name, but received module() export conditions, PDF, Type;选项分布,连续;结束模块

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

【问题讨论】:

    标签: statistics maple


    【解决方案1】:

    你能不能只针对 x 取消申请? (请注意,您在发布的代码中使用了 SkewedNormal 与 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 可用于实例化参数值。

    【讨论】:

    • 这是一个错误的声明,“如果它只有一个参数,它就不是参数的”。表达式可以包含名称,这些名称被用作参数并有用地处理,这正是我提到 2-argument eval 的原因(作为众多可供选择的支持方面之一)。如果您认为只有过程和运算符可以被视为具有参数,那么您就错过了 Maple 功能的重要部分。
    • 我不主张任何东西,我真的很感谢你的提议,但是每次我需要设置一些东西的时候,在表达式中带有参数并执行evals 并不是很舒服,它更多方便将它们传递给函数的参数列表,就像Normal(alpha, beta) 分发一样。
    • 关于“这是错误的主张......”我认为有几种方法可以理解参数化的事实。一种是根据表达式来理解,即“表达式包含参数,那么这是参数表达式”。但也可以用函数术语来理解参数化,即“如果表达式接受并提升参数,它就是参数化的”。我的问题与函数术语有关,因为根据表达式创建参数分布是一项相当简单的任务......
    【解决方案2】:

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

    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);
    

    给予

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2017-10-12
      • 1970-01-01
      • 2020-10-24
      • 2019-04-28
      相关资源
      最近更新 更多