我正在尝试使用R中rmsn
包中的sn
命令生成具有多元偏态正态分布的随机数。理想情况下,我希望能够获得具有指定方差和协方差的三列数字,同时具有一个列严重偏斜。但是我正在努力同时实现两个目标。
skew normal distribution上的帖子是相关且有用的(以及下面的一些代码的来源),但尚未为我完全阐明问题。
我一直在尝试:
a <- c(5, 0, 0) # set shape parameter
s <- diag(3) # create variance-covariance matrix
w <- sqrt(1/(1-((2*(a^2)/(1 + a^2))/pi))) # determine scale parameter to get sd of 1
xi <- w*a/sqrt(1 + a^2)*sqrt(2/pi) # determine location parameter to get mean of 0
apply(rmsn(n=1000, xi=c(xi), Omega=s, alpha=a), 2, sd)
colMeans(rmsn(n=1000, xi=c(xi), Omega=s, alpha=a))
列均值和SD适用于第二列和第三列(没有倾斜),但不适用于第一列(包含)。任何人都可以澄清我上面的代码或我的想法在哪里出错了吗?我可能会误会如何使用
rmsn
或输出。任何援助将不胜感激。 最佳答案
该位置不是均值(没有倾斜时除外)。从文档中:
请注意,位置 vector “xi”不代表均值
分布的 vector (实际上,如果'df 1”),类似地,“Omega”不是商品的协方差矩阵
分配
您可能需要用Omega=s
替换Omega=w
。
这应该是方差矩阵:不应有平方根。
关于r - R中的多元偏斜正态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9958120/