3

我目前使用混合模型包EMMIXskew,并且在我的数据(一些数值向量)上安装了一个 skew-t 分布。这个包有一些密度函数ddmst,但我没有在这个包中看到概率密度函数,我需要一些!

我以为我能做的是

  1. 使用其他一些为 skew-t 分发提供 pdf 的包,例如 package snwith pst,但问题是这个分发对 skew-t 分发有不同的定义,或者
  2. 我可以使用integrateon 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.

我真的不知道我做错了什么!

4

1 回答 1

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-component 的情况,请参阅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三个组件中每一个的密度的对数。

于 2015-05-30T12:19:15.727 回答