Rana Muhammad kashif Rana Muhammad kashif - 1 year ago 140
R Question

Computation of double summation in R?

enter image description here

Where Xij is the corresponding term of ith row at jth column and i = 1,2 ; j = 1,2 .
The code I tried is:

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))

Can someone help me rectify this code?

Answer Source
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)
#[1] 10.15864

But it's faster to do

centered <- y-mean
#[1] 10.15864

This works for any value of mean, even if it isn't actually the mean of matrix elements as in your example.

Neither one of these methods will work if your matrix isn't square. If your matrix isn't square I'm not sure what to make of the formula, because you won't be able to sum over all indices.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download