Python使用Statsmodels进行概率分布的拟合和参数估计,包括正态分布、泊松分布、伽马分布等
环境搭建:
1. 安装Statsmodels库:使用pip命令安装Statsmodels库。
pip install statsmodels
依赖的类库:
- pandas: 用于数据处理和转换。
- numpy: 用于数值计算。
数据集:
在该样例中,我们将使用Statsmodels自带的数据集 `longley`。这个数据集包含了1947-1962年间的美国经济数据。
python
import statsmodels.api as sm
# 加载longley数据集
data = sm.datasets.macrodata.load_pandas().data
样例数据:
`data` 是一个包含多个变量的DataFrame,其中最重要的变量是 `unemp`(失业率)。
完整的样例代码如下:
python
import numpy as np
import pandas as pd
import statsmodels.api as sm
from scipy.stats import t
def fit_normal_distribution(data):
mu, std = norm.fit(data)
return mu, std
def fit_poisson_distribution(data):
mu = poisson.fit(data)
return mu
def fit_gamma_distribution(data):
a, loc, scale = gamma.fit(data)
return a, loc, scale
# 加载longley数据集
data = sm.datasets.macrodata.load_pandas().data
# 选择需要拟合的数据
unemployment_rate = data["unemp"]
# 拟合正态分布
mu, std = fit_normal_distribution(unemployment_rate)
# 拟合泊松分布
mu_poisson = fit_poisson_distribution(unemployment_rate)
# 拟合伽马分布
a, loc, scale = fit_gamma_distribution(unemployment_rate)
# 打印拟合结果
print("正态分布:")
print("均值:", mu)
print("标准差:", std)
print("
")
print("泊松分布:")
print("均值:", mu_poisson)
print("
")
print("伽马分布:")
print("形状参数:", a)
print("位置参数:", loc)
print("尺度参数:", scale)
请确保在运行代码之前已安装所需的库。