作者: 
killer01 (killer01)   
2018-04-22 12:40:42我是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
作者: 
killer01 (killer01)   
2018-04-23 02:55:00謝謝你! 我的疑問是兩個model都一樣, 只差在interactionterm 是模型外先建好存到context1, 另一個是直接在lm()裡面用 variA*variB 的方式形成.直接運算BIC, 兩個模型是一樣的, 但是用STEP()來做刪除,結果就不同了, 想問看看是哪邊沒學習到...(兩model逐步刪除的項目是不一樣的, 如您所說)