R语言 如何手动指定哑变量(虚拟变量)的参照水平
这个问题操作起来很简单,但对于很多新手来说并不友好。国内关于R语言中如何设置哑变量的教程太多,但就我所知,没有相关介绍的这个小问题的。
假设有formula:lm(y ~ x + b)
首先,个人觉得设置哑变量最简单的就是直接在formula中给变量面前加个factor()或as.factor()函数就行。例如变量b由=有1,2,3,4个值。若将b指定为因子变量(分类变量),则可以在不改变原数据的情况下加入:
lm(y ~ x + as.factor(b))
需要注意的是,R语言中绝大多数程序包会默认把整数分类变量看作为因子变量,即不需要加factor()来指定。如果需要在回归中做p for trend这种线性趋势,则可以用numeric()或as.numeric()函数来强制指定b为连续资料。
lm(y ~ x + as.numeric(b))
不过R语言默认的参照水均为最低值,例如变量b有1,2,3,4四个水平,则默认参照水平为1。这时候如果需要指定参照水平为3时,则可以在formula中为该变量调用relevel()函数。
lm(y ~ x + relevel(b, ref = "3"))
最后如果国内搜不到R语言相关教学,可以去stack overflow去看看。一般搜索引擎改为bing或google,问题翻译为英语,基本上第一条都会是stack上的教学(可能需要科学上网)。