首页 > 解决方案 > 如何从 lm 摘要中隐藏控制变量

问题描述

我想使用线性回归模型y作为我的因变量并x1 x2作为我的自变量。现在我也有 2 个控制变量z1 z2。它们都是作为因子保存的指标变量(SIC代码和年份)。有没有办法不在输出中显示这些指标的每一级?它们都有大约 20 个级别,并且在使用时会产生summary(lm(y~x1+x2+z1+z2))完全不可读的输出。

我尝试使用该summary.lm命令,但是当我尝试时,输出如下所示:


Call:
lm(formula = tmd2$eps ~ tmd2$marketcap + tmd2$post + tmd2$year_dummy + 
    tmd2$SIC)

Residuals:
     Min       1Q   Median       3Q      Max 
-18.6260  -0.5528   0.0000   0.8117   8.4759 

Coefficients: (1 not defined because of singularities)
Error in symnum(pv, corr = FALSE, na = FALSE, cutpoints = c(0, 0.001,  : 'x' must be between 0 and 1

我哪里搞砸了?

标签: rregressionlinear-regressionlm

解决方案


summary返回一个值,您可以在显示之前对其进行操作。这是一个使用 iris 数据的小例子。

LMI = lm(Sepal.Length ~ ., data=iris)
summary(LMI)

Call:
lm(formula = Sepal.Length ~ ., data = iris)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.79424 -0.21874  0.00899  0.20255  0.73103 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)        2.17127    0.27979   7.760 1.43e-12 ***
Sepal.Width        0.49589    0.08607   5.761 4.87e-08 ***
Petal.Length       0.82924    0.06853  12.101  < 2e-16 ***
Petal.Width       -0.31516    0.15120  -2.084  0.03889 *  
Speciesversicolor -0.72356    0.24017  -3.013  0.00306 ** 
Speciesvirginica  -1.02350    0.33373  -3.067  0.00258 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3068 on 144 degrees of freedom
Multiple R-squared:  0.8673,    Adjusted R-squared:  0.8627 
F-statistic: 188.3 on 5 and 144 DF,  p-value: < 2.2e-16

现在假设我们要查看有关系数的信息,但仅针对连续变量(省略 Species 对应于省略控制变量)。我们不是直接打印摘要,而是捕获输出并仅显示我们想要的部分。

SLMI = summary(LMI)
SLMI$coefficients[1:4,]
               Estimate Std. Error   t value     Pr(>|t|)
(Intercept)   2.1712663 0.27979415  7.760227 1.429502e-12
Sepal.Width   0.4958889 0.08606992  5.761466 4.867516e-08
Petal.Length  0.8292439 0.06852765 12.100867 1.073592e-23
Petal.Width  -0.3151552 0.15119575 -2.084418 3.888826e-02

我们得到减少的输出。


推荐阅读