gpt4 book ai didi

r - R在不同向量和data.frame之间的cor()行为不同

转载 作者:行者123 更新时间:2023-12-04 11:04:58 27 4
gpt4 key购买 nike

我正在尝试获取数据帧中所有相对于彼此的行的皮尔逊相关系数。有值为空(NA)的值,这似乎提出了在缺少值的2个向量上运行cor()时我没有遇到的问题。这是对两个向量的正确结果:

x <- c(NA, 4.5, NA, 4, NA, 1)
y <- c(2.5, 3.5, 3, 3.5, 3, 2.5)
cor(x,y, use = "complete.obs")
[1] 0.9912407

当它们成为数据帧的一部分时,结果如下:
cor(t(critics1), use = "complete.obs")
y a b c d e x
y 1 NA NA NA NA NA NA
a NA 1 1 1 -1 1 -1
b NA 1 1 1 -1 1 -1
c NA 1 1 1 -1 1 -1
d NA -1 -1 -1 1 -1 1
e NA 1 1 1 -1 1 -1
x NA -1 -1 -1 1 -1 1
Warning message:
In cor(t(critics1), use = "complete.obs") : the standard deviation is zero

为什么use参数效果不一样?
这是comcriments1数据框的外观;
film1 film2 film3 film4 film5 film6
y 2.5 3.5 3.0 3.5 3.0 2.5
a 3.0 3.5 1.5 5.0 3.0 3.5
b 2.5 3.0 NA 3.5 4.0 NA
c NA 3.5 3.0 4.0 4.5 2.5
d 3.0 4.0 2.0 3.0 3.0 2.0
e 3.0 4.0 NA 5.0 3.0 3.5
x NA 4.5 NA 4.0 NA 1.0

最佳答案

正如@joran推测的那样,当您转置critics1时,只有两个完整的观察值(即没有缺失值的行)。这就是为什么所有相​​关性都是1-1或(对于涉及y的相关性,在两个完整行中均具有3.5的值),或者是NA的原因。

t(critics1)
# y a b c d e x
# film1 2.5 3.0 2.5 NA 3 3.0 NA
# film2 3.5 3.5 3.0 3.5 4 4.0 4.5
# film3 3.0 1.5 NA 3.0 2 NA NA
# film4 3.5 5.0 3.5 4.0 3 5.0 4.0
# film5 3.0 3.0 4.0 4.5 3 3.0 NA
# film6 2.5 3.5 NA 2.5 2 3.5 1.0

如果您使用 use="pairwise.complete.obs"而不是 use="complete.obs",那么它可以按照您的意愿工作:
cor(t(df), use="pairwise.complete.obs")["y","x"] # Extract correlation of y and x
# [1] 0.9912407

关于r - R在不同向量和data.frame之间的cor()行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com