为啥R中的回归会删除因子变量的索引1? [复制]
Posted
技术标签:
【中文标题】为啥R中的回归会删除因子变量的索引1? [复制]【英文标题】:Why does regression in R delete index 1 of a factor variable? [duplicate]为什么R中的回归会删除因子变量的索引1? [复制] 【发布时间】:2013-02-20 07:52:57 【问题描述】:我正在尝试使用 lm
和 glm
函数在 R 中进行回归。
我的因变量是基于给定时间段内事件与非事件的比例的 logit 转换数据。所以我的因变量是连续的,而我的自变量是因子变量或虚拟变量。
我有两个独立变量可以取值
第 i 年到第 m 年,我的 YEAR 变量 第 j 个月到第 n 个月,我的 MONTH 变量
问题在于,每当我将模型作为摘要运行时,4 月的结果(月份索引 1)和 1998 年(年份的索引 1)都不在结果中......如果我将 4 月份更改为“foo_bar”,八月就要不见了……
请帮忙!这让我很沮丧,我根本不知道如何寻找解决问题的方法。
【问题讨论】:
这是意料之中的。您遇到的实际问题是什么? 嗯,怎么会?实际的问题是我只想评估我的时间变量对我的事件的影响,所以也许 12 月会对我的事件产生重大影响。也许 100 人中有 20 人在 12 月期间在玩具店买了东西,而在接下来的几个月里,100 人中只有 5 人买了东西…… 这不是 R 题,不属于这里。 相关:***.com/questions/7337761/… Ista:你为什么不把它看作一个 R 问题? 【参考方案1】:如果 R 为因子中的每个级别创建一个虚拟变量,则生成的变量集将是线性相关的(假设还有一个截距项)。因此,选择一个因子水平作为基线,并且没有为其生成虚拟变量。
为了说明这一点,让我们考虑一个玩具示例:
> data <- data.frame(y=c(2, 3, 5, 7, 11, 25), f=as.factor(c('a', 'a', 'b', 'b', 'c', 'c')))
> summary(lm(y ~ f, data))
Call:
lm(formula = y ~ f, data = data)
Residuals:
1 2 3 4 5 6
-0.5 0.5 -1.0 1.0 -7.0 7.0
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.500 4.093 0.611 0.5845
fb 3.500 5.788 0.605 0.5880
fc 15.500 5.788 2.678 0.0752 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5.788 on 3 degrees of freedom
Multiple R-squared: 0.7245, Adjusted R-squared: 0.5409
F-statistic: 3.945 on 2 and 3 DF, p-value: 0.1446
如您所见,共有三个系数(与因子中的水平数相同)。这里,a
被选为基线,所以(Intercept)
指的是f
是a
的数据子集。 b
和 c
(fb
和 fc
)的系数是基线截距与其他两个因子水平的截距之间的差异。因此b
的截距是6
(2.500+3.500
),c
的截距是19
(2.500+15.500
)。
如果您不喜欢自动选择,您可以选择另一个级别作为基线:How to force R to use a specified factor level as reference in a regression?
【讨论】:
非常感谢!我自己永远不会想出那个。我猜这只是虚拟变量的属性还是什么? @KasperChristensen:我希望最新的编辑能带来更多亮点。 @KasperChristensen:它是矩阵代数的一个属性。如果 X 没有完整的列秩(即 X 具有线性相关性、完全多重共线性等),则 X'X 不可逆并且您无法估计系数。 @JoshuaUlrich X'X 不可逆,但您仍然可以使用广义逆得到估计。只是估计值不是唯一的,您无法真正直接解释大多数系数。以上是关于为啥R中的回归会删除因子变量的索引1? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用回归模型解决单因素方差分析问题(ANOVA as regression)方差分析和回归都是同广义线性模型的特例因子转化为数值的过程中(分类变量编码为连续变量自定义设置contrast)
R语言glm拟合logistic回归模型实战:基于glm构建逻辑回归模型及模型系数统计显著性分析每个预测因子对响应变量的贡献
在 R 中使用 dplyr 进行过滤时,为啥过滤掉的变量级别会保留在过滤后的数据中? [复制]
R语言广义线性模型函数GLMglm函数构建逻辑回归模型(Logistic regression)构建仿真数据集控制所有其它预测变量进而评估单个预测因子对结果概率的影响