[問題] 取出Residual再跑一次Regression

作者: developme223 (allen)   2015-12-01 17:28:36
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
請簡略描述你所要做的事情,或是這個程式的目的
程式碼:
model.1 <- lm(TAC ~ 0 +TA +REC +PPE ,data=merge.data.3)
model.2 <- lm(merge.data.3$RIR ~ model.1$residual)
其中,
merge.data.3 大概資料型態:
Code RIR TAC TA REC PPE
1 20 200 0.5 . .
2 30 . . . .
.
.
.
533 . . . . .
先跑一個簡單線性回歸模型(model.1),取出此模型之殘差,
再跑一次簡單線性回歸(model.2),但此時殘差(model.1$residual)
的排列與原先的data.frame不同(無法執行,跑出Variable lengths differ)
有嘗試用cbind與data.frame重組資料,但好像也無法解決,想請教各位高手

[關鍵字]:
作者: celestialgod (天)   2015-12-01 17:33:00
model.1$residual長度不為533?先確認模型1的殘差是否長度跟原本data.frame列數箱異
作者: locka (locka)   2015-12-01 18:14:00
我想您應該是做model1時有產生NA(如果有的話summary(model1)會告訴你due to singularities…blabla),NA的資料會被略過,所以該model計算的殘差個數跟原始資料筆數會不同。其中一個可能原因是解釋變數有共線性問題,建議您再檢查一下您的迴歸模型~
作者: developme223 (allen)   2015-12-02 11:44:00
原本的model.1所有的解釋變數及被解釋變數length數皆為533但跑完回歸後,summary(model.1) 出現23observationdeleted due to missingnesslength(model.1$residual)=510不過用model.1$residual看整個殘差就是533個l大,如果是完全共線性的話,應該估計係數值跑不出來,與樣本數好像沒關係(?)
作者: celestialgod (天)   2015-12-02 12:05:00
所以是你有23個觀察值全部都是NA更正 有NA所以你把沒NA的觀察值挑出來 fit模型就好了
作者: developme223 (allen)   2015-12-02 12:48:00
但我用model.1$residual或cbind(model.1$residual)觀看資料,都還是533個樣本
作者: celestialgod (天)   2015-12-02 12:51:00
所以問題出在哪= =?如果長度還是533就沒有問題啦
作者: developme223 (allen)   2015-12-02 13:04:00
問題出在我直接用殘差跑,還是顯示變數長度相異。在想是不是資料型態排列的關係。
作者: celestialgod (天)   2015-12-02 13:25:00
沒資料 我也無從抓藥了(攤手
作者: locka (locka)   2015-12-02 13:44:00
既然length(model1.1$residual)=510,為什麼你會說用model1.1$residual是533?你是怎麼看的?如果訊息說deleted due to missingness即代表你有樣本是無法fit model產出預測值,那當然會沒辦法計算殘差了如果還是想要把第一個模型的殘差加入第二個模型,你必須要1.把模型2中對應到模型1中missing的那幾筆資料刪除2.解決missing 問題(depends on資料特性)
作者: developme223 (allen)   2015-12-02 13:56:00
cbind(model.1$residual)直接觀察每個殘差值,共533個,並沒有NA的數字存在。
作者: celestialgod (天)   2015-12-02 14:20:00
沒資料都只能憑空想像,原PO真的想解決就上傳資料吧
作者: allen1985 (我要低調 拯救形象)   2015-12-02 15:16:00
與其憑空亂猜 有資料應該幾分鐘就有神人幫你debug了btw 你是想fit一個沒有intercept的迴歸線嗎
作者: developme223 (allen)   2015-12-02 20:19:00
各位抱歉,剛發現是因為各個解釋變數有NA值,才造成殘差有23個NA值,因為model.1$residual不會顯示NA值所以才沒發現有NA值。想問有沒有辦法讓回歸結果出現NA值,即剛好533列數感謝各位。
作者: celestialgod (天)   2015-12-02 21:02:00
直接na.omit再去fit model就好了
作者: locka (locka)   2015-12-02 21:20:00
其實不是很了解為什麼要用model.1的殘差去跟別人作迴歸,而且還是model.2還是用一樣的資料?(c大的na.omit應該是正解)
作者: developme223 (allen)   2015-12-02 21:43:00
排除掉X1 X2 X3 對Y的影響,再用Y去解釋新的變數。跟用一樣的資料無關,就只是很簡單的變數探討。
作者: allen1985 (我要低調 拯救形象)   2015-12-04 01:02:00
這樣只排除掉x1x2x3對y “線性”的影響
作者: andrew43 (討厭有好心推文後刪文者)   2015-12-04 03:50:00
to locka, 有些permutation test這樣做, 也有些是特別的目的,例如把 y~x 的殘差視為 x 相同下 y 的中心化值有需要了解這種應用可以開一個新的討論。

Links booklink

Contact Us: admin [ a t ] ucptt.com