套索回归系数找到线性模型

时间:2020-11-12 01:36:11

标签: r linear-regression dummy-variable

我正在R中做线性模型。我的因素包括出生率,死亡率,婴儿死亡率,预期寿命和地区。该区域有7个级别,使用数字代表每个区域:

  1. 东亚和太平洋地区
  2. 南亚
  3. 欧洲与中亚
  4. 北美
  5. 拉丁美洲
  6. 中东和北非
  7. 撒哈拉以南非洲

我在R中运行了套索回归,以尝试改进广义线性模型。拉索回归系数如下:
enter image description here

我将通过套索回归选择的因子放入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

2 个答案:

答案 0 :(得分:0)

您不能使用类别的各个部分。

您可以消除数字变量或分类变量的整个列,但是您不能选择单个类别,因为它会碎片化数据框。

使用Lasso回归本身的结果并从中进行预测可能会更好。由于正则化,它不少于回归。它更复杂,更健壮,不太直接,但不是“更糟”。

如果这对您不起作用,则可以使用选定的连续变量和整个区域变量运行lm(),并接受该模型不完善的观点,因为所有模型都是如此,或者删除该区域并解决该问题可能是预测性较差的模型。

答案 1 :(得分:0)

我同意先前的意见,因为不建议选择分类变量的各个部分。如果您仍然愿意这样做,可以使用modeldb包为分类变量的每个级别创建虚拟变量,这很容易。请记住,在回归lm()中,您必须省略分类变量的一级以避免完全共线性。

library(modeldb)

df %>% 
  add_dummy_variables(region)