2011-12-21 39 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包。支持不平等約束 估計和測試這種情況。「