[問題] 使用STEP尋找最小BIC

看板R_Language作者 (killer01)時間6年前 (2018/04/22 12:40), 編輯推噓2(2020)
留言22則, 2人參與, 6年前最新討論串1/1
我是R新手, 第一次使用這個語言. 使用STEP function 尋找最小的BIC, 在建立模型時 我新增了一些 interaction term 到模型中, context1$abilsq <- (context1$abil)^2 context1$educsq <- (context1$educ)^2 context1$expersq <- (context1$exper)^2 context1$abileduc <- context1$abil*context1$educ context1$abilexper<- context1$abil*context1$exper context1$educexper<- context1$educ*context1$exper model2A <- lm(log(wage)~abil+educ+exper+abilsq+educsq +expersq+abileduc+abilexper+educexper , data = context1) model2B <- lm(log(wage)~abil+educ+exper+abilsq+educsq +expersq+abil*educ+abil*exper+educ*exper , data = context1) 兩個模型主要的差別在於 interaction term 有無使用* model2minBIC <- step(model2A, direction = "backward", k = log(nrow(context1))) model2minBIC <- step(model2B, direction = "backward", k = log(nrow(context1))) 執行結果似乎 model2B 可以跑出比較小的值, 且兩者跑出來的結果也不一樣. 下面是model2B的結果. Step: AIC=-1545.67 log(wage) ~ exper + abileduc + educexper Df Sum of Sq RSS AIC <none> 342.06 -1545.7 - abileduc 1 13.185 355.25 -1506.3 - exper 1 17.853 359.91 -1490.2 - educexper 1 27.377 369.44 -1458.1 下面是model2A的結果 Step: AIC=-1539.35 log(wage) ~ abil + educ + exper + educ:exper Df Sum of Sq RSS AIC <none> 341.84 -1539.3 - educ:exper 1 2.8843 344.72 -1536.1 - abil 1 10.3991 352.24 -1509.6 想問是什麼原因造成兩個跑出來的結果會不一樣... 謝謝! [關鍵字]: BIC, step -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 97.99.89.205 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1524372044.A.653.html

04/22 13:31, 6年前 , 1F
你可以注意並比較step後逐步刪去的項目應該就可以明白
04/22 13:31, 1F

04/22 13:31, 6年前 , 2F
04/22 13:31, 2F

04/22 13:33, 6年前 , 3F
而且你的例子本來就可能會不一樣結果的...你為什麼會覺
04/22 13:33, 3F

04/22 13:33, 6年前 , 4F
得會一樣呢?
04/22 13:33, 4F

04/22 13:44, 6年前 , 5F
先直接下step但儲存最終模型,可以看見逐次刪除的過程
04/22 13:44, 5F

04/22 13:44, 6年前 , 6F
04/22 13:44, 6F

04/22 22:42, 6年前 , 7F
先直接下step但「不」儲存最終模型
04/22 22:42, 7F

04/23 02:55, 6年前 , 8F
謝謝你! 我的疑問是兩個model都一樣, 只差在interaction
04/23 02:55, 8F

04/23 02:56, 6年前 , 9F
term 是模型外先建好存到context1, 另一個是直接在lm()
04/23 02:56, 9F

04/23 02:57, 6年前 , 10F
裡面用 variA*variB 的方式形成.
04/23 02:57, 10F

04/23 02:58, 6年前 , 11F
直接運算BIC, 兩個模型是一樣的, 但是用STEP()來做刪除,
04/23 02:58, 11F

04/23 03:00, 6年前 , 12F
結果就不同了, 想問看看是哪邊沒學習到...(兩model逐步
04/23 03:00, 12F

04/23 03:00, 6年前 , 13F
刪除的項目是不一樣的, 如您所說)
04/23 03:00, 13F

04/23 03:30, 6年前 , 14F
因為lm(y~A*B)一定先試刪AB交互作用,但lm(y~A+B+AB)則
04/23 03:30, 14F

04/23 03:32, 6年前 , 15F
可以先試刪A和B和AB。總之,刪除的優先順序二模型不同
04/23 03:32, 15F

04/23 03:33, 6年前 , 16F
你的第二個模型在存在交互作用下刪除了主效應,這是否合
04/23 03:33, 16F

04/23 03:34, 6年前 , 17F
適要小心點。
04/23 03:34, 17F

04/23 03:35, 6年前 , 18F
更正:「你的第『一』個...」
04/23 03:35, 18F

04/23 03:37, 6年前 , 19F
在R中lm()/glm()/aov()這類建模方法都會優先刪去交互作
04/23 03:37, 19F

04/23 03:38, 6年前 , 20F
用而不容許交互作用存在時刪去主效果,除非你自己先生成
04/23 03:38, 20F

04/23 03:38, 6年前 , 21F
交互作用項。
04/23 03:38, 21F

04/23 06:27, 6年前 , 22F
謝謝! 這樣我就瞭解了! 感謝你!
04/23 06:27, 22F
文章代碼(AID): #1Qt19CPJ (R_Language)