R中双重求和的计算?

时间:2016-11-23 18:25:01

标签: r matrix

enter image description here

其中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))
  }
}

有人可以帮我纠正这段代码吗?

1 个答案:

答案 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的任何值,即使它实际上并非像您的示例中的矩阵元素的平均值。

如果您的矩阵不是正方形,这些方法中的任何一种都不会起作用。如果你的矩阵不正方形,我不知道该怎么做公式,因为你不能总结所有指数。