如何在 R 中生成特定的设计矩阵?

How to generate a specific design matrix in R?

我想创建一个用于 glmnet 函数的设计矩阵。我的预测指标是球员的名字;当玩家 i 与玩家 j 比赛时,我希望该比赛的行在 i[ 列中有 +1 =21=] 和 j.

列中的 -1

比如有3个玩家互相对战,那么设计矩阵应该是这样的:

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