【问题标题】:Variance-covariance matrix : difference between cov(X) and t(X)X(1/n-1)方差-协方差矩阵:cov(X) 和 t(X)X(1/n-1) 之间的差异
【发布时间】:2021-11-28 06:55:43
【问题描述】:

首先,让我们直截了当:我不是数学家或统计学家。

解决问题。 我想计算一组值的方差-协方差矩阵。这些值存储在一个矩阵中,例如:

M <- matrix(c(1,2,3,4,
              2,4,6,8,
              4,8,12,16),3,4, byrow = TRUE)

计算方差-协方差矩阵的原因是我想使用 mvrnorm() 来生成模拟的多元数据。在我真正的问题中,我使用 cov() 来做到这一点,效果很好。但是,当我真的想知道如何计算方差-协方差矩阵时,我偶然发现了its definition,它在 R 中实现应该类似于:

covM <- (t(M) %*% M)*(1/(3-1))

其中 3 是 M 中的 obs(行)数。

但是,(t(M) %% M)(1/(3-1)) 对我来说并没有产生相同的结果。对于真正的问题,它产生的结果与 cov(M) 几乎相似,但并不完全相同。

我在做什么或理解错了?

【问题讨论】:

  • 尝试居中 M;例如Ms = scale(M, scale = FALSE)

标签: r matrix covariance-matrix


【解决方案1】:

你必须将矩阵的列居中,也就是说,减去每一列的列均值。一种可能是:

X = t(t(M) - colMeans(M))
(t(X) %*% X)*(1/(3-1))

cov(M) 相同。

清洁工:

X <- sweep(M, 2, colMeans(M), FUN = `-`)

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 2021-01-24
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多