두 개의 연속 변수가있는 다음과 같은 간단한 데이터 세트가 있습니다. 즉 :
d = data.frame(x=runif(100,0,100),y = runif(100,0,100))
plot(d$x,d$y)
abline(lm(y~x,d), col="red")
cor(d$x,d$y) # = 0.2135273
변수 사이의 상관 관계가 ~ 0.6이되도록 데이터를 다시 정렬해야합니다. 두 변수의 수단 및 기타 기술 통계 (sd, min, max 등)를 일정하게 유지해야합니다.
주어진 데이터와 거의 모든 상관 관계를 만드는 것이 가능하다는 것을 알고 있습니다.
d2 = with(d,data.frame(x=sort(x),y=sort(y)))
plot(d2$x,d2$y)
abline(lm(y~x,d2), col="red")
cor(d2$x,d2$y) # i.e. 0.9965585
sample
이 작업에 기능 을 사용하려고하면 :
cor.results = c()
for(i in 1:1000){
set.seed(i)
d3 = with(d,data.frame(x=sample(x),y=sample(y)))
cor.results = c(cor.results,cor(d3$x,d3$y))
}
나는 매우 넓은 범위의 상관 관계를 얻습니다.
> summary(cor.results)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.281600 -0.038330 -0.002498 -0.001506 0.034380 0.288800
그러나이 범위는 데이터 프레임의 행 수에 따라 달라지며 크기가 증가함에 따라 감소합니다.
> d = data.frame(x=runif(1000,0,100),y = runif(1000,0,100))
> cor.results = c()
> for(i in 1:1000){
+ set.seed(i)
+ d3 = with(d,data.frame(x=sample(x),y=sample(y)))
+ cor.results = c(cor.results,cor(d3$x,d3$y))
+ }
> summary(cor.results)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.1030000 -0.0231300 -0.0005248 -0.0005547 0.0207000 0.1095000
내 질문은 :
상관 관계를 얻기 위해 이러한 데이터 세트를 재배 열하는 방법 (예 : 0.7)? (메소드가 데이터 셋 크기에 대한 의존성을 제거한다면 좋을 것입니다)