【问题标题】:Calculate the pearson coefficient between two lists计算两个列表之间的皮尔逊系数
【发布时间】:2019-12-12 10:02:46
【问题描述】:

我有两个不同的列表(a 和 b),其中包含 626257 个向量,每个向量包含 44 个数字条目。一个列表包含样本数据,另一个列表用作参考。现在我想计算两个列表的所有条目之间的 pearson 相关性。我将值存储在变量 (r) 中。

不幸的是,“r”的输出只包含“NA”条目。

这里是生成两个虚拟列表的代码。

a = replicate(626257,rep(10,44),simplify = FALSE)
b = replicate(626257,rep(3,44),simplify = FALSE)

这里是计算相关性的代码。

r = lapply(seq_along(a), function(ind)cor(a[[ind]], b[[ind]]))
View(r)

【问题讨论】:

  • 您的向量的方差为零,请尝试用随机数据替换它们,例如rnorm(44)
  • 你想要的结果是什么?你想要626257个值还是一个值(a中的所有值与b中的所有值之间的相关性?
  • 我无法用 rnorm(44) 替换 44 值。因为我希望每个向量有 44 个条目。但我试过这个:rnorm(10) 和 rnorm(3)。但现在每个向量有 440 和 132 个条目。我不理解为什么。我想要向量中的随机数,但向量的数量(626257)和长度(44)不应该改变。最后我想要626257个相关值。
  • 我的答案中的代码(包括rnorm(44))创建了一个具有 44 个正态分布值的向量 - 这就是你想要的。

标签: r list structure correlation pearson


【解决方案1】:

您可以使用mapply 轻松完成此任务。正如 AkselA 指出的那样,您首先需要模拟具有一些差异的数据(例如,使用 rnorm(44) 而不是 rep, 10, 44))。见下文:

a <- replicate(626257,rnorm(44),simplify = FALSE)
b <- replicate(626257,rnorm(44),simplify = FALSE)
r <- mapply(cor, a, b)

【讨论】:

  • 这正是我想要的。谢谢
猜你喜欢
  • 2013-10-12
  • 2021-02-25
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2012-11-18
  • 1970-01-01
相关资源
最近更新 更多