3

我正在估计 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

我有价格(PxPy)和数量(QxQy)数据,但我真正感兴趣的是W我没有数据的福利()。

我知道如何计算和编码约束最小二乘的所有矩阵公式(这将需要几行代码来获得标准的系数、标准误差、拟合度量等lm())。但我希望可能有一个现有的 R 函数(即可以对lm()函数执行的操作),这样我就不必编写所有这些代码。

4

2 回答 2

2

对于您指定的回归:

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然后我们可以使用以下公式拟合线性模型:

z ~ x + y + x:id
于 2016-09-04T15:38:55.960 回答
0

如果 x 和 y 值相同,则可以使用此模型:

lm( I(z1+z2)~ x +y )  # Need to divide coefficients by 2

如果它们是单独的数据,那么您可以在将 z2 重命名为 z1 后重新绑定这两个数据集。

于 2013-09-02T08:32:21.397 回答