Statsmodels库详解

Statsmodels 是一个 Python 库,专注于为统计分析和计量经济学提供工具。它能让用户轻松进行数据探索、模型估计和结果检验。

1. 线性回归分析

功能

构建并拟合线性回归模型,分析自变量和因变量之间的线性关系,还能进行预测。

代码

import statsmodels.api as sm
import numpy as np

# 生成示例数据
np.random.seed(0)
x = np.linspace(0, 10, 100)
X = sm.add_constant(x)
y = 2 * x + 1 + np.random.normal(0, 1, 100)

# 构建并拟合线性回归模型
model = sm.OLS(y, X)
results = model.fit()

# 输出回归结果
print(results.summary())

# 进行预测
new_X = sm.add_constant([11, 12])
predictions = results.predict(new_X)
print("预测值:", predictions)

在上述代码里,先创建了示例数据,接着使用 sm.OLS 构建普通最小二乘(OLS)线性回归模型并拟合,然后输出模型的详细统计信息,最后用拟合好的模型进行预测。

2. 时间序列分析 - ARIMA 模型

功能

自回归积分滑动平均(ARIMA)模型可用于时间序列数据的建模、预测,捕捉数据中的趋势、季节性等特征。

代码

import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt

# 生成示例时间序列数据
np.random.seed(0)
date_rng = pd.date_range(start='2020-01-01', end='2020-12-31', freq='D')
ts = pd.Series(np.random.randn(len(date_rng)), index=date_rng)

# 拟合 ARIMA 模型
model = sm.tsa.ARIMA(ts, order=(1, 1, 1))
results = model.fit()

# 进行预测
forecast = results.get_forecast(steps=10)
forecast_mean = forecast.predicted_mean

# 绘制结果
plt.plot(ts, label='Original Data')
plt.plot(forecast_mean, label='Forecast')
plt.legend()
plt.show()

此代码中,先创建了示例时间序列数据,再使用 sm.tsa.ARIMA 构建并拟合 ARIMA 模型,接着进行未来 10 步的预测,最后绘制原始数据和预测结果。

3. 广义线性模型(GLM)

功能

广义线性模型是线性回归模型的扩展,能处理非正态分布的响应变量,如二项分布、泊松分布等。

import statsmodels.api as sm
import numpy as np

# 生成示例数据
np.random.seed(0)
x = np.linspace(0, 10, 100)
X = sm.add_constant(x)
y = np.random.binomial(1, 0.5, 100)

# 构建并拟合广义线性模型(逻辑回归)
model = sm.GLM(y, X, family=sm.families.Binomial())
results = model.fit()

# 输出模型结果
print(results.summary())

这里创建了二项分布的示例数据,使用 sm.GLM构建逻辑回归模型(属于广义线性模型的一种)并拟合,最后输出模型的统计信息。

4. 方差分析(ANOVA)

功能

用于分析多个总体均值是否存在显著差异,判断不同因素对响应变量的影响。

代码:

import statsmodels.api as sm
from statsmodels.formula.api import ols
import pandas as pd

# 创建示例数据
data = {
    'Group': ['A', 'A', 'B', 'B', 'C', 'C'],
    'Value': [1, 2, 3, 4, 5, 6]
}
df = pd.DataFrame(data)

# 构建并拟合方差分析模型
model = ols('Value ~ Group', data=df).fit()
anova_table = sm.stats.anova_lm(model, typ=2)

# 输出方差分析结果
print(anova_table)

代码中先创建了包含分组信息和数值的数据框,然后使用 ols 构建方差分析模型并拟合,最后输出方差分析表。

5. 统计检验 - t 检验

功能

用于检验两个样本的均值是否存在显著差异,可分为单样本 t 检验、独立样本 t 检验和配对样本 t 检验。

代码

import statsmodels.api as sm
import numpy as np

# 生成示例数据
np.random.seed(0)
sample1 = np.random.normal(0, 1, 100)
sample2 = np.random.normal(1, 1, 100)

# 进行独立样本 t 检验
t_stat, p_value, df = sm.stats.ttest_ind(sample1, sample2)
print(f"t 统计量: {t_stat}")
print(f"p 值: {p_value}")

此代码生成了两个示例样本,使用 sm.stats.ttest_ind 进行独立样本t 检验,最后输出 t统计量和 p 值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值