我正在从 Stata 过渡到 R。在 Stata 中,如果我将因子水平(比如 - 0 和 1)标记为(M 和 F),0 和 1 将保持原样。此外,在包括 Excel 和 SPSS 在内的大多数软件中,虚拟变量线性回归都需要这样做。
但是,我注意到 R 默认因子水平为 1,2 而不是 0,1。我不知道为什么 R 会这样做,尽管内部回归(并且正确地)假设 0 和 1 作为因子变量。我将不胜感激任何帮助。
这是我所做的:
尝试#1:
sex<-c(0,1,0,1,1)
sex<-factor(sex,levels = c(1,0),labels = c("F","M"))
str(sex)
Factor w/ 2 levels "F","M": 2 1 2 1 1
似乎因子水平现在重置为 1 和 2。我相信 1 和 2s 是对因子水平的引用。但是,我丢失了原始值,即 0 和 1。
尝试2:
sex<-c(0,1,0,1,1)
sex<-factor(sex,levels = c(0,1),labels = c("F","M"))
str(sex)
Factor w/ 2 levels "F","M": 1 2 1 2 2
同上。我的 0 和 1 现在是 1 和 2。相当令人惊讶。为什么会这样。
Try3 现在,我想看看 1s 和 2s 是否有任何不良影响回归。所以,这就是我所做的:
这是我的数据的样子:
> head(data.frame(sassign$total_,sassign$gender))
sassign.total_ sassign.gender
1 357 M
2 138 M
3 172 F
4 272 F
5 149 F
6 113 F
myfit<-lm(sassign$total_ ~ sassign$gender)
myfit$coefficients
(Intercept) sassign$genderM
200.63522 23.00606
所以,事实证明手段是正确的。在运行回归时,R 确实使用 0 和 1 值作为虚拟变量。
我确实检查了 SO 上的其他线程,但他们大多谈论 R 如何编码因子变量而没有告诉我原因。Stata 和 SPSS 通常要求基本变量为“0”。所以,我想问问这个。
我会很感激任何想法。