从正态分布混合分布中生成大小为1000的随机样本。混合组分具有N(0,1)和 N(3,1)分布,混合概率为p1和p2=1-p1。解题并用R语言写出相关代码,绘制出图像
时间: 2024-04-17 14:28:50 浏览: 161
混合正态分布参数极大似然估计的EM算法.pdf
5星 · 资源好评率100%
要从正态分布混合分布中生成大小为1000的随机样本,可以按照以下步骤进行:
1. 定义混合分布的参数,包括均值(mu1、mu2)、标准差(sigma1、sigma2)、混合概率p1。
2. 生成一个大小为1000的均匀分布随机样本,作为混合分布的选择变量。
3. 对于每个选择变量值,根据混合概率p1决定使用哪个正态分布组分。
4. 从所选的正态分布中抽取一个随机数作为生成的样本。
5. 重复步骤3和步骤4,直到生成1000个样本。
以下是使用R语言实现上述步骤的代码:
```R
# 设置混合分布参数
mu1 <- 0
sigma1 <- 1
mu2 <- 3
sigma2 <- 1
p1 <- 0.5
# 生成选择变量
choices <- runif(1000)
# 生成样本
samples <- numeric(1000)
for (i in 1:1000) {
if (choices[i] <= p1) {
samples[i] <- rnorm(1, mu1, sigma1)
} else {
samples[i] <- rnorm(1, mu2, sigma2)
}
}
# 绘制样本的直方图
hist(samples, freq = FALSE, breaks = "FD", xlim = c(-5, 8), ylim = c(0, 0.4), main = "Mixture Distribution")
curve(p1 * dnorm(x, mu1, sigma1) + (1 - p1) * dnorm(x, mu2, sigma2), from = -5, to = 8, add = TRUE, col = "red", lwd = 2)
```
上述代码中,我们定义了混合分布的参数,并使用runif函数生成了选择变量。然后,根据选择变量的值,选择使用哪个正态分布组分进行抽样,最后得到了1000个样本。最后,我们绘制了样本的直方图,并在图中添加了混合分布的曲线。
阅读全文