我想创建一个用于 glmnet 函数的设计矩阵。我的预测指标是球员姓名;当玩家i与玩家j进行比赛时,我希望该比赛的行在i列中具有 +1,在j列中具有 -1 。
例如,如果有三个玩家都互相玩,那么设计矩阵应该如下:
1 -1 0
1 0 -1
0 1 -1
我试过使用 model.matrix 但我不确定如何创建这个特定的设计矩阵 - 或者如果这个矩阵有更好的格式也有助于了解!
我想创建一个用于 glmnet 函数的设计矩阵。我的预测指标是球员姓名;当玩家i与玩家j进行比赛时,我希望该比赛的行在i列中具有 +1,在j列中具有 -1 。
例如,如果有三个玩家都互相玩,那么设计矩阵应该如下:
1 -1 0
1 0 -1
0 1 -1
我试过使用 model.matrix 但我不确定如何创建这个特定的设计矩阵 - 或者如果这个矩阵有更好的格式也有助于了解!
尝试这个:
num_players <- 4
matches <- t(combn(num_players, 2))
nr <- nrow(matches)
mtx <- matrix(0L, nrow = nr, ncol = num_players)
mtx[ cbind(seq_len(nr), matches[,1]) ] <- 1L
mtx[ cbind(seq_len(nr), matches[,2]) ] <- -1L
mtx
# [,1] [,2] [,3] [,4]
# [1,] 1 -1 0 0
# [2,] 1 0 -1 0
# [3,] 1 0 0 -1
# [4,] 0 1 -1 0
# [5,] 0 1 0 -1
# [6,] 0 0 1 -1