0

我有 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 列相同,但经过转换以具有相同的水平因子(以便函数可以工作)。我不确定我是否正确使用了这种替代方法,我之所以提到它,是因为在这种情况下,我还缺少一名球员(尽管是另一名球员)。

4

1 回答 1

0

在仔细阅读了该软件包的文档后,我发现在估算模型时,该函数会删除一个脚本/播放器/参赛者作为参考。它的值始终为 0。所以我的理解是,如果要进行任何进一步的分析,则必须找到删除了哪个玩家,然后将其重新引入数据框中,其能力值为 0。

于 2021-06-09T10:02:41.307 回答