线性回归与R中的条件语句(Linear regression with conditional st

2019-10-30 12:29发布

我有一个庞大的数据库,我需要与条件语句运行不同的回归。 因此,我认为选项来做到这一点:1)在回归包含命令的数据子集(industrycodes == 12)和2),仿佛数据切割成值I不获得相同的结果时,家具== 12。 他们应该是相同的。 可能有人帮助我的代码,我觉得我有这个问题。 我把一个例子非常基本的解释。

ID  roa   employees    industrycodes
1   0,5      10              12
2   0,3      20              11
3   0,8      15              12
4   0,2      12              12
5   0,7      13              11
6   0,4       8              12

所以首先我创建子数据库进行比较时(行业代码为12)

data2<-data1[data1$industrycodes==12,]

这里我运行回归:

1)为整个数据只服用industrycodes == 12 - 这里>我有6个观测

summary(lm(data1$roa~data1$employees, data=subset(data1,industrycodes==12)))  

2)切割所述样品时industrycode == 12 - 这里>当然我有4个观测

summary(lm(data2$roa~data2$employees),data=data2)

什么任何想法可能是错误的? 谢谢!

Answer 1:

问题是,第一,你指定一个数据集(一个叫子集(DATA1,industrycodes == 12)),但是运行另一个datset(数据1 - 原来一个)的流明。

一个额外的评论是,因为你使用的命令数据= ...在LM你不必指定与$变量,它可以作为一个在功能流明附着命令。

尝试这个:

DATA3 < - 子集(DATA1,industrycodes == 12)

摘要(LM(ROA〜员工,数据= DATA3))

希望它的工作原理



Answer 2:

欢迎StackOverflow的,我正好具有这两种情况下相同的结果,我唯一的改变是更换逗号“由点”“ ”正确地指示小数, . roa

data1

  ID roa employees industrycodes
1  1 0.5        10            12
2  2 0.3        20            11
3  3 0.8        15            12
4  4 0.2        12            12
5  5 0.7        13            11
6  6 0.4         8            12

summary(lm(data1$roa~data1$employees, data=subset(data1,industrycodes==12)))
summary(lm(data1$roa~data1$employees, data=data2))

第一种情况的结果:

    Call:
lm(formula = data1$roa ~ data1$employees, data = subset(data1, 
    industrycodes == 12))

Residuals:
       1        2        3        4        5        6 
 0.01667 -0.18333  0.31667 -0.28333  0.21667 -0.08333 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)
(Intercept)      4.833e-01  3.742e-01   1.292    0.266
data1$employees -5.918e-18  2.761e-02   0.000    1.000

Residual standard error: 0.259 on 4 degrees of freedom
Multiple R-squared:  8.039e-32, Adjusted R-squared:  -0.25 
F-statistic: 3.215e-31 on 1 and 4 DF,  p-value: 1
data2 <- data1[data1$industrycodes==12,]

第二种情况的结果:

summary(lm(data1$roa~data1$employees, data=data2))
Call:
lm(formula = data1$roa ~ data1$employees, data = data2)

Residuals:
       1        2        3        4        5        6 
 0.01667 -0.18333  0.31667 -0.28333  0.21667 -0.08333 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)
(Intercept)      4.833e-01  3.742e-01   1.292    0.266
data1$employees -5.918e-18  2.761e-02   0.000    1.000

Residual standard error: 0.259 on 4 degrees of freedom
Multiple R-squared:  8.039e-32, Adjusted R-squared:  -0.25 
F-statistic: 3.215e-31 on 1 and 4 DF,  p-value: 1

如果你想在所有条件下循环,你可以添加新列。 例如,如果你有两个条件:

data1$cond1 <- data1$industrycodes==12
data1$cond2 <- data1$industrycodes<=12

然后,您可以使用循环:

for( i in 5:6) {
  print(summary(lm(data1$roa~data1$employees, data=subset(data1,data1[,i]))))
}


文章来源: Linear regression with conditional statement in R