R:强制回归系数加起来为1

问题描述 投票:3回答:1

我试图运行一个简单的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)

谢谢!

r regression linear-regression restriction
1个回答
2
投票

β1+β2= 1

具有β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 - x1x1的系数为1。


β1+β2+β3= 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


β1+β2+β3+ ... = 1

我认为模式很清楚...您只需要从其余变量(x1x2x3)中减去一个变量...,并获得该变量的系数[C0 ],到1。


示例β1+β2= 1
x1

© www.soinside.com 2019 - 2024. All rights reserved.