为啥我在 R 中的摘要只包括我的一些变量?

Posted

技术标签:

【中文标题】为啥我在 R 中的摘要只包括我的一些变量?【英文标题】:Why is my summary in R only including some of my variables?为什么我在 R 中的摘要只包括我的一些变量? 【发布时间】:2021-12-27 22:28:55 【问题描述】:

我想看看蝙蝠叫声的次数和幼犬饲养季节的时间之间是否存在关系。 pup 变量具有三个类别:“Pre”、“Middle”和“Post”。当我要求总结时,它只包括了产前和产后的 p 值。我在下面创建了一个示例数据集。使用示例数据集,我只是得到一个错误....使用我的实际数据集,我得到了上面描述的输出。

样本数据集:

 Calls<- c("55","60","180","160","110","50") 
 Pup<-c("Pre","Middle","Post","Post","Middle","Pre")
 q<-data.frame(Calls, Pup)
 q
 q1<-lm(Calls~Pup, data=q)
 summary(q1)

来自示例的输出和错误消息:

> Calls    Pup
1    55    Pre
2    60 Middle
3   180   Post
4   160   Post
5   110 Middle
6    50    Pre

Error in as.character.factor(x) : malformed factor
In addition: Warning message:
In Ops.factor(r, 2) : ‘^’ not meaningful for factors

我的分析的实际输入:

> pupint <- lm(Calls ~ Pup, data = park2)
summary(pupint)

这是我从我的实际数据集中得到的输出:

Residuals:
Min     1Q Median     3Q    Max 
-66.40 -37.63 -26.02  -5.39 299.93 

Coefficients:
        Estimate Std. Error t value Pr(>|t|)  
 (Intercept)    66.54      35.82   1.858   0.0734 .
PupPost       -51.98      48.50  -1.072   0.2927  
PupPre        -26.47      39.86  -0.664   0.5118  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 80.1 on 29 degrees of freedom
Multiple R-squared:  0.03822,   Adjusted R-squared:  -0.02811 
F-statistic: 0.5762 on 2 and 29 DF,  p-value: 0.5683

总的来说,只是想知道为什么上面的输出没有显示“中间”。抱歉,我的示例数据集的结果不一样,但也许该错误消息将有助于更好地理解问题。

【问题讨论】:

对于许多类型的回归,您会将分类变量编码为虚拟变量,并最终得到比类别数量少 1 个变量。在您的情况下, Middle 是基线 sthda.com/english/articles/40-regression-analysis/… 【参考方案1】:

如果您在回归中包含像 pup 这样的分类变量,那么它会为该变量中的每个值包含一个虚拟变量,默认情况下除外。如果您省略截距系数,则可以显示pupmiddle 的系数,如下所示:

q1<-lm(Calls~Pup - 1, data=q)

【讨论】:

成功了!!非常感谢! 不客气。【参考方案2】:

为了让 R 正确理解虚拟变量,您必须使用 factor 指示 Pup 是一个 cualitative(虚拟)变量

> Pup <- factor(Pup)
> q<-data.frame(Calls, Pup)
> q1<-lm(Calls~Pup, data=q)
> summary(q1)

Call:
lm(formula = Calls ~ Pup, data = q)

Residuals:
    1     2     3     4     5     6 
  2.5 -25.0  10.0 -10.0  25.0  -2.5 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)    85.00      15.61   5.444   0.0122 *
PupPost        85.00      22.08   3.850   0.0309 *
PupPre        -32.50      22.08  -1.472   0.2374  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 22.08 on 3 degrees of freedom
Multiple R-squared:  0.9097,    Adjusted R-squared:  0.8494 
F-statistic:  15.1 on 2 and 3 DF,  p-value: 0.02716

如果您希望 R 显示虚拟变量内的所有类别,则必须从回归中删除截距,否则,您将位于 variable dummy trap。

summary(lm(Calls~Pup-1, data=q))

Call:
lm(formula = Calls ~ Pup - 1, data = q)

Residuals:
    1     2     3     4     5     6 
  2.5 -25.0  10.0 -10.0  25.0  -2.5 

Coefficients:
          Estimate Std. Error t value Pr(>|t|)   
PupMiddle    85.00      15.61   5.444  0.01217 * 
PupPost     170.00      15.61  10.889  0.00166 **
PupPre       52.50      15.61   3.363  0.04365 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 22.08 on 3 degrees of freedom
Multiple R-squared:  0.9815,    Adjusted R-squared:  0.9631 
F-statistic: 53.17 on 3 and 3 DF,  p-value: 0.004234

【讨论】:

以上是关于为啥我在 R 中的摘要只包括我的一些变量?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在回归摘要中丢失了分类数据?

在 R [重复] 中更改 glm 中的分类预测变量的级别

如何按组进行汇总并使用R中的dplyr获取总体数据集的摘要

r 将摘要统计信息转换为R中的整理数据框

如何扩展“摘要”功能以包括 sd、峰度和偏斜?

询问 Angular 2 单元测试中的 Coverage 摘要?