Как вы создаете параметрическое распределение? - PullRequest
0 голосов
/ 12 июля 2011

Я пытаюсь создать дистрибутив Skewed Normal со следующим PDF

Для этого я использую следующую команду (ссылка с http://en.wikipedia.org/wiki/Skew_normal_distribution):

Я пытаюсь сделать следующее:

SkewedNormal: = Распределение (PDF = неприменить (2 * фи (х, му, сигма) * Фи (альфа * х, му, сигма), х, му, сигма, альфа))

Эта команда выполняется без ошибок, так же, как и следующая команда:

R: = RandomVariable (SkewNormal)

но проблемы начинаются, когда я пытаюсь сделать следующее:

ВПР (R, X) * +1021 ** * тысячи двадцать-два Ошибка, (в статистике: -CDF) неверный ввод: q использует третий аргумент, сигма, который отсутствует

Хорошо, я добавляю третий параметр:

ВПР (R, х, у) * +1031 ** +1032 * Ошибка, (в статистике: -CDF) неожиданные параметры: y

Если вы ранее попытались инициировать случайную переменную следующим образом:

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

Ошибка (в статистике: -Distribution) неверный ввод: IsKnownDistribution ожидает, что его 1-й аргумент, dn, будет иметь тип

имя, но полученный модуль () Условия экспорта, PDF, Тип; опция Распределение, Непрерывный; конечный модуль

Как создать параметрическое распределение в Maple 14?

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Не можете ли вы отменить заявку в отношении только х? (Обратите внимание, что вы опечатались в опубликованном коде, используя 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);

Окончательным результатом является выражение, содержащее альфа, мю и сигму. Таким образом, subs или eval могут быть использованы для создания экземпляров значений параметров.

1 голос
/ 14 июля 2011

В случае, если кто-то столкнется с той же проблемой, вот как мне удалось решить ее следующим образом:

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

Он также работает с функциями из пакета Статистика, такими как RandomVariable:

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

И вызов:

CDF(Ry,x);

Дает

Formula

...