【问题标题】:R: Calculating the probability density function of a special definition of Skew-T DistributionR:计算 Skew-T 分布的特殊定义的概率密度函数
【发布时间】:2015-06-28 23:59:37
【问题描述】:

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

我认为我能做的是

  1. 使用其他一些为 skew-t 分发提供 pdf 的软件包, 像包snpst,但问题是这个分布 对 skew-t 分布有不同的定义, 或者
  2. 我可以在ddmst 上使用integrate,但目前还不行。

我尝试了类似的东西

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.

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

【问题讨论】:

    标签: r mixture-model


    【解决方案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 处的密度的对数。

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 2016-06-07
      • 2017-02-03
      • 2011-09-30
      • 2017-11-20
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多