【问题标题】:Identify and remove data points with high leverage and large residuals识别并删除具有高杠杆率和大残差的数据点
【发布时间】:2015-08-08 09:17:53
【问题描述】:

我想识别具有高杠杆率和大残差的数据点。我的目标是删除它们并重复线性回归分析。具体来说,我想删除大于 3 的学生化残差和厨师 D > 4/n 的数据点。在没有影响点的情况下,如何在样本数据中执行相同的分析?

样本数据:

hsb2 <- read.csv("http://www.ats.ucla.edu/stat/data/hsb2.csv")

lm1<-lm(write ~ read +ses + prog+race.f, data = hsb2)  

【问题讨论】:

  • 我建议您改用鲁棒回归,例如,来自包 robustbase 的函数 lmrob
  • ?influence.measures
  • 您可以在下面的链接中查看一个示例。它使用 R 根据厨师的距离去除异常值。 stats.stackexchange.com/questions/164099/…

标签: r linear-regression outliers


【解决方案1】:

您还可以删除高杠杆和大残差的值

HighLeverage <- cooks.distance(lm1) > (4/nrow(hsb2))
LargeResiduals <- rstudent(lm1) > 3
hsb2 <- hsb2[!HighLeverage & !LargeResiduals,]
lm1<-lm(write ~ read +ses + prog+race.f, data = hsb2)  

【讨论】:

    【解决方案2】:

    将这些点的权重设置为零,然后update 模型:

    w <- abs(rstudent(lm1)) < 3 & abs(cooks.distance(lm1)) < 4/nrow(lm1$model)
    lm2 <- update(lm1, weights=as.numeric(w))
    

    这在统计上可能是一个弱的方法,但至少代码不是太难......

    【讨论】:

      猜你喜欢
      • 2018-04-15
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2021-01-12
      • 2018-02-27
      • 2018-04-09
      • 2023-04-02
      相关资源
      最近更新 更多