2013-06-11 4 views
2

주어진 분포 (아래 예제에서 normale)를 가진 변수가 있습니다.R : 상관 된 변수 구성

set.seed(32)  
var1 = rnorm(100,mean=0,sd=1) 

내가 선형 상관 계수와 VAR1 상관 관계되는 변수 (VAR2)를 만들려면 (약 또는 정확히)에 "CORR은"동일합니다. VAR1 및 VAR2 간의 회귀의 기울기는해야한다 (rougly 또는 정확히) 1.

Corr = 0.3 

가 어떻게 이것을 달성 할 수 있습니다 같다?

decorelation = rnorm(100,mean=0,sd=1-Corr) 
var2 = var1 + decorelation 

을하지만 물론 실행하는 경우 :

나는 이런 식으로 뭔가를하고 싶었다

cor(var1,var2) 

, 결과는 CORR에 닫지입니다!

+1

다음은 다른 사이트에서의 관련 답변입니다. http://quant.stackexchange.com/questions/1027/how-are-correlation-and-cointegration-related/1038#1038 –

+0

이것은 http :// /stats.stackexchange.com/questions/15011/generate-a-random-variable-with-a-defined-correlation-to-an-existing-variable – eddi

+0

관련 질문 : http://stackoverflow.com/questions/16122520/ 샘플 데이터 - 정확한 순간과 함께 생성하는 방법 –

답변

2

나는 얼마 전에 비슷한 일을했다. 3 개의 상관 된 변수에 대한 코드를 붙여 넣고 있지만 좀 더 복잡한 것으로 쉽게 일반화 할 수 있습니다.

먼저 F 행렬을 작성
cor_Matrix <- matrix(c (1.00, 0.90, 0.20 , 
        0.90, 1.00, 0.40 , 
        0.20, 0.40, 1.00), 
        nrow=3,ncol=3,byrow=TRUE) 

이 임의의 상관 행렬 일 수있다.

library(psych) 

fit<-principal(cor_Matrix, nfactors=3, rotate="none") 

fit$loadings 

loadings<-matrix(fit$loadings[1:3, 1:3],nrow=3,ncol=3,byrow=F) 
loadings 

#create three rannor variable 

cases <- t(replicate(3, rnorm(3000))) #edited, changed to 3000 cases from 150 cases 

multivar <- loadings %*% cases 
T_multivar <- t(multivar) 

var<-as.data.frame(T_multivar) 

cor(var) 

또한, 이것은 일반화 될 수있다. 위에 나열된 접근 방식은 다 변수 데이터 세트를 생성하지 않습니다.

+0

감사합니다. cor_Matrix에서 상관 관계의 일부를 자유롭게하여 다른 상관 관계를 편향시키지 않도록하는 많은 변수가있는 방법이 있습니까? 예를 들어, cor (var1, var2) == 0.8, cor (var1, var3) == 0.3을 원한다면. cor (var2, var3) == 1 (또는 다른 어떤 숫자이든 상관없이)을 쓰면 다른 두 상관 관계를 편향시킵니다. 하나의 상관 관계를 unchoosed하게하는 방법이 있습니까? –

+0

안녕하세요, 저는 당신이 무엇을 의미하는지 완전히 모르겠지만 두 상관 관계 (예 : r (xy) 및 r (yz))는 r (xz)의 상관 관계에 영향을주지 않아야합니다. uncomrelated. 당신은 오류에 대해 생각하고 있습니까? 당신은 이러한 상관 관계 위에 몇 가지 오류를 더할 수 있다고 생각합니다. 각 변수에 mean = 0 및 임의로 선택한 SD가 포함 된 임의의 변수를 추가 할 수 있습니다. – SprengMeister

+0

두 가지 다른 cor_Matrix (이후 종자 설정) C (1,0.9,0.2, 0.9,1,0.4, 0.2,0.4,1) 및 C (1,0.9,0.2, 0.9,1,0.7, 0.2 , 0.7,0.1) 상관 관계가 변경되지 않지만 두 개의 첫 번째 변수 간의 상관 관계에 대해 다른 결과가 나타납니다. –