首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在平方协方差矩阵中组织协方差对列表?

如何在平方协方差矩阵中组织协方差对列表?
EN

Stack Overflow用户
提问于 2020-08-27 14:48:23
回答 2查看 84关注 0票数 1

我在R工作,我有一个由三列组成的tibble:

  • V1:,第一个variable
  • V2:的名称,第二个variable
  • cov:的名称,V1V2.

之间协方差的值。

n列上对n协方差对进行了扩展。

我想得到一个看上去像经典协方差矩阵的矩阵,即包含协方差对的正方形n x n矩阵。

你知道我怎么才能实现这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-27 14:55:15

与…有关的东西

代码语言:javascript
复制
## find row/column names
n <- unique(c(dd$V1,dd$V2))
## construct matrix  
M <- matrix(NA, length(n),length(n), dimnames=list(n,n))
## fill in values
M[cbind(dd$V1,dd$V2)] <- dd$V3

如果在初始数据集中只有下/上三角形,则需要像M[lower.tri(M)] <- t(M)[upper.tri(M)]这样的东西来使.

票数 2
EN

Stack Overflow用户

发布于 2020-08-27 15:03:23

您可以构造一个稀疏矩阵:

代码语言:javascript
复制
DF <- data.frame(var1 = c("a", "a", "b", "a", "b", "c"), 
                 var2 = c("b", "c", "c", "a", "b", "c"), 
                 cov = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6))
DF$var1 <- factor(DF$var1, levels = sort(unique(c(DF$var1, DF$var2))))
DF$var2 <- factor(DF$var2, levels = levels(DF$var1))

library(Matrix)
sparseMatrix(i = as.integer(DF$var1), 
             j = as.integer(DF$var2), 
             x = DF$cov, 
             dimnames = list(levels(DF$var1), levels(DF$var2)),
             symmetric = TRUE)
#3 x 3 sparse Matrix of class "dsCMatrix"
#    a   b   c
#a 0.4 0.1 0.2
#b 0.1 0.5 0.3
#c 0.2 0.3 0.6 

如果需要,可以使用as.matrix创建密集矩阵。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63618603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档