繁体   English   中英

从均匀分布到正态分布

[英]From Uniform distribution to Normal distribution

我正在尝试生成正态分布,但我不想在mvrnorm中指定n = 100 ,而是想使用正态分布中生成的数据

mu1=c(0,1) 
Sigma= matrix(c(1,0.5,0.5,1),ncol=2) 
set.seed(1234)
X1_u=runif(100)
set.seed(1234)
X1_distribution=mvrnorm(X1_u,mu=mu1,Sigma=Sigma)

我在这一行的错误

X1_distribution=mvrnorm(X1_u,mu=mu1,Sigma=Sigma)

您可以使用逆 CDF 方法生成独立的正态随机变量,然后使用特征分解生成所需的多正态分布:

mu1 <- c(0,1) 
Sigma <- matrix(c(1,0.5,0.5,1),ncol=2) 
n <- 10000 # Number of values to be generated

Z <- replicate(length(mu1), qnorm(runif(n)))
# Z is the independent normal random variables:

E <- eigen(Sigma)
L <- E[[2]] %*% diag(sqrt(E[[1]])) %*%t(E[[2]])
X <- t(t(Z %*% L) + mu1) # The desired result:

colMeans(X)
[1] 0.0008338121 0.9921517224

cov(X)
          [,1]      [,2]
[1,] 1.0070731 0.5128771
[2,] 0.5128771 1.0202561

plot(X[,1]);
plot(X[,2])

plot(density(X))
plot(X)

在此处输入图像描述

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM