当前位置: 首页 > article >正文

Python数据分析工具:Statsmodels的用法示例

Statsmodels是Python中一个强大的统计分析工具库,支持多种统计模型和数据分析方法。

以下是一些Statsmodels的用法示例,包括线性回归分析、时间序列分析等方面的应用:

一、线性回归分析

线性回归分析是研究自变量与因变量之间线性关系的统计方法。Statsmodels提供了普通最小二乘法(OLS)等线性模型的支持。

示例代码:

import pandas as pd  
import statsmodels.api as sm  
  
# 加载数据集,这里使用Statsmodels自带的mtcars数据集作为示例  
data = sm.datasets.get_rdataset("mtcars").data  
  
# 数据探索与预处理  
print(data.info())  
print(data.describe())  
print(data.head())  
  
# 定义自变量和因变量  
X = data[['hp', 'wt']]  # 自变量:马力和重量  
y = data['mpg']  # 因变量:每加仑英里数  
  
# 添加常数项,以拟合截距  
X = sm.add_constant(X)  
  
# 构建并拟合线性回归模型  
model = sm.OLS(y, X).fit()  
  
# 打印模型摘要  
print(model.summary())

解释:
data.info():查看数据集的基本信息。

data.describe():查看数据集的统计描述。

data.head():查看数据集的前几行。

sm.add_constant(X):在自变量X中添加常数项,以拟合模型的截距。

sm.OLS(y, X).fit():构建并拟合普通最小二乘法(OLS)线性回归模型。

model.summary():打印模型的摘要,包括回归系数、标准误、t值、p值、R²等统计量。

二、时间序列分析

时间序列分析是研究时间序列数据的统计方法,Statsmodels提供了ADF检验、ARIMA模型等功能,可用于时间序列数据的预测和建模。

示例代码:

import pandas as pd  
import numpy as np  
import statsmodels.api as sm  
  
# 构造时间序列数据  
dates = pd.date_range('2020-01-01', periods=100)  
data = pd.DataFrame(np.random.randn(100, 2), index=dates, columns=['A', 'B'])  
  
# 进行时间序列分析,这里以ARIMA模型为例  
model = sm.tsa.ARIMA(data['A'], order=(1, 1, 1)).fit()  
  
# 打印模型预测结果  
print(model.summary())  
  
# 预测未来数据  
forecast = model.forecast(steps=10)  
print(forecast)

解释:
pd.date_range(‘2020-01-01’, periods=100):生成一个从2020-01-01开始、长度为100的日期范围。

pd.DataFrame(np.random.randn(100, 2), index=dates, columns=[‘A’, ‘B’]):生成一个包含100行、2列的随机数据框,并将其索引设置为日期范围。

sm.tsa.ARIMA(data[‘A’], order=(1, 1, 1)).fit():构建并拟合ARIMA模型,其中order=(1, 1, 1)表示自回归项、差分次数和移动平均项的阶数均为1。

model.summary():打印模型的摘要,包括模型参数、统计量等。

model.forecast(steps=10):预测未来10个时间点的数据。

三、回归诊断

回归诊断是对回归模型进行评估和检验的过程,Statsmodels提供了多种回归诊断工具,如残差的正态性检验、自相关检验、影响力测试等。

示例代码(部分):

import statsmodels.stats.api as sms  
import matplotlib.pyplot as plt  
from statsmodels.graphics.regressionplots import plot_leverage_resid2  
from statsmodels.stats.outliers_influence import OLSInfluence  
  
# 假设已经拟合了一个回归模型,并存储在results变量中  
# ...(省略模型拟合代码)  
  
# 残差的正态性检验  
jb_test = sms.jarque_bera(results.resid)  
print('Jarque-Bera Test:', jb_test)  
  
# 自相关检验  
dw_test = sms.durbin_watson(results.resid)  
print('Durbin-Watson Test:', dw_test)  
  
# 影响力测试  
influence_test = OLSInfluence(results)  
dfbetas = influence_test.dfbetas  
print('DFBETAS:', dfbetas)  
  
# 绘制杠杆值-残差图  
fig, ax = plt.subplots(figsize=(8, 6))  
fig = plot_leverage_resid2(results, ax=ax)  
plt.show()

解释:
sms.jarque_bera(results.resid):进行Jarque-Bera检验,以判断残差是否服从正态分布。

sms.durbin_watson(results.resid):进行Durbin-Watson检验,以判断残差是否存在自相关。

OLSInfluence(results):创建OLSInfluence对象,用于进行影响力测试。

influence_test.dfbetas:计算DFBETAS统计量,用于评估每个观测值对回归系数的影响。

plot_leverage_resid2(results, ax=ax):绘制杠杆值-残差图,以可视化观测值对回归模型的影响。

以上仅为Statsmodels的部分用法示例,Statsmodels还支持更多复杂的统计模型和数据分析方法,用户可以根据实际需求进行选择和应用。


http://www.kler.cn/news/337665.html

相关文章:

  • (九)Shell 脚本(四):正则表达式、sed 和 awk 详解
  • 极显然:百年极限论是模糊不清的理论
  • 使用Spring Security实现用户-权限-资源的精细化控制
  • 个人如何申请书号?
  • 第38讲:Ceph分布式存储集群部署
  • Linux 文件管理
  • 大数据新视界 --大数据大厂之 Kafka 性能优化的进阶之道:应对海量数据的高效传输
  • HTTPS介绍 --- 超详细保姆级知识讲解
  • 每日新闻掌握【2024年9月21日 星期六】
  • MyBatis 操作数据库入门
  • 鸿蒙--知乎评论
  • imx6q 的 header.s的理解
  • Redis list 类型
  • 【JVM调优】JVM高频参数和最优实践
  • 超好用的数据库连接工具-DBeaver连接ClickHouse后找不到系统表?
  • agent实现:通过prompt方式实现agent自定义使用
  • Vue3小兔鲜——订单页
  • 自动驾驶系列—线控悬架技术:自动驾驶背后的动力学掌控者
  • Redis篇(应用案例 - UV统计)(持续更新迭代)
  • 第三十九章 创建安全对话