2012-03-31 3 views
3

R의 sn 패키지의 rmsn 명령을 사용하여 다 변수 skew 정규 분포를 사용하여 임의의 숫자를 생성하려고합니다. 이상적으로는 3 개의 숫자 열을 얻을 수 있기를 바랍니다. 하나의 열이 크게 왜곡 된 상태에서 지정된 분산 및 공분산. 하지만 두 목표를 동시에 달성하기 위해 애 쓰고 있습니다.R의 다 변수 skew normal

의 게시물은 관련성이 있고 유용합니다 (아래 코드 중 일부 소스). 그러나이 문제를 완전히 명확히하지 않았습니다.

나는 노력했습니다

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

열 수단과 표준 편차는 (않는) (스큐이없는) 두 번째와 세 번째 열에 대한 올바른하지만 처음이 아니다. 누구든지 위의 코드 또는 내 생각이 어디에 잘못되었는지 명확히 할 수 있습니까? 내가 rmsn, 또는 출력을 사용하는 방법을 오해하고있을 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

위치가 평균이 아닙니다 (기울기가없는 경우 제외). 문서에서 :

위치 벡터 'XI'는 분포의 평균 벡터를 나타내지 않는주의하는 것이 (이 사실조차 존재하지 않을 수 있습니다 'DF < = 1'경우) 및 유사 '오메가 '는 유통

공분산 행렬하지 않습니다 그리고 당신은 Omega=wOmega=s을 대체 할 수 있습니다. 그리고 이것은 분산 행렬입니다. 제곱근이 없어야합니다.