首页 文章

R [重复]中的约束线性回归系数

提问于
浏览
3

这个问题在这里已有答案:

我估计R中的几个普通最小二乘线性回归 . 我想约束回归中的估计系数,使它们相同 . 例如,我有以下内容:

z1 ~ x + y
z2 ~ x + y

我希望第一次回归中y的估计系数等于第二次回归中x的估计系数 .

有没有直接的方法来做到这一点?提前致谢 .

More detailed edit

我正在尝试估计一个线性需求函数系统,其中相应的福利函数是二次的 . 福利功能的形式如下:

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() 函数执行的操作),这样我就不必编写所有这些代码了 .

2 回答

  • 0

    对于您指定的回归:

    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
    
  • 2

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

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

    如果它们是单独的数据,则可以在将z2重命名为z1之后对两个数据集进行重新绑定 .

相关问题