2014-12-08 10 views
0

상관 관계 서수 데이터 생성에 GenOrd 패키지를 사용하고 있습니다. 기본 개념은 상관 관계 0.5로 상관 관계가있는 서수 데이터를 얻는 것입니다. 이제는 전체 코드를 1000 번 반복하고 상관 관계 결과를 저장하여 0.5의 상관 관계에 얼마나 근접하는지 확인한 다음 샘플 크기를 변경하고 한계 확률 및 변경 사항을 확인하십시오.상관 관계 서수 데이터 생성

sim.cor <- function(R, Marginal, n, K) 
{ 
    res <- numeric(length = K) 
    for(i in 1:K) 
     res[i] <- cor(ordsample(n, Marginal, R))[1,2] 
    res 
} 
n 샘플 크기

K 당신이 반복 할 횟수는 다음과 같습니다

library(GenOrd) 
R<-matrix(c(1,0.5,0.5,1),2,2) 
Marginal<-list(c(0.2,0.5,0.7,0.9),c(0.1,0.3,0.4,0.5)) 
DataOrd<-ordsample(100,Marginal,R) 
correlation<-cor(DataOrd) 
correlation[1,2] # 0.5269 
+0

'? replicate'을 보았습니까? – JasonAizkalns

+0

난 그냥 1000 시뮬레이션의 결과를 갖고 싶어, 1000 다른 상관 관계, 그래서 내가 얻을 수있는 가까운 0.5 – Nikola

답변

1

여기에 간단한 솔루션입니다. 따라서, 귀하의 예제에서,이 함수를 호출 할 수 있습니다 및 객체에 결과 (상관 관계와 크기 K의 벡터를) 저장 : 제안 더 빠르고 더 우아한 해결책은 replicate 기능을 사용하는 것입니다

set.seed(1234) 
correlations <- sim.cor(R = R, Marginal = Marginal, n = 100, K = 1000) 
mean(correlations) 
[1] 0.5009389 

jaysunice3401 :

set.seed(1234) 
n <- 100 
correlations <- replicate(n = 1000, expr = cor(ordsample(n, Marginal, R))[1,2]) 
mean(correlations) 
[1] 0.5009389 

나는 이것이 도움이되기를 바랍니다.

+0

완벽한 솔루션을 얻을 수 있습니다. 당신의 도움을 주셔서 감사합니다 – Nikola