İki sürekli değişkenli basit veri setim var; yani:
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
Değişkenler arasındaki korelasyon ~ 0.6 olacak şekilde verileri yeniden düzenlemem gerekiyor. Her iki değişkenin ortalamalarını ve diğer tanımlayıcı istatistiklerini (sd, min, max, vb.) Sabit tutmam gerekiyor.
Verilen verilerle hemen hemen her türlü korelasyonun mümkün olduğunu biliyorum:
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
Bu görev için işlev kullanmaya çalışırsam :
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))
}
Oldukça geniş bir korelasyon aralığı elde ediyorum:
> summary(cor.results)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.281600 -0.038330 -0.002498 -0.001506 0.034380 0.288800
ancak bu aralık veri çerçevesindeki satır sayısına ve boyut artışıyla azalmaya bağlıdır.
> 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
Sorum şu:
Korelasyonu (ör: 0.7) almak için bu veri kümesini nasıl yeniden düzenleyebilirim? (Yöntem, veri kümesi boyutuna bağımlılığı kaldıracaksa da iyi olacaktır)