यदि, किसी कारण से, आप अपने मॉडल में केवल एक चर को शामिल करने जा रहे हैं, तो उस पूर्वानुमानक का चयन करें जिसके साथ उच्चतम सहसंबंध है है, के कई फायदे हैं। केवल एक भविष्यवक्ता के साथ संभावित प्रतिगमन मॉडल में से, यह मॉडल उच्चतममानकीकृत प्रतिगमन गुणांक केसाथ एक हैऔर यह भी (चूंकि आर 2 एक साधारण रेखीय प्रतिगमन में r का वर्ग है)निर्धारण काउच्चतमगुणांक है।yR2r
लेकिन यह स्पष्ट नहीं है कि आप अपने प्रतिगमन मॉडल को एक भविष्यवक्ता तक सीमित करना चाहते हैं यदि आपके पास कई के लिए डेटा उपलब्ध है। जैसा कि टिप्पणियों में उल्लेख किया गया है, यदि आपके मॉडल में कई चर शामिल हो सकते हैं, तो केवल सहसंबंधों को देखना काम नहीं करता है। उदाहरण के लिए, इस तितर बितर मैट्रिक्स से, आप सोच सकते हैं कि आपके मॉडल में शामिल किए जाने वाले लिए पूर्वसूचक x हैंy (सहसंबंध 0.824) और x 2 (सहसंबंध 0.782) हैं, लेकिन वह x 3 (सहसंबंध 0.134) एक उपयोगी भविष्यवक्ता नहीं है।x1x2x3
लेकिन आप गलत होंगे - वास्तव में इस उदाहरण में, दो स्वतंत्र चर x 1 और x 3 पर निर्भर करता है , लेकिन सीधे x 2 पर नहीं । हालाँकि x 2 x 1 के साथ अत्यधिक सहसंबद्ध है , जो y के साथ सहसंबंध की ओर भी ले जाता है । अलगाव में y और x 2 के बीच संबंध को देखते हुए , यह सुझाव दे सकता है कि x 2 एक अच्छा भविष्यवक्ता हैyx1x3x2x2x1yyx2x2। लेकिन एक बार के प्रभाव एक्स 1 कर रहे हैंबाहर partialledशामिल करके एक्स 1yx1x1 मॉडल में, ऐसा कोई संबंध नहीं रहता है।
require(MASS) #for mvrnorm
set.seed(42) #so reproduces same result
Sigma <- matrix(c(1,0.95,0,0.95,1,0,0,0,1),3,3)
N <- 1e4
x <- mvrnorm(n=N, c(0,0,0), Sigma, empirical=TRUE)
data.df <- data.frame(x1=x[,1], x2=x[,2], x3=x[,3])
# y depends on x1 strongly and x3 weakly, but not directly on x2
data.df$y <- with(data.df, 5 + 3*x1 + 0.5*x3) + rnorm(N, sd=2)
round(cor(data.df), 3)
# x1 x2 x3 y
# x1 1.000 0.950 0.000 0.824
# x2 0.950 1.000 0.000 0.782
# x3 0.000 0.000 1.000 0.134
# y 0.824 0.782 0.134 1.000
# Note: x1 and x2 are highly correlated
# Since y is highly correlated with x1, it is with x2 too
# y depended only weakly on x3, their correlation is much lower
pairs(~y+x1+x2+x3,data=data.df, main="Scatterplot matrix")
# produces scatter plot above
model.lm <- lm(data=data.df, y ~ x1 + x2 + x3)
summary(model.lm)
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 4.99599 0.02018 247.631 <2e-16 ***
# x1 3.03724 0.06462 47.005 <2e-16 ***
# x2 -0.02436 0.06462 -0.377 0.706
# x3 0.49185 0.02018 24.378 <2e-16 ***
x1x2x2x1x3x3
और यहाँ एक उदाहरण है जो और भी बदतर है:
Sigma <- matrix(c(1,0,0,0.5,0,1,0,0.5,0,0,1,0.5,0.5,0.5,0.5,1),4,4)
N <- 1e4
x <- mvrnorm(n=N, c(0,0,0,0), Sigma, empirical=TRUE)
data.df <- data.frame(x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4])
# y depends on x1, x2 and x3 but not directly on x4
data.df$y <- with(data.df, 5 + x1 + x2 + x3) + rnorm(N, sd=2)
round(cor(data.df), 3)
# x1 x2 x3 x4 y
# x1 1.000 0.000 0.000 0.500 0.387
# x2 0.000 1.000 0.000 0.500 0.391
# x3 0.000 0.000 1.000 0.500 0.378
# x4 0.500 0.500 0.500 1.000 0.583
# y 0.387 0.391 0.378 0.583 1.000
pairs(~y+x1+x2+x3+x4,data=data.df, main="Scatterplot matrix")
model.lm <- lm(data=data.df, y ~ x1 + x2 + x3 +x4)
summary(model.lm)
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 4.98117 0.01979 251.682 <2e-16 ***
# x1 0.99874 0.02799 35.681 <2e-16 ***
# x2 1.00812 0.02799 36.016 <2e-16 ***
# x3 0.97302 0.02799 34.762 <2e-16 ***
# x4 0.06002 0.03958 1.516 0.129
yx1x2x3x4x1x2x3x4yy वास्तव में उस चर को पा सकते हैं जो मॉडल में बिल्कुल भी नहीं है।