首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BradleyTerry2包中预测变量的问题

BradleyTerry2包中预测变量的问题
EN

Stack Overflow用户
提问于 2016-08-19 17:00:09
回答 1查看 63关注 0票数 1

我正在尝试使用R.3.3.1中的BradleyTerry2包在我的数据分析中包含特定于竞赛的变量(我还尝试使用R.2.11.1与旧版本的BradleyTerry2进行比较)。我面临的问题是我的预测变量没有得到适当的考虑。下面的例子向您展示了我的问题,使用CEMS数据来说明我的观点。

代码语言:javascript
复制
    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

代码语言:javascript
复制
    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

摆弄数据,我的预测变量的名称(这里是学校的名称)看起来没有正确地考虑到我的比较数据,并与我的比较数据(这里是来自欧洲学生的成对比较)相匹配。相反,它们的顺序才是最重要的。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-08-29 16:20:25

CEMS$schools的行应与school1school2因子的级别相匹配( CEMS$schools的行名实际上并未在代码中使用;第一行应与第一级相匹配,以此类推)。因此您需要更新school1school2的级别

代码语言:javascript
复制
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)

现在,模型如预期的那样等价:

代码语言:javascript
复制
> 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: 5837
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39035013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档