从出现列表计算协方差矩阵
Compute covariance matrix from list of occurrences
我有以下数据框:
# 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_data
到 my_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))
我们可以使用 crossprod
和 table
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
我有以下数据框:
# 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_data
到 my_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))
我们可以使用 crossprod
和 table
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