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