具有斜率约束的线性回归


Answers:


24

我想在R中执行线性回归。我希望斜率在1.4到1.6之间。如何才能做到这一点?

(i)简单方法:

  • 拟合回归。如果在界限之内,那么您就完成了。

  • 如果不在边界内,则将斜率设置为最近的边界,然后

  • 将截距估计为所有观测值的平均值ÿ-一种X

(ii)更复杂的方法:在边坡上用方框约束的最小二乘法;许多优化例程都实现了盒约束,例如nlminb(R附带)。

编辑:实际上(如下面的示例中所述)在香草R中nls可以执行框约束;如示例所示,这确实非常容易。

您可以直接使用约束回归。我认为pcls来自软件包“ mgcv”的nnls功能和来自软件包“ nnls”的功能都可以。

-

编辑以回答后续问题-

我将向您展示如何将其与nlminbR一起使用,但是我意识到nls已经使用相同的例程(PORT例程)来实现约束最小二乘,因此下面的示例就是这种情况。

注意:在下面的示例中,是截距,b是斜率(统计中较常见的约定)。当我把它放在这里后,我意识到你是从另一边开始的。不过,相对于您的问题,我将保留示例“向后”。一种b

首先,设置一些“真”斜率在范围内的数据:

 set.seed(seed=439812L)
 x=runif(35,10,30)
 y = 5.8 + 1.53*x + rnorm(35,s=5)  # population slope is in range
 plot(x,y)
 lm(y~x)

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
     12.681        1.217  

...但是LS估计值远远超出了它,只是由随机变化引起的。因此,让我们使用约束回归nls

 nls(y~a+b*x,algorithm="port",
   start=c(a=0,b=1.5),lower=c(a=-Inf,b=1.4),upper=c(a=Inf,b=1.6))

Nonlinear regression model
  model: y ~ a + b * x
   data: parent.frame()
    a     b 
9.019 1.400 
 residual sum-of-squares: 706.2

Algorithm "port", convergence message: both X-convergence and relative convergence (5)

如您所见,您将在边界上得到一个斜率。如果将拟合模型传递给summary它,甚至会产生标准误差和t值,但我不确定它们的意义/可解释性。

ÿ-bX

 b=1.4
 c(a=mean(y-x*b),b=b)
       a        b 
9.019376 1.400000

这是相同的估计...

在下面的图中,蓝线是最小二乘,红线是约束的最小二乘:

约束线和LS线


谢谢您的回答,但是...您可以举一个使用这些功能的示例吗?
伊尼戈Hernáez受文者

1
+1在任何情况下都很难确定参数估计值的置信区间。
ub

@IñigoHernáezCorres看到我的答案的更新,在此说明了如何使用nls它。
Glen_b-恢复莫妮卡

+1两种连接方式的绝佳答案!
Haitao Du

15

Glen_b的第二种方法,使用带有方块约束的最小二乘法,可以通过岭回归更容易地实现。岭回归的解可以看作是拉格朗日回归,其权重向量的范数的大小(及其斜率)受到限制。因此,按照下面的胡布尔的建议,方法是减去趋势(1.6 + 1.4)/ 2 = 1.5,然后应用山脊回归并逐渐增加山脊参数,直到斜率的大小小于或等于0.1。

这种方法的好处是不需要花哨的优化工具,只需使用R(和许多其他软件包)中已经可用的ridge regresson。

但是Glen_b的简单解决方案(i)对我来说似乎很明智(+1)


5
这很聪明,但是您确定它会按说明工作吗?在我看来,适当的方法是消除趋势(1.6 + 1.4)/ 2 = 1.5,然后控制脊参数,直到斜率的绝对值小于或等于0.1。
ub

1
是的,这确实是一个更好的建议。如果对坡度的大小有限制,则使用岭回归方法确实更合适,这听起来像是一个很奇怪的问题!我的回答最初是受到Glen_b关于框约束的评论的启发,而岭回归基本上只是实现框约束的一种更简便的方法。
迪克兰有袋博物馆,

尽管我感谢您对我的评论的认可,但恕我直言,这分散了您回答内容的注意力。我们全力以赴,尽我们所能改善我们的工作,因此,您充分肯定了您对我的建议所采取的行动。为此,值得增加声誉。如果您要进行其他修改,请考虑通过删除多余的材料来简化文本。
whuber

编辑了多余的材料,但是我喜欢合作,并且总是寻求给合作者应有的声誉,并且在道德上仍然认为您应得一半的赞成票。; o)
Dikran有袋动物

10

一种

一种

该结果仍将给出感兴趣参数的可靠区间(当然,这些区间的意义将基于您先前关于斜率信息的合理性)。


+1,这也是我的第一个想法。我喜欢其他建议,但这对我来说似乎是最好的。
gung-恢复莫妮卡

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.