2012-03-31 78 views
3

我試圖用R中的sn包中的rmsn命令生成具有多變量歪斜正態分佈的隨機數。我希望理想情況下能夠獲得三列數字指定的方差和協方差,而有一列強烈傾斜。但我正在努力同時實現兩個目標。R中的多變量歪斜

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)) 

列手段和SDS是第二和第三列(其中有沒有歪斜),正確的,但不是第一次(它)。任何人都可以澄清我的代碼在哪裏,或者我的想法出了什麼問題?我可能會誤解如何使用rmsn或輸出。任何援助將不勝感激。

回答

1

位置不是平均值(除非沒有歪斜)。從文檔:

注意,位置矢量「XI」並不代表分佈的平均值 矢量(其實際上可能根本不存在,如果「DF < = 1」),並且類似地「歐米茄「是不是的 分佈

協方差矩陣和您可能需要使用Omega=w更換Omega=s。 這應該是一個方差矩陣:應該沒有平方根。