R:随机切换矩阵中对角线外的符号

R: Randomly switch signs of the off-diagonals in a matrix

提问人:Leo96 提问时间:4/29/2021 更新时间:4/29/2021 访问量:39

问:

假设我生成以下矩阵

Sigma <- diag(x = 1, 100, 100)
Sigma[Sigma == 0] <- 0.25

所以在对角线上有“1”,在对角线上有“0.25”。如何随机更改对角线上的一些符号,使其具有 -0.25 和 0.25?

当然,人们可以循环这些元素,但我认为这不是一个优雅的解决方案

R 矩阵 统计数据 数据操作

评论


答:

1赞 Ronak Shah 4/29/2021 #1

一种方法是随机生成矩阵长度的 1 和 -1,将其乘以矩阵并将对角线变为 1。

Sigma <- Sigma * sample(c(1, -1), length(Sigma), replace = TRUE)
diag(Sigma) <- 1
Sigma