【问题标题】:cor function with NA values due to 0 variance由于 0 方差而具有 NA 值的 cor 函数
【发布时间】:2019-09-21 22:14:10
【问题描述】:

这里是初学者 R 用户。我正在使用 cor 函数来获取数据帧的 2 列之间的 Kendal 的 tau-b 等级相关系数。此类列的示例如下:

A    B
1    1
1    2
1    3

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

A和B的相关性结果是NA,不应该是0吗?如果没有,我可以使用 cor 函数中的参数将这个 NA 结果替换为 0 吗?

【问题讨论】:

  • 如果输出为outout[is.na(out)] <- 0
  • 作为后续。如果我使用具有多列的数据框并使用 cor(d,method="kendall",use="pairwise") 有没有办法将所有 NA 更改为 0?
  • 这将与is.na 具有vector 和matrix 和data.frame (methods(is.na)) 的方法相同,它返回一个用于matrix 和data.frame 的逻辑矩阵跨度>
  • 为什么要为零? A 的标准差为零,相关性未定义。
  • 您应该过滤 d 数据框以丢弃所有常量列,然后使用 cor。将他们0-correlated 与其他人一起对待没有任何好处。这没有意义!

标签: r


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多