如何在R ??中为分类变量创建虚拟变量用于执行回归

时间:2018-01-18 17:34:08

标签: r regression linear-regression

我想在我的模型中为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代码,这将非常有用吗?

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

1 个答案:

答案 0 :(得分:0)

实际上,线性回归适用于分类变量。请参阅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

但你仍然得到一个模型,虽然预测是连续的,取决于你如何订购你的类别(通常排序只是任意的),所以它会质疑预测的意义。无论如何,在许多情况下,自变量是绝对的,如基因型和性别,但我从未见过因变量是分类的情况,仍然使用线性回归。