约束最小二乘法

时间:2009-10-11 19:37:49

标签: r lm

我在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的beta系数的线性约束(总和为1)。有没有一种简单的方法可以在R中实现这个(可能在lm函数中),而不必使用constrOptim()函数?

1 个答案:

答案 0 :(得分:7)

按如下方式修改回归:

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]