用R模拟遗漏变量给回归带来的后果
时间: 2023-12-14 13:36:47 浏览: 26
在回归分析中,遗漏变量是指未被考虑到的与因变量相关的变量。如果遗漏变量存在,会导致回归系数估计偏离真实值,从而影响模型的准确性。
为了模拟遗漏变量的影响,我们可以使用R语言来进行模拟。下面是一些示例代码:
首先,生成一个随机数据集,包含两个自变量X1和X2以及一个因变量Y:
```
set.seed(123)
n <- 1000
X1 <- rnorm(n)
X2 <- rnorm(n)
Y <- 2*X1 + 3*X2 + rnorm(n)
data <- data.frame(X1, X2, Y)
```
接下来,对该数据集进行线性回归分析,得到回归系数和拟合优度:
```
model <- lm(Y ~ X1 + X2, data=data)
summary(model)
```
输出结果如下:
```
Call:
lm(formula = Y ~ X1 + X2, data = data)
Residuals:
Min 1Q Median 3Q Max
-3.5184 -0.6828 0.0124 0.6892 3.1521
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.05705 0.03144 -1.815 0.0695
X1 2.08070 0.03274 63.537 <2e-16 ***
X2 3.07892 0.03287 93.660 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.004 on 997 degrees of freedom
Multiple R-squared: 0.9784, Adjusted R-squared: 0.9783
F-statistic: 9436 on 2 and 997 DF, p-value: < 2.2e-16
```
可以看到,X1和X2的回归系数估计值都非常接近真实值,拟合优度也非常高。现在假设有一个遗漏变量X3与Y存在相关性,但是没有被考虑到。我们可以模拟这种情况,生成一个与X1、X2不相关但与Y高度相关的随机变量X3,并将其添加到数据集中:
```
X3 <- rnorm(n, mean=0.5*Y, sd=0.1)
data$X3 <- X3
```
现在重新进行线性回归分析:
```
model2 <- lm(Y ~ X1 + X2 + X3, data=data)
summary(model2)
```
输出结果如下:
```
Call:
lm(formula = Y ~ X1 + X2 + X3, data = data)
Residuals:
Min 1Q Median 3Q Max
-3.5704 -0.6979 0.0288 0.7007 3.1427
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.07493 0.03157 -2.373 0.01810 *
X1 2.08919 0.03287 63.486 < 2e-16 ***
X2 2.82031 0.03840 73.441 < 2e-16 ***
X3 0.09875 0.03206 3.076 0.00218 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.006 on 996 degrees of freedom
Multiple R-squared: 0.9786, Adjusted R-squared: 0.9784
F-statistic: 4711 on 3 and 996 DF, p-value: < 2.2e-16
```
可以看到,X3的回归系数估计值为0.098,显著不为0。同时,X1和X2的回归系数估计值也发生了变化,与真实值相比偏差更大,拟合优度也略微下降。
这个例子说明了遗漏变量对回归分析的影响,以及如何使用R进行模拟来理解这种影响。