约束最小二乘法

4 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)
Run Code Online (Sandbox Code Playgroud)

我想包括β系数log(pn)+log(pd)+log(ps)=1(总和为1)的线性约束.有没有一种简单的方法lm在R 中实现这个(可能在函数中)而不必使用constrOptim()函数?

Rob*_*man 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)
Run Code Online (Sandbox Code Playgroud)

如果b=coef(gas_b),则相关系数为

log(pn): b[4]
log(pd): b[5]
log(ps): 1 - b[4] - b[5]
Run Code Online (Sandbox Code Playgroud)