混合高斯分布样本统计分析:超过 3 的概率仿真
首先,给出混合高斯混合 PDF 的表达式:
$$\ f(x)=\frac{1-\epsilon}{\sqrt{2\pi\sigma_1^2}}\exp\left(-\frac{(x-\mu_1)^2}{2\sigma_1^2}\right)+\frac{\epsilon}{\sqrt{2\pi\sigma_2^2}}\exp\left(-\frac{(x-\mu_2)^2}{2\sigma_2^2}\right)\ $$\
其中,$\mu_1$ 和 $\mu_2$ 分别为两个高斯分布的均值,$\sigma_1$ 和 $\sigma_2$ 分别为两个高斯分布的标准差,$\epsilon$ 为混合系数,表示第二个高斯分布在总体中的比重。
根据题目中的要求,我们可以先生成一组符合上述混合高斯分布的样本数据,并计算超过 3 的概率。具体步骤如下:
-
定义参数:$\mu_1=0$,$\mu_2=2$,$\sigma_1=1$,$\sigma_2$ 和 $\epsilon$ 根据题目要求进行调整。
-
生成样本数据:
N = 100000; // 样本数
x = zeros(N, 1);
for i = 1:N
if rand() <= epsilon
x(i) = mu_2 + sigma_2 * randn();
else
x(i) = mu_1 + sigma_1 * randn();
end
end
其中,rand() 函数生成一个 0~1 之间的随机数,如果小于等于 $\epsilon$,就从第二个高斯分布中生成样本数据,否则从第一个高斯分布中生成。
- 计算超过 3 的概率:
p = sum(abs(x) > 3) / N;
其中,sum(abs(x) > 3) 表示样本中绝对值大于 3 的个数,除以样本总数 N 即可得到超过 3 的概率。
- 对不同的 $\sigma_2$ 和 $\sigma_1$ 进行仿真分析:
sigma1_range = 0.1:0.1:2; // sigma1 取值范围
sigma2_range = 1:0.1:4; // sigma2 取值范围
P = zeros(length(sigma1_range), length(sigma2_range)); // 存储超过 3 的概率
for i = 1:length(sigma1_range)
for j = 1:length(sigma2_range)
sigma1 = sigma1_range(i);
sigma2 = sigma2_range(j);
if sigma2 <= sigma1
continue; // sigma2 必须大于 sigma1
end
f = @(x) (1-epsilon)*normpdf(x, mu_1, sigma1) + epsilon*normpdf(x, mu_2, sigma2); // PDF 函数
P(i, j) = integral(f, 3, inf); // 计算超过 3 的概率
end
end
其中,integral() 函数用于计算积分,这里用来计算超过 3 的概率。最后,我们可以使用 surf() 函数绘制三维图像,观察不同参数下的超过 3 的概率情况:
figure;
surf(sigma2_range, sigma1_range, P');
xlabel('\sigma_2');
ylabel('\sigma_1');
zlabel('P(|x|>3)');
完整代码如下:
原文地址: https://www.cveoy.top/t/topic/ouOf 著作权归作者所有。请勿转载和采集!