将 28 级分类变量转换为矩阵

Convert a 28 level categorical variable to matrix

我有一个包含一列 company 的数据集,我将对此数据集进行回归建模。

我应该使用 model.matrix 转换它还是只在一列中分配 1-28 的值。

lm 函数可以处理时,将其转换为 28 列有什么意义?

我应该使用 model.matrix 转换它还是只在一列中分配 1-28 的值?

你不应该做:

  • 如果您在一列中分配从 1 到 28 的值,就好像说公司 28 的权重是公司 1 的 28 倍,而所有公司在您的分析中都需要具有相同的权重(假设这些是没有顺序关系的公司名称。
  • 使用 model.matrix 会将您的公司列转换为虚拟变量(0 - 1 标志),但您不需要这样做,因为 lm 会自动为您完成。

在lm函数可以处理的情况下,将其转换为28列有什么意义?

正如我之前提到的,lm 会为您完成,因此您无需自己完成。但是,我需要指出的是,您最终会得到 27 列(加上截距),因为一列(参考列)将被故意遗漏。原因是,通过了解其他 27 家公司,您也隐含地了解了第 28 家公司(即参考列与其他 27 家公司的组合 100% 相关,因此需要省略)。