如何在R中的回归中设置虚拟变量

如何在R中的回归中设置虚拟变量,r,regression,dummy-variable,R,Regression,Dummy Variable,以下是我的数据 y r1 r2 r3 1 0.1 0.2 -0.3 2 0.7 -0.9 0.03 3 -0.93 -0.32 -0.22 1.第一个问题是如何获得如下输出: y r1 r2 r3 dummy_r1 dummy_r2 dummy_r3 1 0.1 0.2 -0.3 0 0 1 2 0.7 -0.9 0.03 0 1

以下是我的数据

y   r1  r2  r3

1   0.1 0.2 -0.3
2   0.7 -0.9    0.03
3   -0.93   -0.32   -0.22
1.第一个问题是如何获得如下输出:

y   r1     r2    r3    dummy_r1  dummy_r2 dummy_r3

1   0.1    0.2   -0.3    0        0          1
2   0.7   -0.9   0.03    0        1          0
3   -0.93 -0.32  -0.22   1        1          1
注:我希望负数据等于1,正数据等于0


2.第二个问题是,如果我想做如下回归:
lm(y~r1+r2+r3+dummy\u r1+dummy\u r2+dummy\u r3)
,如果我不想使用上面的输出
数据(dummy\u r1,dummy\u r2,dummy\u r3)
,我该怎么做,因为这不方便。

使用
DF,定义
DF2
以同时具有
符号。*
列,然后在该列上运行回归。当然,你没有足够的数据显示在问题中,以实际获得系数为这么多的预测,但如果在你真正的问题,你有更多的数据,那么它应该是好的

DF2 <- cbind(DF, sign = +(DF[-1] < 0))
lm(y ~., DF2)
笔记
第1行)
sapply(数据[2:4],函数(x)为.integer(x<0))
。2) 在
cbind(data,output\u of_previous)
之后,只需执行
lm(y~,data)
。您可能并不真正需要生成虚拟变量:
lm(y~r1+r2+r3+(r1
Call:
lm(formula = y ~ ., data = DF2)

Coefficients:
(Intercept)           r1           r2           r3      sign.r1  
      1.425       -1.163       -1.543           NA           NA  
    sign.r2      sign.r3  
         NA           NA  
Lines <- "y   r1  r2  r3
1   0.1 0.2 -0.3
2   0.7 -0.9    0.03
3   -0.93   -0.32   -0.22"
DF <- read.table(text = Lines, header = TRUE)