Nếu, vì một số lý do, bạn sẽ chỉ bao gồm một biến trong mô hình của mình, sau đó chọn dự đoán có tương quan cao nhất với có một số lợi thế. Trong số các mô hình hồi quy có thể chỉ có một yếu tố dự báo, thì mô hình này là mô hình có hệ số hồi quy chuẩn hóa cao nhất và cũng (vì R 2 là bình phương r trong hồi quy tuyến tính đơn giản ) hệ số xác định cao nhất .yR2r
Nhưng không rõ lý do tại sao bạn muốn hạn chế mô hình hồi quy của mình thành một công cụ dự đoán nếu bạn có sẵn dữ liệu cho một số. Như đã đề cập trong các bình luận, chỉ cần nhìn vào các mối tương quan sẽ không hoạt động nếu mô hình của bạn có thể bao gồm một số biến. Ví dụ: từ ma trận phân tán này, bạn có thể nghĩ rằng các yếu tố dự đoán cho bạn nên đưa vào mô hình của mình là x 1 (tương quan 0.824) và x 2 (tương quan 0.782) nhưng x 3 (tương quan 0.134) không phải là một yếu tố dự đoán hữu ích.yx1x2x3
Nhưng bạn đã sai - thực tế trong ví dụ này, phụ thuộc vào hai biến độc lập là x 1 và x 3 , nhưng không trực tiếp trên x 2 . Tuy nhiên x 2 có tương quan cao với x 1 , điều này cũng dẫn đến tương quan với y . Nhìn vào mối tương quan giữa y và x 2yx1x3x2x2x1yyx2 trong sự cô lập, điều này có thể cho thấy là một yếu tố dự đoán tốt về y . Nhưng một khi các hiệu ứng của x 1 được loại bỏ bằng cách bao gồm x 1x2yx1x1 trong mô hình, không có mối quan hệ như vậy vẫn còn.
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 ***
Cỡ mẫu này đủ lớn để khắc phục các vấn đề về đa cộng đồng trong việc ước tính các hệ số cho và x 2 . Hệ số của x 2x1x2x2x1x3x3
Và đây là một ví dụ thậm chí còn tồi tệ hơn:
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 thực sự có thể tìm thấy biến không thuộc về mô hình nào cả.