r - 在 R 中使用 uniform(0,1) 生成 N(0,1)

标签 r statistics simulation probability normal-distribution

我正在尝试使用 uniform(0,1) 生成 N(0,1) 进行模拟,但无法运行代码。

首先,我的 x 是通过使 X 成为法线 CDF 的主题,然后得出直方图来找到的。然后施加一条正态曲线以查看它是否适合。下面是我的代码。

sigma=1; mu=0
u<-runif(n)
x<-mu + sqrt(2*sigma(log(u*sigma*sqrt(2*pi))))
hist(x, Freq=F)
xpt<-seq(-5,5,0.1)
ypt<-dnorm(xpt,0,1)
lines(xpt,ypt,col=2)

最佳答案

您似乎反转了 PDF(概率密度函数)而不是 CDF(累积密度函数)。

实际上,正态随机变量不是用逆 CDF 生成的,因为它的 CDF 不是封闭形式。

查看Box-Muller 变换。您模拟两组独立的均匀随机变量:

u <- runif(1000)
v <- runif(1000)
x <- sqrt(-2 * log(u)) * cos(2 * pi * v)
# y <- sqrt(-2 * log(u)) * sin(2 * pi * v)

那么x来自N(0, 1)(x, y)是二元正态分布,均值为零且恒等协方差。

关于r - 在 R 中使用 uniform(0,1) 生成 N(0,1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43618421/

相关文章:

c++ - 模拟逗号/点按键

r - 如何在 SageMaker Notebook 实例上安装 R 包?

python - Pandas 方差和标准差结果与手动计算不同

r - r 如何计算非数值数据的标准差和方差?

python - 使用 Scipy 进行卡方检验的 P 值

Cooja 模拟器中的 Java 结果 134

Python矢量化,如何使用numpy获取每一行的所有索引

r - 避免在 sweave/pgfsweave 编译期间显示数字

r - ArcView 和/或 R 是否使用显卡 (GPU) 加速

r - 通过分隔符解析文本文件并使用R输出多个文件