gpt4 book ai didi

r - 使用 mvrnorm 在 R 中创建多正态数据

转载 作者:行者123 更新时间:2023-12-04 15:51:56 24 4
gpt4 key购买 nike

我正在使用 mvrnorm从均值为 mu <- rep(0,4) 的多正态分布生成数据和 Sigma是一些正定对称矩阵。但是,我发现我生成的向量中的最后一个元素始终是 0 ,关于这是为什么的任何想法?

> mvrnorm(n = 1, mu, Sigma, tol = 1e-6, empirical = FALSE, EISPACK = FALSE)
[1] 0.1813268 -0.8993918 0.7461007 0.0000000
> mvrnorm(n = 1, mu, Sigma, tol = 1e-6, empirical = FALSE, EISPACK = FALSE)
[1] 3.2539025 2.9855514 0.7313427 0.0000000
> mvrnorm(n = 1, mu, Sigma, tol = 1e-6, empirical = FALSE, EISPACK = FALSE)
[1] -0.8133201 -1.0011971 -0.3800518 0.0000000

提前致谢!

编辑:感谢您的回复,是的,我检查了 Sigma ,它有问题。

最佳答案

原因是您的 Sigmatol = 1e-6 下未被视为满秩。但是,mvrnorm 进行排名检测的方式有点奇怪。查看 MASS::mvrnorm 内部:

eS <- eigen(Sigma, symmetric = TRUE)
ev <- eS$values
if (!all(ev >= -tol * abs(ev[1L])))
stop("'Sigma' is not positive definite")
X <- matrix(rnorm(p * n), n)
#[...omitted...]
X <- drop(mu) + eS$vectors %*% diag(sqrt(pmax(ev, 0)), p) %*% t(X)

代替

ev >= tol * abs(ev[1L])

确实如此

ev >= -tol * abs(ev[1L])

因此,您必须具有负特征值才能获得秩亏。

关于r - 使用 mvrnorm 在 R 中创建多正态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53531670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com