使用R的人员总相关性

问题描述 投票:0回答:1

我正在尝试计算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中是可能的。我还尝试仅使平均值成为一个值,而不是将其输入回到数据集中,而我得到的错误是“尺寸不兼容”。这也很有意义,因为它是试图与列相关的一个值。我对如何解决这个问题有些困惑,不胜感激。谢谢大家!

r correlation
1个回答
2
投票

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 
© www.soinside.com 2019 - 2024. All rights reserved.