【问题标题】:Computation of double summation in R?R中双重求和的计算?
【发布时间】:2016-11-23 18:25:01
【问题描述】:

其中Xij是第i行第j列的对应项,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))
  }
}

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

【问题讨论】:

  • 在您的代码中,xs 不应该被替换为 y 吗?否则请提供xs
  • 对不起,是 y 而不是 xs... 请让我编辑一下。

标签: r matrix


【解决方案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 的任何值,即使它实际上不是您的示例中矩阵元素的平均值。

如果您的矩阵不是正方形,这些方法中的任何一种都不起作用。如果您的矩阵不是正方形,我不确定该公式是什么,因为您将无法对所有索引求和。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多