其中Xij是第j列的第i行的对应项,i = 1,2; j = 1,2。 我试过的代码是:
y <- cbind(1:2, 3:4)
mean_y <- 2
double_summataion = 0
for (i in 1: y[1]) {
for (j in 1:y[2]) {
double_summataion = double_summataion + ((y[i,j] - mean_y)%*%(t(y[i,j])-mean_y))
}
}
有人可以帮我纠正这段代码吗?
答案 0 :(得分:1)
y <- matrix(runif(1000),100,100)
mean <- mean(y)
double_summation = 0
for (i in 1:nrow(y)) {
for (j in 1:ncol(y)) {
double_summation = double_summation + (y[i,j] - mean)*(y[j,i]-mean)
}
}
double_summation
#[1] 10.15864
但做得更快
centered <- y-mean
sum(diag(centered%*%centered))
#[1] 10.15864
这适用于mean
的任何值,即使它实际上并非像您的示例中的矩阵元素的平均值。
如果您的矩阵不是正方形,这些方法中的任何一种都不会起作用。如果你的矩阵不正方形,我不知道该怎么做公式,因为你不能总结所有指数。