【问题标题】:how can I set a dummy variable in a regression in R如何在 R 的回归中设置虚拟变量
【发布时间】:2019-12-24 23:40:15
【问题描述】:

以下是我的数据

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_r1+ dummy_r2+dummy_r3)那样做回归,如果我不想使用上面的输出data(dummy_r1,dummy_r2,dummy_r3)怎么办,因为不方便。

【问题讨论】:

  • 1) sapply(data[2:4], function(x) as.integer(x < 0))。 2) 在cbind(data, output_of_previous) 之后只做lm(y ~ ., data)
  • 你可能真的不需要生成虚拟变量:lm(y~r1+r2+r3+(r1<0) +(r2<0)+(r3<0)...) 就可以了。

标签: r regression dummy-variable


【解决方案1】:

使用末尾注释中可重复显示的DF,定义DF2 也具有sign.* 列,然后对其运行回归。当然,您没有在问题中显示足够的数据来实际获得这么多预测变量的系数,但如果在您的实际问题中您有更多数据,那么应该没问题。

DF2 <- cbind(DF, sign = +(DF[-1] < 0))
lm(y ~., DF2)

给予:

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)

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 2015-01-03
    • 2018-03-29
    • 1970-01-01
    • 2020-11-25
    • 2012-12-05
    • 2018-06-27
    • 1970-01-01
    • 2018-09-21
    相关资源
    最近更新 更多