Xt =矩阵(1:30,ncol = 3)其中t是时间段。 我试图从t = 1到10求解和(t(Xt)%*%Xt)/ n)。 我使用下面的代码。'
B_hat_T=matrix(NA,p,n)
for (j in 1:n) {
if (j>=p) B_hat_T[,j]<-solve((t(xt[1:j,])%*%xt[1:j,])/n)}
但它不起作用。 你知道怎么解决它吗? 感谢
答案 0 :(得分:0)
你的代码并不是很清楚你想要做什么(什么是n?p?)但是有两件事情在我身上跳出来。首先,在您的代码中使用xt
,但在文本中使用Xt
。这些是不同的东西。此外,您在简介中定义的xt
完全是单数 - 您无法使用solve
将其反转。关于主题的潜在问题,使用%*%
和solve
可能不是数字上最稳定的评估方式,如果这确实是你想要做的。
其次,如果你使xt
非单数
xt <- matrix(rnorm(30), ncol = 3)
然后运行
solve((t(xt[1:5, ]) %*% xt[1:5, ]) / 30)
结果是一个大小为3x3的矩阵。在尝试使用B_hat_T[l j]
时,您无法将其分配给矩阵的单行。
最后,如果你想获得行1到k的矩阵x的列式和,就像这样:
xt <- matrix(1:30, ncol = 3)
k <- 5
apply(xt[1:k, ], 2, sum)
对于第1行到第k行,将返回xt
列的总和向量(在本例中为5)。这是&#34; R方式&#34;这样做。 for
和if
将花费更长的时间和更多的内存来执行。