我有 23 名“球员”的数据。他们中的一些人(但不是每对可能的对子)一次或多次交手。我拥有的数据集(见下面的 dput)包括一个玩家赢和输给另一个玩家的次数。我用它来拟合使用 BradleyTerry2 包的 BT 模型。我遇到的问题是该模型为我提供了 22 名玩家而不是 23 名的系数。谁能帮我找出问题所在,好吗?
以下是我的数据(头)的输入
structure(list(player1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("a12TTT.pdf",
"a15.pdf", "a17.pdf", "a18.pdf", "a21.pdf", "a2TTT.pdf", "a5.pdf",
"B11.pdf", "B12.pdf", "B13.pdf", "B22.pdf", "B24.pdf", "B4.pdf",
"B7.pdf", "B8.pdf", "cw10-1.pdf", "cw15-1TTT.pdf", "cw17-1.pdf",
"cw18.pdf", "cw3.pdf", "cw4.pdf", "cw7_1TTT.pdf", "cw13-1.pdf"
), class = "factor"), player2 = structure(c(4L, 5L, 8L, 9L, 10L,
12L), .Label = c("a12TTT.pdf", "a15.pdf", "a17.pdf", "a18.pdf",
"a21.pdf", "a2TTT.pdf", "a5.pdf", "B11.pdf", "B12.pdf", "B13.pdf",
"B22.pdf", "B24.pdf", "B4.pdf", "B7.pdf", "B8.pdf", "cw10-1.pdf",
"cw15-1TTT.pdf", "cw17-1.pdf", "cw18.pdf", "cw3.pdf", "cw4.pdf",
"cw7_1TTT.pdf", "cw13-1.pdf"), class = "factor"), win1 = c(0,
1, 1, 1, 2, 0), win2 = c(1, 1, 0, 1, 0, 2)), row.names = c(NA,
6L), class = "data.frame")
我正在使用的代码:
BTm(cbind(win1,win2), player1, player2, data= prep)
我也试过
BTm(cbind(win1,win2), player1, player2, ~player, id="player", data= prep)
它给了我相同的结果(即缺少相同的玩家,其余的 22 个系数相同)。
如果这是相关的,我使用下面的代码创建了“准备”。
prep<-countsToBinomial(table(ju$winner, ju$loser))
ju$winner 和 ju$loser 是两列,其中行是个人游戏,获胜者在第一列。我还尝试了以下代码来拟合模型:
BTm(1, p1, p2, data=ju)
在这种情况下,p1 和 p2 与 winner 和 losser 列相同,但经过转换以具有相同的水平因子(以便函数可以工作)。我不确定我是否正确使用了这种替代方法,我之所以提到它,是因为在这种情况下,我还缺少一名球员(尽管是另一名球员)。