作者killer01 (killer01)
看板R_Language
标题[问题] 使用STEP寻找最小BIC
时间Sun Apr 22 12:40:42 2018
我是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://webptt.com/cn.aspx?n=bbs/R_Language/M.1524372044.A.653.html
1F:推 andrew43: 你可以注意并比较step後逐步删去的项目应该就可以明白 04/22 13:31
2F:→ andrew43: 。 04/22 13:31
3F:推 andrew43: 而且你的例子本来就可能会不一样结果的...你为什麽会觉 04/22 13:33
4F:→ andrew43: 得会一样呢? 04/22 13:33
5F:→ andrew43: 先直接下step但储存最终模型,可以看见逐次删除的过程 04/22 13:44
6F:→ andrew43: 。 04/22 13:44
7F:→ andrew43: 先直接下step但「不」储存最终模型 04/22 22:42
8F:→ killer01: 谢谢你! 我的疑问是两个model都一样, 只差在interaction 04/23 02:55
9F:→ killer01: term 是模型外先建好存到context1, 另一个是直接在lm() 04/23 02:56
10F:→ killer01: 里面用 variA*variB 的方式形成. 04/23 02:57
11F:→ killer01: 直接运算BIC, 两个模型是一样的, 但是用STEP()来做删除, 04/23 02:58
12F:→ killer01: 结果就不同了, 想问看看是哪边没学习到...(两model逐步 04/23 03:00
13F:→ killer01: 删除的项目是不一样的, 如您所说) 04/23 03:00
14F:→ andrew43: 因为lm(y~A*B)一定先试删AB交互作用,但lm(y~A+B+AB)则 04/23 03:30
15F:→ andrew43: 可以先试删A和B和AB。总之,删除的优先顺序二模型不同 04/23 03:32
16F:→ andrew43: 你的第二个模型在存在交互作用下删除了主效应,这是否合 04/23 03:33
17F:→ andrew43: 适要小心点。 04/23 03:34
18F:→ andrew43: 更正:「你的第『一』个...」 04/23 03:35
19F:→ andrew43: 在R中lm()/glm()/aov()这类建模方法都会优先删去交互作 04/23 03:37
20F:→ andrew43: 用而不容许交互作用存在时删去主效果,除非你自己先生成 04/23 03:38
21F:→ andrew43: 交互作用项。 04/23 03:38
22F:→ killer01: 谢谢! 这样我就了解了! 感谢你! 04/23 06:27