我估计R中的几个普通最小二乘线性回归。我想约束回归中的估计系数,使它们相同。例如,我有以下内容:
z1 ~ x + y
z2 ~ x + y
我希望第一次回归中y的估计系数等于第二次回归中x的估计系数。
有直接的方法吗?提前致谢。
更详细的修改
我正在尝试估计一个线性需求函数系统,其中相应的福利函数是二次的。福利函数的形式如下:
W = 0.5*ax*(Qx^2) + 0.5*ay*(Qy^2) + 0.5*bxy*Qx*Qy + 0.5*byx*Qy*Qx + cx*Qx + cy*Qy
因此,需求函数如下:
dW/dQx = Px = 2*0.5*ax*Qx + 0 + 0.5*bxy*Qy + 0.5*byx*Qy + 0 + cx
dW/dQx = Px = ax*Qx + 0.5*(bxy + byx)*Qy + cx
和
dW/dQy = Py = ay*Qy + 0.5*(byx + bxy)*Qx + cy
我想约束系统,使byx = bxy(福利函数中的叉积系数)。如果这种情况成立,则两个需求函数变为:
Px = ax*Qx + bxy*Qy + cy
Py = ay*Qy + bxy*Qy + cy
我有价格(Px
和Py
)和数量(Qx
和Qy
)数据,但我真正感兴趣的是福利({{ 1}})我没有数据。
我知道如何计算和编码约束最小二乘法的所有矩阵公式(这将花费相当多的代码行来获得W
标准的系数,标准误差,拟合度等等) 。但我希望可能存在一个现有的R函数(即可以对lm()
函数执行的操作),这样我就不必编写所有这些代码。
答案 0 :(得分:2)
对于您指定的回归:
Flask.config
我们可以引入一个分组因子:
Px = ax*Qx + bxy*Qy + cy
Py = ay*Qy + bxy*Qy + cy
我们还需要组合数据:
id <- factor(rep.int(c("Px", "Py"), c(length(Px), length(Py))),
levels = c("Px", "Py"))
然后我们可以使用z <- c(Px, Py) ## response
x <- c(Qx, Qy) ## covariate 1
y <- c(Qy, Qy) ## covariate 2
拟合线性模型,公式为:
lm
答案 1 :(得分:0)
如果x和y值相同,则可以使用此模型:
lm( I(z1+z2)~ x +y ) # Need to divide coefficients by 2
如果它们是单独的数据,那么您可以在将z2重命名为z1后重新绑定两个数据集。