मेरे पास दो निरंतर चर के साथ निम्नलिखित सरल डेटासेट हैं; अर्थात:
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 हो। मुझे दोनों चरों के स्थिरांक और अन्य वर्णनात्मक आँकड़े (एसडी, मिनट, अधिकतम, आदि) रखने की आवश्यकता है।
मुझे पता है कि दिए गए डेटा के साथ लगभग कोई संबंध बनाना संभव है:
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) प्राप्त करने के लिए ऐसे डेटासेट को पुनर्व्यवस्थित कैसे करें? (यह भी अच्छा होगा यदि विधि डेटासेट आकार पर निर्भरता को हटा देगी)