线性回归分析应如何处理离群值?


73

通常,统计分析人员会得到一组数据集,并要求使用线性回归之类的技术来拟合模型。通常,数据集带有免责声明,类似于“哦,是的,我们搞砸了收集其中一些数据点-尽您所能”。

这种情况导致回归拟合受到可能存在错误数据的异常值的严重影响。给定以下内容:

  • 从科学和道德的角度来看,无缘无故丢掉数据是危险的,除了“会使拟合看起来很糟糕”。

  • 在现实生活中,收集数据的人员经常无法回答诸如“在生成此数据集时,您究竟弄错了哪些要点?”之类的问题。

哪些统计检验或经验法则可以用作排除线性回归分析中异常值的基础?

多线性回归是否有特殊考虑?


Answers:


33

您可以使用可靠的回归方法,而不是排除异常值。例如,在R中,可以使用rlm()MASS包中的lm()函数代替该函数。可以将估计方法调整为对异常值具有或多或少的鲁棒性。


如果使用rlm()函数,我会看到系数及其t检验。但是如何从这里获得f检验的R平方值?我想如果我是正确的话,我不能简单地从简单的“ lm”汇总结果中得出这些f检验和R平方值。
艾瑞克(Eric)

1
对于稳健的回归,不再满足F检验的假设,并且可以以几种不再等效的方式定义R ^ 2。请参阅stats.idre.ucla.edu/stata/faq/…,以获得有关Stata的一些讨论。
罗布·亨德曼


但是我从sfsmisc包中找到了名为f.robftest的命令,该命令给出了f-test结果。我可以使用此结果来定义rlm的f检验统计信息吗?另外,我似乎通过简单地将值输入到R平方数学公式中来获得R平方,例如1-sum(residuals(rlm(y〜x))^ 2)/ sum((y-mean(y))^ 2) 。为了使用t检验值检查系数的显着性,我从summary(rlm(y〜x))中获得了t检验值,并将其与95%左右的置信度中的t值进行了比较。我可以使用这些方法吗?
艾瑞克(Eric)

22

有时,离群值是错误的数据,应将其排除在外,例如错别字。有时他们是Wayne Gretzky或Michael Jordan,应该保留。

离群值检测方法包括:

单变量-> boxplot。超出四分位间距的1.5倍是异常值。

带有置信椭圆的双变量->散点图。例如,在95%置信度椭圆之外,这是一个异常值。

多元-> Mahalanobis D2距离

将这些观察结果标记为离群值。

运行逻辑回归(在Y = IsOutlier上)以查看是否存在任何系统模式。

删除那些可以证明它们不代表任何子种群的变量。


而且,如果仍然存在异常值,请考虑使用不同于线性模型的模型。例如,如果您使用具有幂律(例如行为)的模型,则Michael Jordan不再是异常值(就模型容纳他的能力而言)。
drevicko

1
同意这里所说的大部分内容,但我还要补充一点警告,“ 超出四分位数间距的1.5倍是一个离群值 ”是惯例,而不是具有任何理论基础的规则。不应将其用作排除数据点的理由。
MKT

20

我确实认为有话要说,就是要排除异常值。应该使用回归线来汇总数据。由于杠杆作用,您可能会遇到1%的数据点对斜率产生50%的影响的情况。

如果您不告诉任何人您排除了异常值,那么从道德和科学的角度来看这只是危险。只要您指出它们,您就可以说:

“该回归线非常适合大多数数据。在1%的时间内,会出现一个值不符合该趋势的值,但是,嘿,这是一个疯狂的世界,没有系统是完美的”


1
“嘿,这是一个疯狂的世界,没有系统是完美的” +1代表我的朋友!:)
bartektartanus

1
不过请考虑其他模型。如果世界充满了已删除的“异常值”,这些异常值是真实数据,则导致无法预测真正重要的事情。许多自然过程都具有类似幂律的行为,并具有罕见的极端事件。线性模型似乎适合这些数据(虽然不太好),但是使用一个模型并删除“异常值”意味着缺少那些极端事件,这通常是很重要的!
drevicko

10

沙皮狗

从字面上考虑您的问题,我认为没有任何统计检验或经验法则可以用作排除线性回归分析中异常值的基础(而不是确定给定观察值是否是异常值)。这必须来自主题领域知识。

我认为最好的开始方法是询问离群值是否有意义,特别是考虑到您收集的其他变量。例如,您的研究中有600磅重的女性是从各个运动损伤诊所招募来的,这真的很合理吗?或者,只有60岁的人列出55岁或专业经验,这并不奇怪吗?依此类推。希望您有一个合理的基础,可以将它们扔掉或让数据编译器为您仔细检查记录。

我还建议分别使用Rob和Chris提出的可靠的回归方法和对丢弃的观察结果的透明报告。

希望这会有所帮助,布伦登



5

有两种统计距离量度专门用于检测离群值,然后考虑是否应从线性回归中删除这些离群值。

第一个是库克的距离。您可以在Wikipedia上找到一个很好的解释:http : //en.wikipedia.org/wiki/Cook%27s_distance

库克距离越远,观察结果的影响力越大(对回归系数的影响)。考虑删除观察值的典型分界点是库克距离= 4 / n(n为样本量)。

第二个是DFFITS,也可以在Wikipedia中找到:http : //en.wikipedia.org/wiki/DFFITS。考虑删除观察值的典型分界点是DFFITS值是sqrt(k / n)的2倍,其中k是变量数,n是样本量。

两种方法通常会为您提供相似的结果,从而导致相似的观察选择。


3

垃圾进垃圾出....

获得线性回归的全部好处的隐含意义是噪声遵循正态分布。理想情况下,您主要是数据和少量噪音。...不是主要是噪音和少量数据。您可以通过查看残差来检验线性拟合后残差的正态性。您还可以在线性拟合之前过滤输入数据,以消除明显的明显误差。

以下是垃圾输入数据中通常不符合正态分布的某些类型的噪声:

  • 缺少数字或与人工输入的数据一起添加的数字(相差10或更多倍)
  • 错误或错误转换的单位(克,公斤,磅;米,英尺,英里,公里),可能是合并多个数据集引起的(注:火星轨道器被认为以这种方式丢失了,因此即使是NASA火箭科学家也可以做到这一点)错误)
  • 使用0,-1,-99999或99999之类的代码来表示非数字内容,例如“不适用”或“列不可用”,然后将其与有效数据一起转储到线性模型中

为每列编写什么是“有效数据”的规范可以帮助您标记无效数据。例如,一个人的身高(厘米)应在100-300厘米的范围内。如果您发现高度为1.8,这是一个错别字,虽然您可以假设它是1.8m,然后将其更改为180,则我通常会更安全地扔掉它,最好记录下尽可能多的过滤条件。



0

用作排除基础的统计检验:-标准化残差-杠杆统计-库克距离,这是上述两者的组合。

从经验来看,排除应该限于错误数据输入的实例。在线性回归模型中对异常值进行加权是一种很好的折衷方法。这个在R中的应用由Rob提供。一个很好的例子在这里:http : //www.ats.ucla.edu/stat/r/dae/rreg.htm

如果有必要排除在外,则“一个经验法则”与Dfbeta统计信息有关(当异常值被删除时,估计值的变化),因此,如果DfBeta统计信息的绝对值超过2 / sqrt(n),则表明删除了离群值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.