【问题标题】:Variance 0 in the covariate matrix协变量矩阵中的方差 0
【发布时间】:2022-01-04 17:07:20
【问题描述】:

我制作了一个协变量矩阵。它运作良好。 问题:如图所示,如何使协变量 0 和该变量 1 的方差之间的方差?

set.seed(1)
M1<-matrix(rnorm(25,5,1),ncol=5)
M1
cor(M1)
SD_M1<-rnorm(5)
M1_Covariance<-(SD_M1%*%t(SD_M1))*cor(M1)
M1_Covariance

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    这是一个函数f,以协方差矩阵S 和整数索引向量k 作为参数。它将k索引的变量的方差设置为1,将涉及这些变量的协方差设置为0。

    function(S, k) {
      S[k, ] <- S[, k] <- 0
      S[cbind(k, k)] <- 1
      S
    }
    
    f(M1_Covariance, c(1:2, 5L))
    
         [,1] [,2]      [,3]       [,4] [,5]
    [1,]    1    0  0.000000  0.0000000    0
    [2,]    0    1  0.000000  0.0000000    0
    [3,]    0    0  2.163113 -0.4791670    0
    [4,]    0    0 -0.479167  0.2286275    0
    [5,]    0    0  0.000000  0.0000000    1
    

    S 实际上可以是任何方阵,因为该运算不依赖于 S 是对称的还是正定的。

    【讨论】:

    • 谢谢,非常好的解决方案!一个问题:如果我想像前一种情况那样有更多的0和1的列和行,我应该如何修改代码?
    • 我已经更新了代码。
    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2012-12-09
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    相关资源
    最近更新 更多