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