我正在R中做线性模型。我的因素包括出生率,死亡率,婴儿死亡率,预期寿命和地区。该区域有7个级别,使用数字代表每个区域:
我在R中运行了套索回归,以尝试改进广义线性模型。拉索回归系数如下:
我将通过套索回归选择的因子放入R中的lm函数:
Lasso.lm <- lm(log(GNIpercapita) ~ deathrate + infantdeaths + life.exp.avg +
life.exp.diff + region, data=econdev)
但是,对于区域,如何将每个区域添加到线性模型lm中?例如regionEast Asia & Pacific
,我不能将其添加为+ regionEast Asia & Pacific
。
答案 0 :(得分:0)
您不能使用类别的各个部分。
您可以消除数字变量或分类变量的整个列,但是您不能选择单个类别,因为它会碎片化数据框。
使用Lasso回归本身的结果并从中进行预测可能会更好。由于正则化,它不少于回归。它更复杂,更健壮,不太直接,但不是“更糟”。
如果这对您不起作用,则可以使用选定的连续变量和整个区域变量运行lm()
,并接受该模型不完善的观点,因为所有模型都是如此,或者删除该区域并解决该问题可能是预测性较差的模型。
答案 1 :(得分:0)
我同意先前的意见,因为不建议选择分类变量的各个部分。如果您仍然愿意这样做,可以使用modeldb包为分类变量的每个级别创建虚拟变量,这很容易。请记住,在回归lm()中,您必须省略分类变量的一级以避免完全共线性。
library(modeldb)
df %>%
add_dummy_variables(region)