如何使用回归确定一个系数并拟合其他系数


11

我想手动固定某个系数,例如,然后将系数拟合到所有其他预测变量,同时在模型中保留。β1=1.0β1=1.0

如何使用R实现此目的?glmnet如果可能的话,我特别想与LASSO()合作。

或者,如何将这个系数限制在特定范围内,例如?0.5β11.0


要在拟合系数上指定框约束,在glmnet中有参数lower.limits和upper.limits,对吗?
Tom Wenseleers

Answers:


4

您需要使用如下offset参数:

library(glmnet)
x=matrix(rnorm(100*20),100,20)
x1=matrix(rnorm(100),100,1)
y=rnorm(100)
fit1=glmnet(x,y,offset=x1)
fit1$offset
print(fit1)

关于范围...我认为尚未在中实现glmnet。如果他们使用某种数值方法,则可能需要深入研究R代码并尝试将其限制在那儿,但是您将需要一个良好而扎实的编程背景。


2
什么是offset真正在做什么?1.1*x1问题的价值如何确定?
ub

我在glmnet中阅读了有关“偏移”的文档,但我仍然不确定它的作用。我找不到任何很好的例子,但是大多数参考泊松过程。为什么使用1.1 * x1?
raco 2014年

我以为他将系数固定为。我刚刚编辑了答案。该偏移量是在它的系数不被模型估计而被假定为具有值1的术语β1=1.1
统计

我对这个答案很满意。我可以遍历不同的偏移“系数”并比较模型。谢谢!
raco

1
至于offsetglmnet包装,通过统计所提供的答案无厘头我。当我运行fit1 beta)]时,看不到任何。您能否阐明示例中的偏移量是如何工作的?对于Beta的范围,可以使用和参数。β 1 = 1.0beta[,ncol(fit1β1=1.0lower.limitsupper limits
马里奥·努涅斯

9

好吧,让我们考虑一下。你有:

Y=b0+b1x1+b2x2+e

(为了简单)您想强制所以b1=1

Y=b0+x1+b2x2+e

因此您只需从两边减去就可以了:x1

Ynew=Yx1=b0+b2x2+e

然后可以估算。b2


2
这是简单的部分(我记得在其他线程中已经解决过)。将系数限制在一定范围内怎么办?当估计值位于约束区域的边界上时,此问题特别困难的部分是获得良好的置信度限制。
whuber

2
这肯定更难。我错过了帖子的结尾。但是我认为我应该保留我的答案,因为它确实回答了部分问题
彼得·弗洛姆-恢复莫妮卡

如果这是否仍然可以推广?令而不是1,,其中是由OLS回归选择的系数。β 1 = 0.75 ý Ñ Ê 瓦特= ý - 0.75 X 1 = β 0 + β 1 ' - 0.75 X 1 + β 2 X 2 + ε β 1 'β11β1=0.75Ynew=Y.75x1=β0+(β10.75)x1+β2x2+ϵβ1
raco

1
是的,如果固定为.75,那么按照您说的去做就行了。但是正如@whuber所指出的,这是这个问题的简单部分
Peter Flom-恢复莫妮卡

2
@whuber,在贝叶斯框架中,您可以使用“大都会”步骤扔掉超出范围的任何系数,或者可以从截断的多元正态分布中抽样。
约翰

3

关于将系数约束在一个范围内,贝叶斯估计方法是实现此目的的一种方法。

特别地,人们将依赖于马尔可夫链蒙特卡洛。首先,考虑吉布斯采样算法,这是在没有限制的情况下如何将MCMC放入贝叶斯框架中。在Gibbs采样中,在算法的每个步骤中,您将根据数据和所有其他参数,从每个参数(或一组参数)的后验分布中采样。维基百科提供了一种很好的方法总结。

限制范围的一种方法是应用Metropolis-Hastings步骤。基本思想是简单地抛出边界之外的任何模拟变量。然后,您可以继续进行重新采样,直到达到您的要求为止,然后再进行下一次迭代。不利的一面是,您可能在许多次仿真中陷入困境,从而降低了MCMC的速度。最初由John Geweke几篇 论文中开发并由Rodriguez-Yam,Davis,Sharpe扩展到论文中的另一种方法是从受约束的多元正态分布中进行模拟。这种方法可以处理对参数的线性和非线性不等式约束,我已经取得了一些成功。


要在拟合系数上指定框约束,在glmnet中有参数lower.limits和upper.limits,对吗?
Tom Wenseleers

@TomWenseleers我的回答更为普遍。有关的某些其他答案glmnet
约翰·约翰·

2

我不熟悉LASSO或glmnet,但是lavaan(“潜在变量分析”的简称)促进了同时具有等式约束和单界不等式约束的多元回归模型(请参阅本PDF第7页的表,“ lavaan:R包”)用于结构方程建模”)。我不知道您是否可以在系数上同时设置上限和下限,但是也许可以用单独的线添加每个上限,例如:

Coefficient>.49999999
Coefficient<1.0000001

当然,如果要在拟合模型之前对所有内容进行标准化,则不必担心在回归系数上加上1的上限。我想说,在这种情况下,最好不要这样做,以防万一出问题了!(lavaan 仍处于测试阶段毕竟...我已经看到了我自己的用途有限,它的一些微腥,结果迄今。)


要在拟合系数上指定框约束,在glmnet中有参数lower.limits和upper.limits,对吗?
Tom Wenseleers
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.