我有23个“玩家”的数据。他们中的一些人玩了一次或多次(但不是所有可能的对子)。我拥有的数据集(参见下面的dput )包括一个玩家对另一个玩家获胜和失败的次数。我用它来拟合一个使用BradleyTerry2包的BT模型。我的问题是,模型给了我22个玩家的系数,而不是23个。有人能帮我找出问题出在哪里吗?
下面是我的数据的dput (head)
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‘。
prep<-countsToBinomial(table(ju$winner, ju$loser))ju$winner和ju$loser是两列,其中行是单独的游戏,胜利者在第一列。我还尝试了以下代码来适应这个模型:
BTm(1, p1, p2, data=ju)在本例中,p1和p2与列winner和losser相同,但经过转换后具有相同的级别因子(以便函数可以工作)。我不确定我是否正确地使用了这个选项,我之所以提到它,是因为在这种情况下,我还缺少一个球员(尽管是另一个球员)。
发布于 2021-06-09 18:02:41
在仔细阅读该包的文档后,我发现在估计模型时,该函数删除了一个脚本/播放器/参赛者作为引用。它的值始终为0。所以我的理解是,如果你想做任何进一步的分析,你必须找到哪个玩家被移除,并在数据框中重新引入它,其能力的值为0。
https://stackoverflow.com/questions/67608740
复制相似问题