【Statsmodels和SciPy介绍与常用方法】

Statsmodels库介绍与常用方法

Statsmodels 是一个强大的 Python 库,专注于统计建模和数据分析,广泛应用于经济学、金融、生物统计等领域。它提供了丰富的统计模型、假设检验和数据探索工具,适合进行回归分析、时间序列分析等任务。本文将介绍 Statsmodels 的核心功能,并通过代码示例展示其常用方法。

Statsmodels 简介

Statsmodels 建立在 NumPy 和 SciPy 的基础上,提供了易于使用的接口来实现线性回归、广义线性模型(GLM)、时间序列分析(如 ARIMA)、假设检验等功能。与 Scikit-learn 不同,Statsmodels 更侧重于统计推断,提供详细的统计结果(如 p 值、置信区间等),适合需要深入分析的场景。

安装 Statsmodels:

pip install statsmodels

常用方法与代码示例
以下是 Statsmodels 中常用的功能模块及其方法,附带代码示例。

  1. 线性回归(Linear Regression)
    Statsmodels 的 OLS(普通最小二乘法)是进行线性回归的核心工具。它可以拟合模型并返回详细的统计结果。

示例:简单线性回归

import numpy as np
import statsmodels.api as sm
import pandas as pd# 生成示例数据
np.random.seed(0)
X = np.random.rand(100, 1) * 10
y = 2 * X.flatten() + np.random.normal(0, 1, 100)# 添加常数项(截距)
X = sm.add_constant(X)# 拟合 OLS 模型
model = sm.OLS(y, X).fit()# 输出模型摘要
print(model.summary())

说明:

sm.add_constant:为自变量添加常数列以拟合截距。
model.summary():输出详细的统计结果,包括 R²、系数、p 值等。
2. 广义线性模型(GLM)
GLM 扩展了线性回归,适用于非正态分布的因变量(如二项分布、泊松分布)。

示例:逻辑回归(Logistic Regression)

import statsmodels.api as sm
import pandas as pd# 加载示例数据集
data = sm.datasets.get_rdataset("iris", "datasets").data
# 二分类:将鸢尾花数据集简化为二分类问题
data = data[data['Species'].isin(['setosa', 'versicolor'])]
X = data[['Sepal.Length', 'Sepal.Width']]
y = (data['Species'] == 'setosa').astype(int)# 添加常数项
X = sm.add_constant(X)# 拟合逻辑回归模型
model = sm.GLM(y, X, family=sm.families.Binomial()).fit()# 输出结果
print(model.summary())

说明:

sm.GLM:指定 family 参数(如 Binomial)以实现逻辑回归。
结果包括系数、标准误、z 值等,便于假设检验。
3. 时间序列分析(ARIMA)
Statsmodels 提供强大的时间序列分析工具,如 ARIMA 模型,适用于预测和建模时间序列数据。

示例:ARIMA 模型

import statsmodels.api as sm
import pandas as pd# 加载示例数据集(空气乘客数据)
data = sm.datasets.get_rdataset("AirPassengers", "datasets").data
y = data['value']# 拟合 ARIMA(1,1,1) 模型
model = sm.tsa.ARIMA(y, order=(1, 1, 1)).fit()# 预测未来 12 个时间点
forecast = model.forecast(steps=12)
print("预测值:", forecast)# 绘制结果
import matplotlib.pyplot as plt
plt.plot(y, label='实际值')
plt.plot(range(len(y), len(y) + 12), forecast, label='预测值')
plt.legend()
plt.savefig('arima_forecast.png')

说明:

sm.tsa.ARIMA:指定 (p,d,q) 参数以定义模型阶数。
forecast:用于预测未来值。
使用 matplotlib 绘制结果,保存为图片。
4. 假设检验
Statsmodels 提供多种统计检验工具,如 t 检验、卡方检验等。

示例:独立样本 t 检验

import statsmodels.stats.api as sm_stats
import numpy as np# 生成两组样本数据
np.random.seed(0)
group1 = np.random.normal(10, 2, 50)
group2 = np.random.normal(11, 2, 50)# 执行 t 检验
t_stat, p_value, df = sm_stats.ttest_ind(group1, group2)
print(f"t 统计量: {t_stat}, p 值: {p_value}")

说明:

ttest_ind:用于比较两组独立样本的均值差异。
输出 t 统计量和 p 值,用于判断显著性。

更多的用法请查看官方文档,https://www.statsmodels.org/。

SciPy库介绍与常用方法

SciPy 是一个基于 Python 的开源科学计算库,广泛应用于数学、科学和工程领域。它建立在 NumPy 的基础上,提供了高效的数值计算工具,涵盖优化、积分、插值、信号处理、线性代数等功能。本文将介绍 SciPy 的核心功能,并通过代码示例展示其常用方法。

SciPy 简介

SciPy 是一个模块化的库,包含多个子模块,每个子模块专注于特定领域的计算任务,例如:

  • scipy.optimize:优化算法
  • scipy.integrate:数值积分
  • scipy.interpolate:插值
  • scipy.signal:信号处理
  • scipy.linalg:线性代数
  • scipy.stats:统计分析

SciPy 与 NumPy、Matplotlib 等库无缝集成,适合科学计算和数据分析。

安装 SciPy:

pip install scipy

常用方法与代码示例
以下是 SciPy 中几个常用子模块及其方法的介绍,附带代码示例。

  1. 优化(Optimization)
    scipy.optimize 提供了多种优化算法,用于寻找函数的最优解(如最小值)。

示例:最小化函数

import numpy as np
from scipy.optimize import minimize# 定义目标函数
def objective(x):return x[0]**2 + x[1]**2# 初始猜测
x0 = np.array([1.0, 1.0])# 最小化目标函数
result = minimize(objective, x0, method='BFGS')
print("最优解:", result.x)
print("最小值:", result.fun)

说明:

minimize:通过指定优化方法(如 BFGS)寻找函数最小值。
输出包括最优参数 result.x 和目标函数值 result.fun。
2. 数值积分(Integration)
scipy.integrate 提供了数值积分工具,适用于单重积分、双重积分等。

示例:单重积分

from scipy.integrate import quad# 定义被积函数
def f(x):return np.sin(x)# 计算 sin(x) 从 0 到 π 的积分
result, error = quad(f, 0, np.pi)
print("积分结果:", result)
print("估计误差:", error)

说明:

quad:计算定积分,返回积分结果和误差估计。
上述例子计算 sin(x) 从 0 到 π 的积分为 2。
3. 插值(Interpolation)
scipy.interpolate 用于在离散数据点之间进行插值,生成平滑的函数。

示例:一维插值

import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt# 生成示例数据
x = np.linspace(0, 10, 10)
y = np.sin(x)# 创建线性插值函数
f_linear = interp1d(x, y, kind='linear')# 生成密集的 x 值用于绘制插值结果
x_dense = np.linspace(0, 10, 100)
y_linear = f_linear(x_dense)# 绘制结果
plt.plot(x, y, 'o', label='数据点')
plt.plot(x_dense, y_linear, '-', label='线性插值')
plt.legend()
plt.savefig('interpolation.png')

说明:

interp1d:生成一维插值函数,支持线性、二次、三次插值等。
使用 Matplotlib 绘制原始数据点和插值曲线。
4. 线性代数(Linear Algebra)
scipy.linalg 提供了丰富的线性代数工具,如矩阵分解、求逆、特征值计算等。

示例:求解线性方程组

from scipy.linalg import solve
import numpy as np# 定义系数矩阵 A 和常数向量 b
A = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])# 求解 Ax = b
x = solve(A, b)
print("解:", x)

说明:

solve:求解线性方程组 Ax = b,返回解向量 x。
上述例子解方程组 3x + y = 9, x + 2y = 8。
5. 统计分析(Statistics)
scipy.stats 提供概率分布、统计检验等工具。

示例:正态分布拟合

from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt# 生成正态分布的样本数据
np.random.seed(0)
data = np.random.normal(loc=0, scale=1, size=1000)# 拟合正态分布
mu, sigma = norm.fit(data)
print("均值:", mu, "标准差:", sigma)# 绘制数据直方图和拟合曲线
plt.hist(data, bins=30, density=True, alpha=0.5, label='数据')
x = np.linspace(-3, 3, 100)
plt.plot(x, norm.pdf(x, mu, sigma), 'r-', label='拟合正态分布')
plt.legend()
plt.savefig('normal_fit.png')

说明:

norm.fit:拟合正态分布,估计均值和标准差。
使用 norm.pdf 绘制概率密度函数。

更多详细信息请查阅官方文档,https://docs.scipy.org/doc/scipy/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Rust通用集合类型】Rust向量Vector、String、HashMap原理解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

SoapUi测试1——REST(WebAPi、Json协议/HTTP、Post通讯方式)接口测试

文章目录 1背景1.1接口测试工具SoapUi产生背景1.2常见接口类型1.3接口包含内容1.4请求格式 2软件使用3http、webservice、webapi如何测试3.1REST(WebAPi、JSON/HTTP、POST)3.2SOAP(Webserver、XML/HTTP、POST) 1背景 1.1接口测试…

Linux按键驱动测试

文章目录 一、设备节点添加 二、创建驱动文件代码 2.1 核心数据结构 2.2 按键值定义 2.3 关键函数实现 三、创建测试文件 四、测试 一、设备节点添加 首先在设备树文件中添加pinctrl以及在根目录下添加设备节点。如下: //创建按键输入的pinctrlpinctrl_key: keygrp…

5000元可以运行32B大模型的笔记本

5000元可以运行32B 大模型的笔记本 荣耀笔记本 X14 Plus 锐龙版 R7-8845HS -32G -1T 模型名称 模型大小 tokens/s qwq-32b-q4 19GB 2.4 Qwen2.5-Coder-14B- Q8 16GB 4 DeepSeek-R1-Distill-Qwen-7B-Q8 8GB 8.1 DeepSeek-R1-Distill-Llama-8B-Q4 5GB 11.7

arm设备树基础知识

文章目录 前言dts片段通用属性介绍地址大小中断phandlecompatible mmc节点介绍 前言 arm开发&#xff0c;早晚要了解设备树 dts片段 interrupt-parent <0x8005>; model "linux,dummy-virt"; #size-cells <0x02>; #address-cells <0x02>; co…

【C++ 核心知识点面试攻略:从基础到实战(上位机开发视角)】

一、命名空间&#xff08;Namespace&#xff09;相关问题 问题1&#xff1a;C引入命名空间的核心目的是什么&#xff1f;如何通过命名空间解决命名冲突&#xff1f; 答案&#xff1a; C引入命名空间的核心目的是 避免全局作用域中的命名冲突&#xff0c;通过将变量、函数、类…

线性代数与数据学习

The Functions of Deep Learning (essay from SIAM News, December 2018) Deep Learning and Neural Nets

phpstorm用php连接数据库报错

项目场景&#xff1a; phpstorm用php连接数据库 问题描述 用php使用mysql_connect 的时候报错了&#xff0c;没有这个函数 原因分析&#xff1a; php解释器问题&#xff0c;后来查资料得知mysql_connct只适用于php5.5以下解释器。一开始用的7&#xff0c;改成5.3以后还是报…

51c大模型~合集122

我自己的原文哦~ https://blog.51cto.com/whaosoft/13877107 #PHYBench 北大物院200人合作&#xff0c;金牌得主超50人&#xff01;PHYBench&#xff1a;大模型究竟能不能真的懂物理&#xff1f; 本项目由北京大学物理学院朱华星老师、曹庆宏副院长统筹指导。基准设计、…

单片机 + 图像处理芯片 + TFT彩屏 触摸滑动条控件

触摸滑动条控件使用说明 一、项目概述 本项目基于单片机和RA8889/RA6809图形处理芯片的TFT触摸屏滑动条控件。该控件支持水平和垂直滑动条&#xff0c;可自定义外观和行为&#xff0c;并支持回调函数进行值变化通知。 硬件平台&#xff1a;51/ARM均可(测试时使用STC8H8K64U单…

linux离线安装zsh

下载zsh 下载仓库后解压 下载地址&#xff1a;https://github.com/zsh-users/zsh 离线安装 安装方法见INSTALL文件 ./configure --prefix[/usr/local] make make install

机器学习中的数据转换:关键步骤与最佳实践

机器学习中的数据转换&#xff1a;关键步骤与最佳实践 摘要 &#xff1a;在机器学习领域&#xff0c;数据是模型的核心&#xff0c;而数据的转换是构建高效、准确模型的关键步骤之一。本文深入探讨了机器学习中数据转换的重要性、常见的数据类型及其转换方法&#xff0c;以及在…

TDR阻抗会爬坡? 别担心,不是你的错,你只是不够了解TDR!

在背板系统或任何长走线设计里&#xff0c;你大概都碰过这画面&#xff1a; TDR 曲线一开始乖乖在 92 Ω&#xff0c;但越往末端、阻抗越爬越高&#xff0c;来到最高 97 Ω&#xff0c;心里瞬间凉半截 &#x1f612; &#xff0c;「难不成... 板厂又翻车了吗&#xff1f;」 然…

在另外一台可以科学下载的电脑用ollama下载模型后,怎么导入到另外一台服务器的ollama使用

环境&#xff1a; Win10专业版 Ubuntu20.04 问题描述&#xff1a; 在另外一台可以科学下载的电脑用ollama下载模型后&#xff0c;怎么导入到另外一台服务器的ollama使用&#xff0c;原电脑win10上的ollama下载的模型,复制到ubuntu20.04的ollama上推理 解决方案&#xff1a;…

Ethan独立开发产品日报 | 2025-04-27

1. CreateWise AI 旨在提升你工作效率的AI播客编辑器 人工智能播客编辑器&#xff0c;让你的播客制作速度提升10倍&#xff01;它可以自动去除口头语和沉默&#xff0c;生成节目笔记和精彩片段&#xff0c;还能一键制作适合社交媒体分享的短视频——所有这些功能都只需一次点…

解决 shadui组件库Popover 点击后会消失

react用了shadui组件库 <Popover><PopoverTrigger><div className"text-operation-item" onClick{props.callback}><img src{props.imgSrc} width{20} height{20} /></div></PopoverTrigger><PopoverContent className"…

SVC电气设备作用

SVC&#xff08;Static Var Compensator&#xff0c;静止无功补偿器&#xff09;是一种基于电力电子技术的动态无功补偿装置&#xff0c;属于灵活交流输电系统&#xff08;FACTS&#xff09;的核心设备之一。它通过快速调节电网中的无功功率&#xff0c;改善电能质量、稳定系统…

黑马点评商户查询缓存--缓存更新策略

ShopTypeServiceImpl类 代码 package com.hmdp.service.impl;import cn.hutool.json.JSONUtil; import com.hmdp.dto.Result; import com.hmdp.entity.ShopType; import com.hmdp.mapper.ShopTypeMapper; import com.hmdp.service.IShopTypeService; import com.baomidou.myba…

C 语言函数指针与指针函数详解

一、引言 在 C 语言的编程世界中&#xff0c;函数指针和指针函数是两个既强大又容易混淆的概念。它们为 C 语言带来了更高的灵活性和可扩展性&#xff0c;广泛应用于回调函数、动态链接库、状态机等多种场景。深入理解和掌握函数指针与指针函数&#xff0c;对于提升 C 语言编程…

HTML5 新特性详解:语义化标签、表单与音视频嵌入

前言 HTML5作为当前Web开发的核心技术&#xff0c;为开发者提供了更强大、更语义化的工具集。本文将深入探讨HTML5的三大核心特性&#xff1a;语义化标签、增强的表单功能以及原生的音视频支持&#xff0c;帮助开发者构建更现代化、更易维护的网页应用。 一、HTML5语义化标签…