【发布时间】:2022-01-10 14:30:05
【问题描述】:
我正在寻求生成以下矩阵:
Θ = B + δIp ∈ Rp×p,其中 Ip 是单位矩阵,每个非对角项 在 B(对称矩阵)中独立生成,概率等于 0.5 0.1 或 0,概率为 0.9。选择参数 δ > 0 使得 Θ 是正定的。该矩阵被标准化为具有单位对角线(从协方差矩阵转换为相关矩阵)。
我认为我拥有大部分代码,但我不确定如何标准化矩阵以在 R 中在语法上具有单位对角线(理论上,为什么这是矩阵的一个有用特性)。
# set number of cols/rows
p <- 5
set.seed(123)
# generate matrix B with values of 0.5 given probabilities
B <- matrix(sample(c(0,0.5), p^2, replace=TRUE, prob=c(0.9,0.1)), p)
# call the matrix lower triangle, need a symmetric matrix
i <- lower.tri(B)
B[i] <- t(B)[i]
diag(B) <- rep(0, p)
# finding parameter delta, such that Θ is positive definite.
(delta <- -min(eigen(B, symmetric=TRUE, only.values=TRUE)$values))
# set theta (delta is 2.8802)
theta <- B + 2.89*(diag(p))
# now to standardize the matrix to have unit diagonals ?
【问题讨论】:
-
你只想要
theta <- B/delta + diag(p)吗?