@@ -109,13 +109,16 @@ from numba.experimental import jitclass
109109
110110上面已经导入的[ QuantEcon.py] ( https://github.com/QuantEcon/QuantEcon.py ) 包含了计算洛伦兹曲线的函数。
111111
112- 举例说明,假设以下数据代表了10,000个家庭的财富分布
112+ 举例说明,假设
113113
114114``` {code-cell} ipython3
115+ rng = np.random.default_rng()
115116n = 10_000 # 样本大小
116- w = np.exp(np.random.randn (n)) # 生成对数正态分布的随机样本
117+ w = np.exp(rng.standard_normal (n)) # 生成对数正态分布的随机样本
117118```
118119
120+ 是代表10,000个家庭财富的数据。
121+
119122我们可以按如下方式计算并绘制洛伦兹曲线:
120123
121124``` {code-cell} ipython3
@@ -147,7 +150,7 @@ a_vals = (1, 2, 5) # 帕累托分布的尾部指数
147150n = 10_000 # 每个样本的大小
148151fig, ax = plt.subplots()
149152for a in a_vals:
150- u = np.random .uniform(size=n)
153+ u = rng .uniform(size=n)
151154 y = u**(-1/a) # 服从尾部指数为a的帕累托分布
152155 f_vals, l_vals = qe.lorenz_curve(y)
153156 ax.plot(f_vals, l_vals, label=f'$a = {a}$')
@@ -184,7 +187,7 @@ n = 100
184187
185188fig, ax = plt.subplots()
186189for a in a_vals:
187- y = np.random .weibull(a, size=n)
190+ y = rng .weibull(a, size=n)
188191 ginis.append(qe.gini_coefficient(y))
189192 ginis_theoretical.append(1 - 2**(-1/a))
190193ax.plot(a_vals, ginis, label='基尼系数估值')
@@ -543,13 +546,14 @@ plt.show()
543546这是一个解法,它在理论和模拟之间产生了很好的匹配。
544547
545548``` {code-cell} ipython3
549+ rng = np.random.default_rng()
546550a_vals = np.linspace(1, 10, 25) # 帕累托尾部指数
547551ginis = np.empty_like(a_vals)
548552
549553n = 1000 # 每个样本的大小
550554fig, ax = plt.subplots()
551555for i, a in enumerate(a_vals):
552- y = np.random .uniform(size=n)**(-1/a)
556+ y = rng .uniform(size=n)**(-1/a)
553557 ginis[i] = qe.gini_coefficient(y)
554558ax.plot(a_vals, ginis, label='抽样值')
555559ax.plot(a_vals, 1/(2*a_vals - 1), label='理论值')
@@ -630,4 +634,4 @@ plt.show()
630634```
631635
632636``` {solution-end}
633- ```
637+ ```
0 commit comments