R: Расчет функции плотности вероятности специального определения распределения Skew-T

В настоящее время я работаю с пакетом моделей смеси EMMIXskew, и я установил распределение асимметрии для моих данных (некоторый числовой вектор). В пакете есть некоторая функция плотности ddmst, но я не видел в этом пакете функции плотности вероятности, и она мне нужна!

Я думал, что смогу сделать

  1. используйте некоторые другие пакеты, которые предоставляют pdf-файл для распространения skew-t, например пакет sn с pst, но проблема в том, что этот дистрибутив имеет другое определение распределения skew-t, ИЛИ
  2. Я мог бы использовать integrate на ddmst, но пока это не работает.

Я пробовал что-то вроде

library(EMMIXskew)

dat <- rdmst(n=1000,p=1,mean=0,cov=1,del=1)

mu=0.01
sigma=0.9
nu=1.1
del=3
pdmst <- function(x){     
  ddmst(x,n=length(dat),p=1,mean=mu,cov=sigma,nu=nu,del=del)
}

x=0.6

F_x <- integrate(pdmst,lower=-Inf,upper=x)

а также если я предполагаю 3-модальность моих данных с параметрами

mu=c(0.01,2,-0.4)
sigma=c(0.9,2,2.3)
nu=c(1.1,1,0.8)
del=c(3,2,1.2)
pdmst <- function(x){     
  ddmst(x,n=length(dat),p=1,mean=mu,cov=sigma,nu=nu,del=del)

Я получаю эту ошибку

Error in ddmix(dat, n, p, 1, "mst", mean, cov, nu, del) : dat does not match n and p.

Я действительно не знаю, что я сделал не так!


person Novice    schedule 21.04.2015    source источник


Ответы (1)


Попробуй это:

pdmst <- function(x){    
  ddmst(x,n=length(x),p=1,mean=mu,cov=sigma,nu=nu,del=del)
}

n должен иметь длину x вместо dat. Тогда pdmst(x) должен дать вам плотность на x.

Для случая с 3 компонентами, пожалуйста, обратитесь к документации ddmix о том, как указать аргументы этой функции. Для вашего второго примера его можно ввести следующим образом:

mu = cbind(0.01, 2, -0.4)
sigma = cbind(0.9,2,2.3)
del = cbind(3,2,1.2)
nu=c(1.1,1,0.8)
ddmix(x,1,1,3,"mst",mu, sigma, nu, del)

Последняя команда должна дать вам логарифм плотности в x для каждого из трех компонентов.

person user4956154    schedule 30.05.2015