2011-12-21 42 views
3

我想迫使模型中的一个系数小于或等于零。力系数在R lm中为负数

nnls包允许你设置所有的系数等于或大于零,但我很遗憾,如何指定一个特定的系数小于零。

任何帮助将不胜感激。

+2

我对约束回归没有太多经验,但我的第一个想法是更改数据中相应变量的符号。然后> = 0约束应该达到你的目的(尽管你会让你的模型更加复杂)。 – joran 2011-12-21 16:59:01

回答

6

函数nnnplsthe same package中是“具有非负和非正约束的最小二乘法的实现”。

其第三个参数,con,允许一个指定的系数应该是非正:

长度 m

数字向量,其中元件i是负当且仅当元素的溶液矢量xi应该被限制为非正数,而不是非负数值。

+0

你介意举个例子吗?我对nnpls的帮助页面有点困惑。 – 2011-12-21 18:02:53

+0

没有什么像老式的RTFM,呃? :-)。 Th'我不得不承认,首先要看哪些*包*并不总是显而易见的。这里有一个'sos'软件包的插件,它为你找到工具和软件包做了很好的工作。 – 2011-12-21 18:04:42

+0

@ BurtonGuster:手册有以下例子:'nnnpls(A,matdat [,i],con = c(1,-1,1))''。前两个参数与你提供的'nnls()'完全相同,第三个参数正如我在我的答案中引用的段落中所解释的那样。 – NPE 2011-12-21 18:05:47

0

封装ic.infer可能适合此任务。

从包小插图: “以线性模型和多变量正常情况下,在满足线性不等式 形式先验信息可能遇到,或线性不等式的假设可以进行 统计测试ic.infer已发展至R包。支持不平等约束 估计和测试这种情况。“