Регресс матрицы против вектора столбца в R

Я пытаюсь регрессировать каждый столбец матрицы (зависимая переменная) против одного вектора столбца (независимая переменная), и сохранить коэффициенты и остатки. Вот пример данных и мой код:

gwthRatesAllCities06To08 <- matrix(1:60, nrow = 4, ncol = 15)
natGwthRates06To08 <- c(2,1,3,5)

for (i in 1 : ncol(gwthRatesAllCities06To08)) {
OLSEst[[i]]<- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
}

Однако приведенный выше код не дает мне того, что я хочу, не могли бы вы помочь мне выяснить причину? Спасибо заранее!

3 ответа

lm может регрессировать несколько векторов Y на одной правой стороне. Просто укажите левую часть, чтобы быть матрицей, столбцы которой являются векторами Y.

y <- matrix(1:60, nrow = 4, ncol = 15)
x <- c(2,1,3,5)

fm <- lm(y ~ x)

coef(fm) # the 15 columns of coef are the 15 sets of coefficients
resid(fm) # the 15 columns of resid are the 15 sets of residuals

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

OLSEst <- list()
for (i in 1 : ncol(gwthRatesAllCities06To08)) {
  OLSEst[[i]]<- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
}
mod <- OLSEst[[15]]
> mod$coefficients
       (Intercept) natGwthRates06To08 
        56.7714286          0.6285714 
> mod$residuals
          1           2           3           4 
-1.02857143  0.60000000  0.34285714  0.08571429 

Вам нужно сначала создать список вне цикла for. Затем добавьте в список свои результаты.

gwthRatesAllCities06To08 <- matrix(1:60, nrow = 4, ncol = 15)
natGwthRates06To08 <- c(2,1,3,5)
OLSEst <- list()

for (i in 1 : ncol(gwthRatesAllCities06To08)) {
  OLSEst[[i]]<- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
}

Если вы просто хотите получить коэффициенты, попробуйте взять те части объектов регрессии, которые вам нужны. Проверьте ниже, чтобы начать.

test <- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
test$coefficients
Другие вопросы по тегам