【学习笔记】帕累托分布随机模拟抽样

在生成帕累托分布的随机样本时,通常使用的是 逆变换采样法(Inverse Transform Sampling),而不是直接代入概率密度函数(PDF)。具体来说,是通过均匀分布的随机数转换得到的。以下是详细解释和代码示例:


1. 帕累托分布的生成原理

帕累托分布的 累积分布函数(CDF) 为:
F(\varphi) = 1 - \left( \frac{\varphi_{\text{min}}}{\varphi} \right)^k \quad \text{(其中 } \varphi \geq \varphi_{\text{min}} \text{)}

通过 逆变换采样法,我们可以:

  1. 生成均匀分布的随机数 U \sim \text{Uniform}(0,1)
  2. 利用CDF的逆函数F^{-1}(U) 转换为帕累托分布的样本:
    \varphi = \varphi_{\text{min}} \cdot (1 - U)^{-1/k}

为什么不用概率密度函数(PDF)直接生成?

  • PDF仅描述概率密度,无法直接生成随机样本。
  • CDF的逆变换是更高效且精确的方法(适用于可解析求逆的分布)。

2. MATLAB/Python 代码实现

MATLAB

% 参数设置
num_samples = 1000;   % 样本数
phi_min = 1.0;        % 最小生产率
k = 2.5;              % 形状参数

% 逆变换采样
U = rand(num_samples, 1);             % 均匀分布 U ~ Uniform(0,1)
productivity = phi_min * (1 - U).^(-1/k); % 帕累托样本

% 可视化
histogram(productivity, 50, 'Normalization', 'pdf');
title('帕累托分布(逆变换采样)');
xlabel('生产率 \phi');
ylabel('密度');

Python

import numpy as np
import matplotlib.pyplot as plt

# 参数设置
num_samples = 1000
phi_min = 1.0
k = 2.5

# 逆变换采样
U = np.random.uniform(0, 1, num_samples)
productivity = phi_min * (1 - U)**(-1/k)

# 可视化
plt.hist(productivity, bins=50, density=True, alpha=0.7)
plt.title('帕累托分布(逆变换采样)')
plt.xlabel('生产率 $\phi$')
plt.ylabel('密度')
plt.grid(True)
plt.show()

3. 关键点说明

  1. 均匀分布的作用

    • 均匀分布 U 充当概率值F(\varphi),通过逆变换将均匀分布映射到帕累托分布。
  2. 为什么是 (1 - U)^{-1/k}

    • 因为帕累托的CDF是 F(\varphi) = 1 - (\varphi_{\text{min}}/\varphi)^k,其逆函数为 \varphi = \varphi_{\text{min}} \cdot (1 - U)^{-1/k}
  3. 与直接代入PDF的区别

    • 直接使用PDF需要更复杂的采样方法(如拒绝采样),而逆变换法更高效。

4. 与其他分布生成方法的对比

方法 适用分布 优点 缺点
逆变换采样 可解析求逆的CDF 精确高效 需要CDF的闭式逆函数
拒绝采样 任意复杂PDF 通用性强 计算成本高
Box-Muller变换 正态分布 精确生成高斯随机数 仅适用于正态分布

5. 经济学应用中的注意事项

  • 参数校准:帕累托形状参数k 需通过实际数据估计(通常k \in [1,3])。
  • 截断处理:在模拟中可能需要限制生产率上限(如 \varphi_{\text{max}}),避免极端值影响数值稳定性。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容