【问题标题】:How to create dummy variable for categorical variable in R?? For performing regression如何在R中为分类变量创建虚拟变量?用于执行回归
【发布时间】:2018-06-27 20:57:57
【问题描述】:

我想在我的模型中为 1 个自变量创建虚拟变量。下面是我的数据集的外观示例。Y 是我的因变量,Var1、Var2、Var3 是自变量。

数据集:

Y Var1 Var2 Var3 1 30 N3 45 0 43 N2 56 0 56 N2 76 1 67 N1 89 0 77 N2 99

期望的输出: Y Var1 Var2 Var3 1 30 0 45 0 43 1 56 0 56 1 76 1 67 2 89 0 77 1 99

我们可以使用循环来运行它,因为我们有 3 个独立的。变量?如果有人指导我完成 R 代码会很有帮助吗?

如何将分类变量转换为连续变量以应用回归。如何为 Var2 创建虚拟变量

【问题讨论】:

  • 如果您提供a complete minimal reproducible example 来回答您的问题,我们更有可能为您提供帮助。我们可以从中工作并使用它来向您展示如何回答您的问题。我还建议看看how do I ask a good question。证明你已经付出了一些努力通常是件好事。
  • 基本上答案是“不要这样做”。您不需要在 R 中创建虚拟变量。查看因子函数。这是基本的 R 概念,所以你应该回到你正在学习的任何文本,并找出如何定义因子和水平。事实上,如果您使用任何 read.* 函数来创建数据框,变量 Var2 已经是一个因子类。默认情况下,这些函数和 data.frame 中的 stringsAsFactors 为 TRUE

标签: r regression linear-regression


【解决方案1】:

实际上线性回归适用于分类变量。请参阅http://r4ds.had.co.nz/model-basics.html#formulas-and-model-families,向下滚动至 23.4.1。

例如,以你的例子为例,如果我理解正确的话,所有变量都是连续的,除了 Var2 是分类的。我生成了一些伪数据并在上面运行lm。到目前为止,它没有抛出任何错误。示例如下:

# Generate pseudo data
df <- data.frame(Y = 2:21 + rnorm(20),
              Var1 = 1:20 + rnorm(20),
              Var2 = sample(c("A", "C", "G", "T"), 20, replace = TRUE),
              Var3 = rnorm(20, 10, 3))

# The linear regression model
mod <- lm(Y ~ Var1 + Var2 + Var3, data = df)

这里是返回的系数:

 Coefficients:
(Intercept)         Var1        Var2C        Var2G        Var2T         Var3  
    2.34602      0.98814     -1.78821     -0.44720     -0.70167     -0.06736   

显然它有点工作,因为 Var1 的构造几乎与 Y 成正比。有 n 个类别;你得到了 n-1 个类别的系数,因为剩下的一个由你得到的 n-1 个类别决定。在幕后,R 只是将分类转换为 0 和 1,当观察属于 A 类时为 1,否则为 0;其他类别也类似。如果变量是分类变量,您真的不需要虚拟变量。

当因变量是分类变量时,我也尝试过; lm会给你一个警告,

using type = "numeric" with a factor response will be ignored‘-’ not meaningful for factors

但您仍然会得到一个模型,尽管预测是连续的并且取决于您如何对类别进行排序(通常排序是任意的),因此它会质疑预测的意义。无论如何,有很多情况下自变量是分类的,例如基因型和性别,但我从未见过因变量是分类的并且仍然使用线性回归的情况。

【讨论】:

    猜你喜欢
    • 2017-05-31
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2015-08-17
    • 2022-12-02
    相关资源
    最近更新 更多