我正在尝试计算R中的人的总体相关性。它是基于这段简短的YouTube视频在Excel中进行的,以防对任何人都有用:https://www.youtube.com/watch?v=vSnq9npL4J0&feature=youtu.be
[基本上,我有一个包含多个项目的问卷。我的目标是为每个项目创建平均值(该列的平均值)。然后取平均值并将其与个人的反应相关联。这是一个只有一个项目的示例。我这样计算平均值:
data$item1_mean <- mean(data$item1)
然后我尝试将原始响应与均值相关联,如下所示:
cor(data$item1_mean, data$item1)
我得到的错误是“标准偏差为零。”这是完全合理的,因为均值列没有任何可变性,一直到该列一直都是相同的值。我只是想知道是否仍然有一种方法可以计算出这种相关性,因为在Excel中是可能的。我还尝试仅使平均值成为一个值,而不是将其输入回到数据集中,而我得到的错误是“尺寸不兼容”。这也很有意义,因为它是试图与列相关的一个值。我对如何解决这个问题有些困惑,不胜感激。谢谢大家!
Excel中CORREL
中使用的两个变量似乎是分数的每一列和分数的行的平均值,因此对于r x c矩阵,您需要使用
for (i in 1:nrows)
cor(r_i, colMeans(matrix))
示例
set.seed(1)
m <- matrix(
rpois(100, 5), 10,
dimnames = list(ID = 1:10, item = paste0('item', 1:10))
)
# item
# ID item1 item2 item3 item4 item5 item6 item7 item8 item9 item10
# 1 4 3 9 5 7 5 8 4 4 3
# 2 4 3 3 5 6 7 4 7 6 2
# 3 5 6 6 5 7 4 5 4 4 6
# 4 8 4 3 3 5 3 4 4 4 8
# 5 3 7 4 7 5 2 6 5 6 7
# 6 8 5 4 6 7 2 3 8 3 7
# 7 9 6 1 7 1 4 5 7 6 5
# 8 6 11 4 2 5 5 7 4 2 4
# 9 6 4 8 6 6 6 2 7 3 7
# 10 2 7 4 4 6 4 8 9 3 5
cm <- colMeans(m)
# item1 item2 item3 item4 item5 item6 item7 item8 item9 item10
# 5.5 5.6 4.6 5.0 5.5 4.2 5.2 5.9 4.1 5.4
apply(m, 1, function(x) cor(x, cm))
# 1 2 3 4 5 6 7 8 9 10
# -0.2333769 -0.2257414 0.3862146 0.4491248 0.3002514 0.8108818 0.2693194 0.4351975 0.1621993 0.5799516