2012-03-31 13 views
3

Rのsnパッケージのrmsnコマンドを使用して、多変量スキュー正規分布を持つ乱数を生成しようとしています。理想的には、 1つの列が大きく歪んでいる間に、指定された分散と共分散を返します。しかし、私は両方の目標を同時に達成するのに苦労しています。多変量skew normal in R

投稿はと関連していて便利でした(以下のコードの一部です)が、私の問題点を完全には明らかにしていません。

私がしようとしてきた:

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は(いた)(スキューを持っていない)2列目と3列目のためには正しいが最初ではありません。誰かが上の私のコード、または私の考えが間違っていた場所を明確にすることはできますか?私はrmsn、または出力を使用する方法を誤解している可能性があります。いかなる援助も感謝します。

答えて

1

場所は平均ではありません(スキューがない場合を除く)。位置ベクトル「xiが」(「DF < = 1」の場合、実際にも存在しないかもしれない)分布の平均 ベクトルを表し、同様に「オメガないこと

注意:ドキュメントから「は 分布

共分散行列ではありませんそして、あなたはOmega=wOmega=sを交換することができます。 これは分散行列であると考えられます。平方根は存在しません。