আমার কাছে দুটি ধারাবাহিক ভেরিয়েবল সহ নিম্নোক্ত সাধারণ ডেটাসেট রয়েছে; অর্থাৎ,
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

ভেরিয়েবলের মধ্যে lation 0.6 হতে পারস্পরিক সম্পর্ক রাখার জন্য আমাকে তথ্যটি পুনরায় সাজানো দরকার। আমার উভয় ভেরিয়েবলের অর্থ এবং অন্যান্য বর্ণনামূলক পরিসংখ্যান (এসডি, মিনিট, সর্বোচ্চ, ইত্যাদি) রাখা দরকার keep
আমি জানি যে প্রদত্ত ডেটার সাথে প্রায় কোনও সম্পর্ক স্থাপন করা সম্ভব যেমন:
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) পেতে কীভাবে এই জাতীয় ডেটাসেটটি পুনরায় সাজানো যায়? (পদ্ধতিটি যদি ডেটাসেটের আকারের উপর নির্ভরতা সরিয়ে দেয় তবে এটিও ভাল হবে)