R:计算特殊定义的Skew-T分布的概率密度函数
R: Calculating the probability density function of a special definition of Skew-T Distribution
我目前使用混合模型包 EMMIXskew
并且我已经在我的数据(一些数值向量)上安装了 skew-t 分布。
该包有一些密度函数 ddmst
但我没有在这个包中看到概率密度函数,我需要一些!
我认为我能做的是
- 使用一些其他包,这些包提供 pdf 用于 skew-t 分布,
就像包
sn
和 pst
,但问题是这个发行版
对 skew-t 分布有不同的定义,
或者
- 我可以在
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.
我真的不知道我做错了什么!
试试这个:
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
处的密度对数。
我目前使用混合模型包 EMMIXskew
并且我已经在我的数据(一些数值向量)上安装了 skew-t 分布。
该包有一些密度函数 ddmst
但我没有在这个包中看到概率密度函数,我需要一些!
我认为我能做的是
- 使用一些其他包,这些包提供 pdf 用于 skew-t 分布,
就像包
sn
和pst
,但问题是这个发行版 对 skew-t 分布有不同的定义, 或者 - 我可以在
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.
我真的不知道我做错了什么!
试试这个:
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
处的密度对数。