Наименьших квадратов - PullRequest
4 голосов
/ 11 октября 2009

Я подгоняю простую регрессию в R по потреблению газа на душу населения. Формулы регрессии выглядят так:

gas_b <- lm(log(gasq_pop) ~ log(gasp) + log(pcincome) + log(pn) +
            log(pd) + log(ps) + log(years), 
            data=gas)
summary(gas_b)

Я хочу включить линейное ограничение, чтобы бета-коэффициенты составляли log(pn)+log(pd)+log(ps)=1 (сумма к одному). Есть ли простой способ реализовать это (возможно, в функции lm) в R без использования функции constrOptim()?

1 Ответ

7 голосов
/ 12 октября 2009

Измените вашу регрессию следующим образом:

gas_b <- lm(log(gasq_pop) - log(ps) ~ log(gasp) + log(pcincome) +
  I(log(pn)-log(ps)) + I(log(pd)-log(ps)) + log(years), data=gas) 
summary(gas_b)

Если b=coef(gas_b), то соответствующие коэффициенты равны

log(pn): b[4]
log(pd): b[5]
log(ps): 1 - b[4] - b[5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...