我很抱歉问过一千次被问过的问题,但我似乎还没有能够解决我的问题。
我正在尝试运行这个双循环:
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,] - mean)%*%(as.matrix(vR)[i + j,] - mean): 不一致的论点
另外,我的公式是:
(1/sigma^2) * (1/(t-k)) * sum[(vR(t)-mean)*(vR(t+k)-mean)]
总和是"大sigma"从t = 1到T-k
是否可以像我一样运行它?
答案 0 :(得分:2)
有一种更安全的方法来处理向量的“矩阵乘法”,即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
}
}