我试图运行一个简单的OLS回归,并限制两个变量的系数之和为1。
我想要:
Y = α + β1 * x1 + β2 * x2 + β3 * x3,
where β1 + β2 = 1
我发现了如何在系数之间建立关系,例如:
β1 = 2* β2
但是我还没有找到如何进行限制的方法:
β1 = 1 - β2
在这个简单的示例中我将如何做?
data <- data.frame(
A = c(1,2,3,4),
B = c(3,2,2,3),
C = c(3,3,2,3),
D = c(5,3,3,4)
)
lm(formula = 'D ~ A + B + C', data = data)
谢谢!
具有β1 + β2 = 1
您必须适合的模型是
fit <- lm(Y ~ offset(x1) + I(x2 - x1) + x3, data = df)
即
Y =α+ x1 +β2*(x2-x1)+β3* x3
替换β1= 1-β2]后>; x_new = x2 - x1
,x1
的系数为1。
fit <- lm(Y ~ offset(x1) + I(x2 - x1) + I(x3 - x1), data = df)
Y =α+ x1 +β2*(x2-x1)+β3*(x3-x1)
替换
β1 = 1 - β2 - β3
后
我认为模式很清楚...您只需要从其余变量(x1
,x2
,x3
)中减去一个变量...
,并获得该变量的系数[C0 ],到1。
x1