R中的多元偏态正态

时间:2012-03-31 17:35:46

标签: r statistics

我正在尝试使用来自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或输出。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

位置不是均值(除非没有歪斜)。来自文档:

  

请注意,位置矢量'xi'不代表平均值   分布的向量(如果'df&lt; =,实际上甚至可能不存在   1'),类似地'Omega'不是 的协方差矩阵   分配

您可能希望将Omega=s替换为Omega=w。 这应该是一个方差矩阵:应该没有平方根。