Как я могу закодировать это уравнение с двойным суммированием в R? - PullRequest
1 голос
/ 15 марта 2020

enter image description here

Так что мне трудно кодировать вышеуказанное уравнение, в основном ту часть, которая содержит эту двойную сумму по i и по j.

В моем случае мои n = 200 и p = 15. Мои y: s находятся в векторе Y = (y1, y2, ... yn), который является вектором длины 200 и Xij: s в матрице, которая имеет 15 столбцов и 200 строк. Bj: s находятся в векторе длиной 15.

Мое собственное решение, которое, я уверен, неверно, таково:

b0 <- 1/200 * sum(Y - sum(matr*b))

И здесь код, который вы можете использовать для воспроизведения моих векторов и матрицы:

matr <- t(mvrnorm(15,mu= rep(0,200),diag(1,nrow = 200)))
Y <- rnorm(n = 200)
b <- rnorm(n = 15)

1 Ответ

2 голосов
/ 15 марта 2020

Использовать умножение матриц:

mean(y - x %*% b)

Обратите внимание, что если у и х известны, а b - это регрессионная оценка коэффициентов наименьших квадратов, то мы можем записать ее как:

fm <- lm(y ~ x + 0)
mean(resid(fm))

и это обязательно равно 0, если есть пересечение, то есть постоянный столбец в x, поскольку остаточный вектор должен быть ортогональным к диапазону x, и взятие среднего значения равнозначно взятию внутреннего произведения невязок и вектора, чей все элементы одинаковы (и равны 1 / n).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...