由于方差为0,cor函数如何处理NA值?

4

我是一名初学R语言的用户。我正在使用cor函数获取数据框中两列之间的Kendal's tau-b等级相关系数。此类列的示例如下:

A    B
1    1
1    2
1    3

当我使用 cor(d,method="kendall") 时,

A 和 B 之间的相关性结果是 NA。这难道不应该是 0 吗?如果不是,那么我是否可以在 cor 函数中使用参数来将这个 NA 结果替换为 0 呢?


1
如果输出是 out,则 out[is.na(out)] <- 0 - akrun
作为后续,如果我使用具有多个列的数据框并使用cor(d,method="kendall",use="pairwise"),是否有一种方法可以将所有NA更改为0? - Teererai Marange
它的实现方式与 is.na 相同,对于 vectormatrixdata.frame 都有方法(methods(is.na)),对于矩阵和数据框返回一个逻辑矩阵。 - akrun
8
为什么应该是零?变量 A 的标准偏差为零,因此相关性未定义。 - d.b
你应该过滤掉所有常量列,然后使用 cor 函数来处理 d 数据框。将它们视为与其他列 0-相关 是没有意义的,因此需要丢弃这些列。 - Vitali Avagyan
1个回答

1
考虑一下如果我们稍微扰动常量列会发生什么。根据使用的特定扰动,我们会得到截然不同的解决方案。实际上,我们可以通过不同的扰动获得任何想要的相关性。因此,使用任何特定值作为相关性是没有意义的,最好将其保留为NA。
x <- c(1, 1, 1)
y <- 1:3

cor(x + (1:3) * 1e-10, y, method = "spearman")
## [1] 1

cor(x - (1:3) * 1e-10, y, method = "spearman")
## [1] -1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接