R中计算形式的方差-协方差矩阵
Variance-Covariance matrix in computational form in R
我正在使用 R 中的一个小而简单的矩阵来显示使用 (cov)
函数与使用公式 (1/n-1) * (t(x) %*% as.matrix(x) - n %*% Ybar * (t(Ybar)
[ 的方差-协方差矩阵的数学计算之间的比较=15=]
这是我正在使用的数据以供参考:
> 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)
它 returns 一个 3 x 3 矩阵,所有值 = 3.5
下面的代码是我使用计算公式获取方差-协方差矩阵的代码,但它返回一个错误,指出“在 t(x) %% as.matrix (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)
我正在使用 R 中的一个小而简单的矩阵来显示使用 (cov)
函数与使用公式 (1/n-1) * (t(x) %*% as.matrix(x) - n %*% Ybar * (t(Ybar)
[ 的方差-协方差矩阵的数学计算之间的比较=15=]
这是我正在使用的数据以供参考:
> 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)
它 returns 一个 3 x 3 矩阵,所有值 = 3.5
下面的代码是我使用计算公式获取方差-协方差矩阵的代码,但它返回一个错误,指出“在 t(x) %% as.matrix (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)