如何根据另一个线性回归从线性回归中筛选出行

时间:2015-08-23 09:58:08

标签: r linear-regression

我想进行一个线性回归,它将包含三个步骤: 1)在所有数据点上运行回归 2)取出由以下找到的10个区域使用绝对远程值rstandard 3)在新数据框上再次运行回归。 我知道如何手动完成,但这些非常麻烦。有没有办法自动完成?它也可以用于取出色谱柱吗?

这是我的玩具数据框和代码(我将取出2个顶级异常值):

df <- read.table(text = "userid target birds    wolfs     
                 222       1        9         7 
                 444       1        8         4 
                 234       0        2         8 
                 543       1        2         3 
                 678       1        8         3 
                 987       0        1         2 
                 294       1        7         16 
                 608       0        1         5 
                 123       1        17        7 
                 321       1        8         7 
                 226       0        2         7 
                 556       0        20        3 
                 334       1        6         3 
                 225       0        1         1 
                 999       0        3         11 
                 987       0        30         1  ",header = TRUE) 
model<- lm(target~ birds+ wolfs,data=df)
rstandard <- abs(rstandard(model))
df<-cbind(df,rstandard)
g<-subset(df,rstandard > sort(unique(rstandard),decreasing=T)[3])
g
       userid target birds wolfs rstandard    
    4     543      1     2     3  1.189858    
   13    334      1     6     3  1.122579  

   modelNew<- lm(target~ birds+ wolfs,data=df[-c(4,13),])

1 个答案:

答案 0 :(得分:1)

我不知道如何在不估算两个模型的情况下做到这一点,第一个是识别最有影响的案例,第二个是没有这些案例的数据。您可以简化代码并避免使工作空间混乱,但是,通过一次性完成所有操作,在调用中嵌入子集化过程来估计“最终”模型。以下是为您提供的示例执行此操作的代码:

model <- lm(target ~ birds + wolfs,
    data = df[-(as.numeric(names(sort(abs(rstandard(lm(target ~ birds + wolfs, data=df))), decreasing=TRUE)))[1:2]),])

此处,初始模型,影响评估以及随后的数据子集都包含在第一个data =之后的代码中。

另请注意,生成的模型将与您的代码生成的模型不同。那是因为你的g没有正确识别出两个最有影响力的案例,因为你可以看到你是否只关注abs(rstandard(lm(target ~ birds + wolfs, data=df)))的结果。我认为这与您使用unique()有关,这似乎是不必要的,但我不确定。

相关问题