【问题标题】:Compute covariance matrix from list of occurrences [duplicate]从出现列表计算协方差矩阵
【发布时间】:2017-04-26 10:11:26
【问题描述】:

我有以下数据框:

# my_data
id  cg
1   a
2   b
3   a
3   b
4   b
4   c
5   b
5   c
5   d
6   d

我想计算cg 的值的协方差。我相信我可以通过在以下矩阵上使用cov() 来获得它,其中每个单元格计算cg 的两个值之间的共现次数。

# my_matrix
cg  a  b  c  d
a   2  1  0  0
b   1  4  2  1
c   0  2  2  1
d   0  1  1  2

my_datamy_matrix 的最快方法是什么?请注意,cg 包含 700 多个唯一值。

如果有更好的方法来生成协方差矩阵,我也很感兴趣。

这里是生成my_data的代码:

my_data <- structure(list(id = c(1L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 5L, 6L),
                          cg = c("a", "b", "a", "b", "b", "c", "b", "c", "d", "d")),
                     .Names = c("id", "cg"),
                     class = "data.frame", row.names = c(NA, -10L))

【问题讨论】:

  • 我准备了一个解决方案并将其发布在欺骗链接上,因为该链接之前已被删除

标签: r covariance


【解决方案1】:

我们可以使用crossprodtable

crossprod(table(my_data))
#    cg
#cg  a b c d
#  a 2 1 0 0
#  b 1 4 2 1
#  c 0 2 2 1
#  d 0 1 1 2

【讨论】:

  • 您的解决方案有效。谢谢你。但我现在编辑了原始问题,使该解决方案不再适用。
  • @Michele 请将其作为一个新问题发布,因为答案基于您的原始帖子。
  • 好的。新问题在这里:stackoverflow.com/questions/43639805/…
  • @Michele 谢谢,我去看看
猜你喜欢
  • 1970-01-01
  • 2020-04-13
  • 2015-03-31
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 2011-09-18
相关资源
最近更新 更多