R中计算形式的方差协方差矩阵



我正在处理R中的一个小而简单的矩阵,以显示使用(cov)函数与使用公式(1/n-1) * (t(x) %*% as.matrix(x) - n %*% Ybar * (t(Ybar)的方差-协方差矩阵的数学计算之间的比较

以下是我正在使用的数据供参考:

> dput(x)
structure(c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 
2L, 3L, 4L, 5L, 6L), .Dim = c(6L, 3L))

当我运行x.cov <- cov(x)时,它返回一个3 x 3矩阵,所有值=3.5

下面的代码是我使用计算公式来获得方差-协方差矩阵的代码,但它返回了一个错误,说明";在t(x(%%as矩阵(x(-6%%x.meanvec%*%t(x.meanvec(:不一致数组";

one <- rep(1, 6)
x.meanvec <- (1/6) * t(one) %*% as.matrix(x)
matrix.t <- (1/5) * (t(x) %*% as.matrix(x) - 6 %*% x.meanvec %*% t(x.meanvec))

如何修复公式以避免此错误?

我不理解你的公式,也不相信它是正确的。

我会这么做:

(1/5) * (t(x - one %*% x.meanvec) %*% (x - one %*% x.meanvec))

或者更有效:

1/5 * crossprod(x - one %*% x.meanvec)

最新更新