我正在尝试使用R.3.3.1中的BradleyTerry2包在我的数据分析中包含特定于竞赛的变量(我还尝试使用R.2.11.1与旧版本的BradleyTerry2进行比较)。我面临的问题是我的预测变量没有得到适当的考虑。下面的例子向您展示了我的问题,使用CEMS数据来说明我的观点。
CEMS.BTmodel_01 <- BTm(outcome = cbind(win1.adj, win2.adj),
player1 = school1,
player2 = school2,
formula = ~ .. + WOR[student] * LAT[..],
refcat = "Stockholm",
data = CEMS)
summary(CEMS.BTmodel_01)使用这个模型,我们得到一个AIC = 5837.4,一个估计为LAT的相互作用。* WORstudent = 0.85771
现在,如果我在列表顶部添加一所新学校(图卢兹,LAT =1
Toulouse <- c(1,0,0,0,0,0,0)
Barcelona <- c(0,1,0,0,0,0,0)
London <- c(0,0,1,0,0,0,0)
Milano <- c(0,0,0,1,0,0,0)
Paris <- c(0,0,0,0,1,0,0)
St.Gallen <- c(0,0,0,0,0,1,0)
Stockholm <- c(0,0,0,0,0,0,1)
LAT <- c(1,1,0,1,1,0,0)
schools <- data.frame(Toulouse, Barcelona, London, Milano, Paris, St.Gallen, Stockholm, LAT)
rownames(schools) <- c("Toulouse", "Barcelona", "London", "Milano", "Paris", "St.Gallen", "Stockholm")
CEMS$schools <- schools我希望从分析中得到相同的结果,因为新的学校不会出现在数据集中。但我实际上得到了AIC = 5855.8,一个交互LAT。* WORstudent = 0.13199
摆弄数据,我的预测变量的名称(这里是学校的名称)看起来没有正确地考虑到我的比较数据,并与我的比较数据(这里是来自欧洲学生的成对比较)相匹配。相反,它们的顺序才是最重要的。
我做错了什么?
发布于 2016-08-29 16:20:25
CEMS$schools的行应与school1和school2因子的级别相匹配( CEMS$schools的行名实际上并未在代码中使用;第一行应与第一级相匹配,以此类推)。因此您需要更新school1和school2的级别
CEMS$preferences <-
within(CEMS$preferences, {
school1 <- factor(school1, rownames(CEMS$schools))
school2 <- factor(school2, rownames(CEMS$schools))
})
CEMS.BTmodel_02 <- BTm(outcome = cbind(win1.adj, win2.adj),
player1 = school1,
player2 = school2,
formula = ~ .. + WOR[student] * LAT[..],
refcat = "Stockholm",
data = CEMS)现在,模型如预期的那样等价:
> CEMS.BTmodel_01
Bradley Terry model fit by glm.fit
Call: BTm(outcome = cbind(win1.adj, win2.adj), player1 = school1, player2 = school2,
formula = ~.. + WOR[student] * LAT[..], refcat = "Stockholm",
data = CEMS)
Coefficients [contrasts: ..=contr.treatment ]:
..Barcelona ..London ..Milano
0.5044 1.6037 0.3538
..Paris ..St.Gallen WOR[student]yes
0.8741 0.5268 NA
LAT[..] WOR[student]yes:LAT[..]
NA 0.8577
Degrees of Freedom: 4454 Total (i.e. Null); 4448 Residual
(91 observations deleted due to missingness)
Null Deviance: 5499
Residual Deviance: 4912 AIC: 5837
> CEMS.BTmodel_02
Bradley Terry model fit by glm.fit
Call: BTm(outcome = cbind(win1.adj, win2.adj), player1 = school1, player2 = school2,
formula = ~.. + WOR[student] * LAT[..], refcat = "Stockholm",
data = CEMS)
Coefficients [contrasts: ..=contr.treatment ]:
..Toulouse ..Barcelona ..London
NA 0.5044 1.6037
..Milano ..Paris ..St.Gallen
0.3538 0.8741 0.5268
WOR[student]yes LAT[..] WOR[student]yes:LAT[..]
NA NA 0.8577
Degrees of Freedom: 4454 Total (i.e. Null); 4448 Residual
(91 observations deleted due to missingness)
Null Deviance: 5499
Residual Deviance: 4912 AIC: 5837https://stackoverflow.com/questions/39035013
复制相似问题