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