R中线性模型的系数和总结的不同NA动作

Jdu*_*dub 10 r summary lm na

在R中,当lm()我使用时,如果我na.action = na.pass在调用中设置lm(),那么在汇总表中,对于任何无法估计的系数都存在NA(因为在这种情况下缺少单元格).

但是,如果我只提取从摘要对象的系数,即使用summary(myModel)$coefficientscoef(summary(myModel)),那么NA的省略.

当我提取系数时,我希望包含NA,就像我打印摘要时一样.有没有办法做到这一点?

设置options(na.action = na.pass)似乎没有帮助.

这是一个例子:

> set.seed(534)
> myGroup1 <- factor(c("a","a","a","a","b","b"))
> myGroup2 <- factor(c("first","second","first","second","first","first"))
> myDepVar <- rnorm(6, 0, 1)
> myModel <- lm(myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2)
> summary(myModel)

Call:
lm(formula = myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2)

Residuals:
       1        2        3        4        5        6 
-0.05813  0.55323  0.05813 -0.55323 -0.12192  0.12192 

Coefficients: (1 not defined because of singularities)
                    Estimate Std. Error t value Pr(>|t|)
(Intercept)         -0.15150    0.23249  -0.652    0.561
myGroup11            0.03927    0.23249   0.169    0.877
myGroup21           -0.37273    0.23249  -1.603    0.207
myGroup11:myGroup21       NA         NA      NA       NA

Residual standard error: 0.465 on 3 degrees of freedom
Multiple R-squared: 0.5605,     Adjusted R-squared: 0.2675 
F-statistic: 1.913 on 2 and 3 DF,  p-value: 0.2914 

> coef(summary(myModel))
               Estimate Std. Error    t value  Pr(>|t|)
(Intercept) -0.15149826  0.2324894 -0.6516352 0.5611052
myGroup11    0.03926774  0.2324894  0.1689012 0.8766203
myGroup21   -0.37273117  0.2324894 -1.6032180 0.2072173

> summary(myModel)$coefficients
               Estimate Std. Error    t value  Pr(>|t|)
(Intercept) -0.15149826  0.2324894 -0.6516352 0.5611052
myGroup11    0.03926774  0.2324894  0.1689012 0.8766203
myGroup21   -0.37273117  0.2324894 -1.6032180 0.2072173
Run Code Online (Sandbox Code Playgroud)

Rei*_*son 3

为什么不直接从拟合模型中提取系数:

> coef(myModel)
             (Intercept)                myGroup1b 
             -0.48496169              -0.07853547 
          myGroup2second myGroup1b:myGroup2second 
              0.74546233                       NA
Run Code Online (Sandbox Code Playgroud)

这似乎是最简单的选择。

na.action与此无关。请注意,您没有通过na.action = na.pass您的示例。

na.action是一个全局选项,用于处理传递给模型拟合的数据NA,通常与公式结合使用;它也是一个函数的名称。R 根据参数和公式中表达的模型的符号表示建立所谓的模型框架。此时,将检测到任何变量,并且默认选项是通过删除任何变量的样本来从数据中删除。还有一些最有用的替代方案,它们会在拟合过程中删除,但会在拟合值、残差等的正确位置添加回来。阅读和了解更多信息,以及更多相关信息。na.action()dataNAna.actionna.omit()NANAna.exclude()NANA?na.omit?na.action?options

  • 感谢您解释 na.action 设置与此问题无关。从拟合模型中提取系数可能是最后的手段,但我想将置信区间的几列绑定到汇总表。我不想要的只是估计;我想要标准误差、p 值等,并在末尾附加置信区间。我可以从头开始制作表格,但我认为可能需要更改一些简单的设置才能获得“coef(summary(myModel))”和“confint(myModel)”以相同的顺序输出相同数量的行。 (3认同)