R несоответствующие аргументы

Мои извинения за то, что задали вопрос, который задавался тысячу раз, но я все еще не могу решить свою проблему.

Я пытаюсь запустить этот двойной цикл:

rho=matrix(0,12,1)

for (i in 1:k){
  for (j in 1:n-k){
    temp=((1/(sigma^2))*(1/(n-i)))*((as.matrix(vR)[j,]-mean)%*%(as.matrix(vR)[i+j,]-mean))
    rho[i,]=temp
  }
}    

Я продолжаю получать ошибку:

Ошибка в (as.matrix(vR)[j, ] - среднее) %*% (as.matrix(vR)[i + j, ] - среднее): несоответствующие аргументы

Кроме того, моя формула:

(1/sigma^2) * (1/(t-k)) * sum[(vR(t)-mean)*(vR(t+k)-mean)]

сумма "большая сигма" идет от t=1 до Tk

Можно ли запустить его, как я делаю?

1 ответ

Решение

Существует более безопасный метод для обработки "умножения матриц" векторов, crossprod функция. Кроме того, я думаю, что ваша ошибка может в значительной степени проистекать из приоритета оператора функции seq, ":" в настройке индекса внутреннего цикла над функцией "-":

for (i in 1:k){
 for (j in 1:(n-k)){  # note inner parentheses, safer to always use with "("
temp=((1/(sigma^2))*(1/(n-i)))*crossprod(vR[j,]-mean,vR[i+j,]-mean)
rho[i,]=temp
 }
}
Другие вопросы по тегам