如何用Python复现不同样本量下标准 gumbel 分布的抽样动图
时间: 2024-11-15 13:26:54 浏览: 7
Gumbel极值分布代码及AR风速模拟.rar_AR_Gumbel分布_python极值分布_极值_极值风速
5星 · 资源好评率100%
在Python中,你可以使用matplotlib库来创建动画,并结合numpy库生成Gumbel分布的随机样本。Gumbel分布通常通过累积分布函数(cumulative distribution function, CDF)实现抽样,因为这是一种常见的概率分布生成方法。以下是步骤:
1. **安装必要的库**:
首先,确保已经安装了`matplotlib`, `numpy`, 和 `moviepy`(用于生成视频)。如果没有,可以分别运行:
```bash
pip install matplotlib numpy moviepy
```
2. **导入所需的模块**:
```python
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
from moviepy.editor import VideoClip
```
3. **定义Gumbel分布函数**:
Gumbel分布的数学形式已知,可以用累积分布函数(CDF)表示。对于形状参数`mu`和scale参数`beta`:
```python
def gumbel_cdf(x, mu=0, beta=1):
return -np.log(-np.exp(-(x - mu) / beta))
```
4. **生成动画**:
创建一个函数来更新帧,并在每个新帧中改变样本量。例如:
```python
def animate(i):
sample_size = 100 * (i + 1) # 从10到500,每次增加10
x = np.linspace(-5, 5, 1000)
y = gumbel_cdf(x)
plt.cla() # 清除上一帧
plt.plot(x, y, label=f"Sample size: {sample_size}")
plt.legend()
plt.title(f"Gumbel Distribution (μ={0}, β={1}) - Sample Size {sample_size}")
fig, ax = plt.subplots()
ani = FuncAnimation(fig, animate, frames=np.arange(1, 6), interval=100) # 每隔100毫秒绘制一次
```
5. **保存动画为视频**:
最后,将动画转换为视频文件:
```python
video = VideoClip(ani, duration=6) # 总共5帧,每帧间隔1秒
video.write_videofile("gumbel_distribution_sampling.mp4", fps=6) # 输出视频文件
```
阅读全文