Statsmodels 入门介绍
Statsmodels 是一个强大的 Python 库,专为统计数据分析而设计。它提供了构建回归模型、参数估计、统计假设检验以及时间序列分析的工具。Statsmodels 广泛应用于计量经济学、生物统计学和社会科学领域,能够对分析结果进行深入的统计解释。
Statsmodels 核心功能
回归分析
Statsmodels 提供全面的回归分析功能,包括普通最小二乘法 (OLS)、广义线性模型 (GLM)、稳健回归以及面板数据模型。该库同时支持参数化和非参数化估计方法。
时间序列分析
时间序列模块包含 ARIMA、SARIMA、指数平滑、向量自回归 (VAR) 等多种模型。此外,还提供平稳性检验、序列分解和预测等功能。
统计假设检验
该库包含丰富的统计检验方法:t 检验、F 检验、正态性检验、方差齐性检验、自相关检验等。
方差分析
支持单因素和多因素 ANOVA、ANCOVA、重复测量以及混合效应模型。
非参数方法
包含核密度估计、非参数回归以及基于秩的检验方法。
安装与导入 Statsmodels
安装库
使用标准命令安装:
pip install statsmodels
如需完整功能,可安装包含全部依赖的版本:
pip install statsmodels[complete]
导入所需模块
import statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.tsa.api as tsa
import statsmodels.stats.api as sms
库结构与主要模块
核心 API 接口
statsmodels.api — 经典接口,直接指定数据矩阵
statsmodels.formula.api — 基于公式的接口,类似 R 语言风格
statsmodels.tsa — 时间序列分析模块
statsmodels.stats — 统计检验与诊断工具
statsmodels.graphics — 结果可视化
数据处理与准备
Statsmodels 与 pandas.DataFrame 配合最佳:
import pandas as pd
import numpy as np
# 加载数据
data = pd.read_csv("dataset.csv")
# 检查缺失值
print(data.isnull().sum())
# 基本统计描述
print(data.describe())
线性回归 (OLS)
经典接口
import statsmodels.api as sm
# 准备数据
X = data[["x1", "x2", "x3"]]
X = sm.add_constant(X) # 添加截距项
y = data["y"]
# 构建模型
model = sm.OLS(y, X).fit()
print(model.summary())
# 提取系数
print("系数:", model.params)
print("P 值:", model.pvalues)
print("R 方:", model.rsquared)
公式接口
import statsmodels.formula.api as smf
# 使用公式
model = smf.ols("y ~ x1 + x2 + x3", data=data).fit()
print(model.summary())
# 变量交互
model_interaction = smf.ols("y ~ x1 * x2 + x3", data=data).fit()
# 分类变量
model_cat = smf.ols("y ~ C(category) + x1", data=data).fit()
广义线性模型 (GLM)
GLM 扩展了线性回归,支持非正态分布的响应变量:
import statsmodels.api as sm
# 逻辑回归(二分类)
logit_model = sm.GLM(y_binary, X, family=sm.families.Binomial()).fit()
print(logit_model.summary())
# 泊松回归(计数数据)
poisson_model = sm.GLM(y_counts, X, family=sm.families.Poisson()).fit()
# 伽马回归(正偏态数据)
gamma_model = sm.GLM(y_positive, X, family=sm.families.Gamma(link=sm.families.links.log)).fit()