使用mvrnorm在R中创建多法线数据

使用mvrnorm在R中创建多法线数据,r,R,我使用mvrnorm从多正态分布中生成数据,平均值mu,原因是你的Sigma在tol=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 <-

我使用
mvrnorm
从多正态分布中生成数据,平均值
mu,原因是你的
Sigma
tol=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])

因此,你必须有负的特征值才能得到秩亏。

你的
Sigma
似乎有问题。这个例子适用于
Sigma=diag(4)
。这里与Ozan147相同
ev >= tol * abs(ev[1L])
ev >= -tol * abs(ev[1L])