成对完整观察的相关性问题
在您描述的情况下,主要问题是解释。因为您使用的是成对的完整观测值,所以实际上您正在为每个相关性分析略有不同的数据集,具体取决于缺少哪些观测值。
考虑以下示例:
a <- c(NA,NA,NA, 5, 6, 3, 7, 8, 3)
b <- c(2, 8, 3, NA,NA,NA, 6, 9, 5)
c <- c(2, 9, 6, 3, 2, 3, NA,NA,NA)
数据集中的三个变量a
、b
和c
,每个变量都有一些缺失值。如果您在此处计算成对变量的相关性,您将只能使用两个相关变量都没有缺失值的案例。在这种情况下,这意味着您将仅分析与之间的相关性的最后 3 个案例,以及与之间的相关性a
的b
前三个案例b
,c
等等。
当您计算每个相关性时,您正在分析完全不同的情况,这意味着由此产生的相关性模式看起来很荒谬。看:
> cor(a,b, use = "pairwise.complete.obs")
[1] 0.8170572
> cor(b,c, use = "pairwise.complete.obs")
[1] 0.9005714
> cor(a,c, use = "pairwise.complete.obs")
[1] -0.7559289
这看起来像一个逻辑矛盾 ---a
和b
是强正相关的,而且b
和c
也是强正相关的,所以你会期望a
和c
也是正相关的,但实际上在相反的方向上有很强的关联。你可以看到为什么很多分析师不喜欢这样。
编辑以包括来自 whuber 的有用说明:
请注意,部分论证取决于“强”相关性可能意味着什么。当和之间存在“在相反方向上的强关联”时, 和 和 很可能“强正相关” a
,但并不像本例中那样极端。问题的症结在于估计的相关(或协方差)矩阵可能不是正定的:这就是人们应该量化“强”的方式。b
b
c
a
c
缺失类型的问题
你可能会想,“好吧,假设我可用于每个相关性的案例子集或多或少地遵循与我拥有完整数据时会得到的相同模式,难道不是可以吗?” 是的,这是真的——只要可用数据是随机的,计算数据子集的相关性从根本上没有错(尽管你会损失精度和功效,当然,因为样本量较小)如果您没有任何缺失,所有数据的样本。
当缺失是纯随机的,这称为 MCAR(完全随机缺失)。在这种情况下,分析没有缺失的数据子集不会系统地偏向您的结果,并且不太可能(但并非不可能)获得我在上面示例中展示的那种疯狂的相关模式。
当你的缺失以某种方式是系统性的(通常缩写为 MAR 或 NI,描述两种不同类型的系统缺失),那么你就会遇到更严重的问题,无论是在计算中可能引入偏差,还是在你概括你的能力方面结果到感兴趣的人群(因为您正在分析的样本不是来自人群的随机样本,即使您的完整数据集本来是)。
有很多很棒的资源可以用来了解丢失的数据以及如何处理它,但我的推荐是 Rubin:
一个经典的,
以及最近的一篇文章