循环线性regrssion模型

时间:2016-01-27 08:33:44

标签: r loops linear-regression

我有这样的数据,其中Amount是因变量,len,年龄,数量和pos是解释变量。我尝试按年龄,数量和pos进行回归逐步使用。

    ID Sym Month Amount len Age quantity  Pos
    11  10   1    500    5   17   0       12
    22  10   1    300    6   11   0       11 
    33  10   1    200    2   10   0       10
    44  10   1    100    2   11   0       11
    55  10   1    150    4   15   0       12
    66  10   1    250    4   16   0       14
    11  20   1    500    5   17   0       12
    22  20   1    300    6   11   0       11 
    33  20   1    200    2   10   0       10
    44  20   1    100    2   11   0       11
    55  20   1    150    4   15   0       12
    66  20   1    250    4   16   0       14
    77  20   1    700    4   17   0       11
    88  20   1    100    2   16   0       12
    11  30   1    500    5   17   0       12
    22  30   1    300    6   11   0       11 
    33  30   1    200    2   10   0       10
    44  30   1    100    2   11   0       11
    55  30   1    150    4   15   0       12
    66  30   1    250    4   16   0       14
    11  40   1    500    5   17   2000    12
    22  40   1    300    6   11   1000    11 
    33  40   1    200    2   10   1000    10
    44  40   1    100    2   11   1000    11
    55  40   1    150    4   15   1000    12
    66  40   1    250    4   16   1000    14

运行所有回归后我想要的结果输出应该是一个看起来像这样的数据框(这应该可以帮助我检测异常值):

Id Month Sym Amount len Age Quantity Pos R^2 CookDistanse  Residuals UpperLimit LowerLimit
11   1    10  500    5   17   null    12  0.7   1.5         -350      -500       1000 
22   1    10  300    6   11   null    11  0.8   1.7         -400      -500       1000

这是我试图在Sym = 10,Sym = 20,Sym = 30,Sym = 40上运行的代码。 我有类似400 Sym值的东西来对它们进行回归分析。

fit[i]  <-  step(lm (Sym[i]$Sum ~ len + Age + Quantity,
                    na.action=na.omit), direction="backward")
R_Sq <- summary(fit[i])$r.squared
Res[i] <- resid(fit[i])
D[i] <- cooks.distance(fit[i]) 
Q[i] <- quantile(resid(fit[i), c(.25, .50,  .75, .99))
L[i]<-  Q[1][i] - 2.2* (Q[3][i]-Q[1][i])
U[i] <- Q[3][i] + 2.2*(Q[3][i]-Q[1][i])

“i”表示sym = i(10,20 ..)的回归结果。 有没有办法在循环中为每个Sym值执行此操作? 任何帮助都将非常感激。

0 个答案:

没有答案