我试着运行一个简单的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)
谢谢!
2条答案
按热度按时间euoag5mw1#
β 1 + β 2 = 1
要获得
β1 + β2 = 1
,您必须拟合的模型为那是
Y = α + x1+ β 2 *(x2-x1)+ β 3 * x3
代之以 * β 1 = 1-β 2 *;
x_new = x2 - x1
,并且x1
的系数为1。β 1 + β 2 + β 3 = 1
Y = α + x1+ β 2 *(x2-x1)+ β 3 *(x3-x1)
在替换
β1 = 1 - β2 - β3
之后β 1 + β 2 + β 3 +...= 1
我认为模式很清楚......您只需从剩余变量(
x2
、x3
、...
)中减去一个变量x1
,并使该变量的系数x1
为1。示例β 1 + β 2 = 1
ryhaxcpt2#
目标是残差平方和,它等于:
给出:
nls
的问题,其中B系数等于1减去A系数。检查
我们可以使用另一个答案中的
lm
方法来再次检查上述内容:给出:
I(A-B)
系数等于原始公式中A
的系数,减去1就是C
的系数,我们看到所有方法都得到相同的系数。