Pearson 的相关估计器是否不需要二元异常值,或者两个单独的数据向量中的每一个都不需要异常值?答案将影响我在计算 Pearson 估计值之前如何对异常值进行缩尾处理。
Pearson 相关性是否需要去除双变量或单变量异常值?
您必须同时删除两者。但这还不够。您还必须从. 这是因为所谓的多元异常值。
异常值可能会显着偏离大多数数据的模式,而不必突出您单独获取的任何变量(例如,考虑此答案所附图中的红点簇)。
正因为如此,多(在这种情况下是双)变量异常值通常不能使用坐标方法可靠地检测到。找到它们的唯一可靠方法实际上是使用多变量修剪/加减法(即考虑沿所有方向对数据进行单变量投影的方法)。存在许多这样的方法,您会在大多数现代统计包(R、MATLAB、STATA、SAS ......)中找到很好的实现。
重要的是要认识到,多元异常值在破坏 Pearson 相关性方面与其更广为人知的坐标表亲一样有效。下面的一个例子说明了这一点。
在几何上,坐标方向的修剪/增减相当于在大部分数据周围绘制一个矩形,并将该矩形之外的任何观察结果视为离群。相比之下,多元修剪相当于在大部分数据周围绘制一个椭圆,并将该椭圆之外的任何点视为异常值。
前一种方法只能在异常值位于至少一个坐标上(或者换句话说,沿着平行于数据散点图轴的方向)的情况下检测异常值。相比之下,第二种方法不受此限制。换句话说,多元修剪方法可以检测异常值,而不管它们的异常方向是什么(这包括平行于数据散点图的轴的方向)。
考虑这个例子(重现它的代码在这篇文章下面):

对完整数据(即一起考虑的黑色+红色点)计算的 Pearson 相关性为 0.5。在这种情况下,任何观察都不会通过坐标优化方法降低权重,因为对于所有观察, 距离
小于 3。因此,在这种情况下,根据 Winsorized 观测值计算的 Pearson 相关性将与根据原始数据计算的 Pearson 相关性相同。
现在,0.5 与数据好的部分(例如,仅考虑黑点)的相关性相差甚远,在这种情况下为 84%。
将此与通过进行二元修剪和估计剩余(未修剪)观测值的相关性获得的结果进行对比。在这种情况下,多元修剪是使用 FastMCD(1) 算法完成的,这可能是最流行的多元修剪算法。FastMCD 正确地将红点识别为距离包含大部分数据的椭圆太远,并将它们标记为异常值。然后,对剩余观测值估计的相关性现在为 85%,这与正确结果足够接近。
(1) Rousseeuw PJ 和 Van Driessen K. (1999)。最小协方差行列式估计的快速算法。技术计量学, 41, 212--223。
library(MASS)
library(rrcov)
n<-100
p<-2
set.seed(123)
A<-matrix(rnorm((p+1)*p),p+1,p)
A<-eigen(var(A))$vector
B<-A%*%diag(c(16,1))%*%t(A)
C<-t(A)%*%diag(c(4,1))%*%A
x<-mvrnorm(n,rep(0,p),B)
y<-mvrnorm(n,rep(0,p),C)
d<-which.max(mahalanobis(y,rep(0,p),B))
y<-mvrnorm(floor(n/5),y[d,],diag(2)/100)
z<-rbind(x,y)
plot(z,asp=1,type="n")
points(x,col="black",pch=16)
points(y,col="red",pch=16)
cor(z)
[,1] [,2]
[1,] 1.0000000 0.5018708
[2,] 0.5018708 1.0000000
cov2cor(CovMcd(z)@cov)
[,1] [,2]
[1,] 1.0000000 0.8592597
[2,] 0.8592597 1.0000000
cor(x)
[,1] [,2]
[1,] 1.0000000 0.8485822
[2,] 0.8485822 1.0000000
d1<-which((abs(z[,1]-median(z[,1]))/mad(z[,1])<3) & (abs(z[,2]-median(z[,2]))/mad(z[,2])<3))
length(d1)
[1] 120