Ваш код не очень ясен, что вы пытаетесь сделать (что такое 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 по к, что-то вроде этого:
xt <- matrix(1:30, ncol = 3)
k <- 5
apply(xt[1:k, ], 2, sum)
возвращает вектор сумм столбцов xt
для строк от 1 до k (в данном случае 5). Это «путь R» для этого. for
и if
займет намного больше времени и больше памяти для выполнения.