【问题标题】:How to create appropriate dummy variables for all categorical variables with more than 2 values in R?如何为 R 中具有超过 2 个值的所有分类变量创建适当的虚拟变量?
【发布时间】:2016-06-06 01:17:05
【问题描述】:

我有一个包含 1000 行和 21 个变量的 CSV 数据集。在这 21 个中,有 9 个是具有超过 2 个值的分类变量。如何在 R 中创建相同的虚拟变量?我希望对这个数据集进行逻辑回归来解释它。我尝试使用因子和水平来转换它们,但我认为它只对 2 个变量最有效。我用谷歌搜索了很多,发现许多网站在理论上解释了如何做到这一点,但没有提到代码或函数来完全理解它。在这个网站上,我遇到了 model.matrix() 函数、R 的 dummies 包和 dummy.code() 函数。但是我仍然被卡住了,因为我是新介绍给 R 的。很抱歉这个问题很长,这是我第一次在这里问。提前致谢!

【问题讨论】:

  • 您不需要创建虚拟变量。如果变量是一个因素,glm 过程将能够计算出比较结果,以包含在逻辑回归模型中。

标签: r


【解决方案1】:

在 R 中,大多数函数会在您发送分类值(性别、位置等)时识别并自动创建虚拟变量!例如,如果你正在做一个线性回归,你可以只做 lm(CSV_DATA)。如果分类值由实际数字表示,建议先将它们转换为字符串,以便 R 进行相应调整!

如果您必须手动执行此过程,您可以创建一个循环来遍历您的数据集并填充其他变量。对于每个分类值,您将需要 n-1 个附加变量来将其表示为连续数据,n 是变量包含的可能类别的数量。使用您的 n-1 个新变量,您可以将每个变量分配给原始类别变量中的一个可能类别。在所有 n-1 个新变量中,最后一个类别将由 0 表示。例如,如果您尝试表示位置并且您的数据可以是“纽约”、“洛杉矶”或“迈阿密”,您将创建两个 (n-1) 虚拟变量,为了便于解释,我们将给出它们名称 city1 和 city2。如果原始变量等于“New York”,您将设置 city1 = 1 和 city2 = 0,如果它是“LA”,您将设置 city1 = 0 和 city2=1,如果您的原始值是“Miami”,您将设置城市 1=0 和城市 2=0。

之所以有效,是因为它不会将任何一个类别的数字排名高于其他类别,而是使用最后一个类别作为比较所有其他类别的“参考”!如前所述,如果您将变量表示为字符串,R 会自动为您执行此操作。

【讨论】:

  • 所有分类变量都用实际数字表示。就像有一个名为 CHK_ACCT 的变量,其编码为: 0 : 200 3: 没有支票账户 我必须运行逻辑回归,将数据拆分为训练和验证后数据集。
  • 我建议将您的数字转换为字符串,只需在 csv 文件中用引号括起来,那么您应该是金色的!
  • 但是,其中一个标准是我必须为所有超过 2 个值的分类变量创建适当的虚拟变量,然后使用一些虚拟变量进行回归。
  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review
  • 不确定@RonakShah 是什么意思,但我已经编辑了我的答案以包含更符合您的作业要求的解决方案。
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
相关资源
最近更新 更多