python Statsmodel 回归模型笔记

2023-11-01

Statsmodels是Python中一种常用的统计分析库,支持多种回归模型的建立和分析。以下是Statsmodels中常见的几种回归模型及其用途:

线性回归模型(Linear Regression Model):用于建立自变量和因变量之间线性关系的模型。线性回归模型假定因变量Y是自变量X的线性组合,并且误差项服从正态分布。例如,可以使用线性回归模型分析房价和房屋面积之间的关系。

逻辑回归模型(Logistic Regression Model):用于建立自变量和二分类因变量之间关系的模型。逻辑回归模型可以预测一个二分类事件的概率,而不是具体的数值。例如,可以使用逻辑回归模型分析某个人是否会购买某个产品,或者某个病人是否患有某种疾病。

多元线性回归模型(Multiple Linear Regression Model):用于建立多个自变量和一个因变量之间的线性关系的模型。多元线性回归模型可以用于解释因变量与多个自变量之间的关系,而不仅仅是一个自变量。例如,可以使用多元线性回归模型分析某个人的收入和年龄、教育水平、工作经验等多个因素之间的关系。

广义线性模型(Generalized Linear Model):用于建立因变量和自变量之间的关系,但是因变量不一定需要服从正态分布。广义线性模型可以建立多种类型的回归模型,如泊松回归、logistic回归、伽马回归等。例如,可以使用泊松回归分析网站流量与访客数量之间的关系。

通常情况下,线性回归模型(LRM)和广义线性模型(GLM)的应用场景是不同的,您可以通过以下几个方面来区分它们:

  • 因变量类型:线性回归模型适用于因变量为连续变量的情况,而广义线性模型适用于因变量为连续变量、二元变量、计数变量、偏度分布连续变量等不同类型的情况。
  • 分布假设:线性回归模型假设因变量服从正态分布,而广义线性模型则不仅仅局限于正态分布的假设,可以根据实际情况选择其他分布假设,如二项分布、泊松分布、伽马分布等。
  • 误差项的独立性和同方差性:线性回归模型通常假设误差项独立同分布且方差不随自变量的变化而变化,而广义线性模型对误差项的独立性和同方差性的假设相对宽松,可以应对更多的实际问题。

因此,如果您的因变量是连续变量,且误差项的独立性和同方差性得到满足,您可以使用线性回归模型;如果您的因变量类型比较复杂,或者您不能满足误差项的独立性和同方差性假设,您可以使用广义线性模型。

误差项的独立性和同方差性可以通过多种方法进行检验

  1. 独立性检验:

我们可以使用Durbin-Watson检验来检验误差项是否具有独立性。Durbin-Watson统计量的值在0和4之间,值越接近2表明误差项的自相关程度越小,误差项越具有独立性。

下面是一个使用statsmodels库中OLS类的例子

import statsmodels.api as sm
import numpy as np

# 构造数据
np.random.seed(1234)
X = np.random.rand(50, 3)
y = X.sum(axis=1) + np.random.randn(50) * 0.1

# 拟合OLS模型
model = sm.OLS(y, sm.add_constant(X))
result = model.fit()

# 进行Durbin-Watson检验
dw = sm.stats.stattools.durbin_watson(result.resid)
print("Durbin-Watson statistic:", dw)

Durbin-Watson statistic: 1.9533114474340876
由于Durbin-Watson统计量的值接近2,说明误差项具有较好的独立性。

  1. 同方差性检验:

我们可以使用Breusch-Pagan检验来检验误差项是否具有同方差性。Breusch-Pagan检验的原假设为误差项方差不随自变量的变化而变化,备择假设为误差项方差随自变量的变化而变化。

下面是一个使用statsmodels库中的OLS类和diagnostic子模块的例子:

import statsmodels.api as sm
import statsmodels.stats.diagnostic as smd
import numpy as np

# 构造数据
np.random.seed(1234)
X = np.random.rand(50, 3)
y = X.sum(axis=1) + np.random.randn(50) * 0.1

# 拟合OLS模型
model = sm.OLS(y, sm.add_constant(X))
result = model.fit()

# 进行Breusch-Pagan检验
bp = smd.het_breuschpagan(result.resid, result.model.exog)
print("Breusch-Pagan statistic:", bp[0])
print("p-value:", bp[1])

Breusch-Pagan statistic: 3.849480021120155
p-value: 0.27818299528796425
由于p-value大于显著性水平0.05,因此我们不能拒绝原假设,即误差项方差不随自变量的变化而变化,说明误差项具有同方差性。

logistic 回归
进行特征选择时,通常需要进行以下步骤:

  • 选择可能相关的特征: 从所有可能的特征中,选择那些可能与目标变量相关的特征。可以使用领域知识、数据可视化或统计分析等方法来确定这些特征。
  • 训练模型并进行特征选择: 将这些可能相关的特征作为输入,训练 logistic回归模型,并使用特征选择方法来选择最终的特征子集。通常使用正则化方法(例如 L1 正则化)来降低不相关特征的影响。
  • 评估模型性能: 评估选择出来的特征子集的性能,以确定是否需要进一步调整或添加特征。常用的评估指标包括准确率、召回率、精确度、F1 分数等。

当你得出一个 logistic 回归模型后,可以使用各种评估指标来评价模型的性能。以下是一些常用的评价指标:

  • 准确率(accuracy): 分类正确的样本数与总样本数的比例。
  • 召回率(recall): 正确预测为正类别的样本数占所有正类别样本数的比例。
  • 精确度(precision): 正确预测为正类别的样本数占所有预测为正类别的样本数的比例。
  • F1 分数(F1 score): 综合考虑精确度和召回率,是精确度和召回率的调和平均数。

可以使用混淆矩阵、ROC 曲线和 AUC(Area Under the Curve)等来计算这些评价指标。在实际应用中,可以使用交叉验证等方法来评估模型的性能,并选择最佳的模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python Statsmodel 回归模型笔记 的相关文章

随机推荐

  • Spring MVC详解

    第一节 Spring MVC 简介 1 Spring MVC SpringMVC是一个Java 开源框架 是Spring Framework生态中的一个独立模块 它基于 Spring 实现了Web MVC 数据 业务与展现 设计模式的请求驱
  • Session的生命周期

    以前在学习的时候没怎么注意 今天又回过头来仔细研究研究了一下Session的生命周期 Session存储在服务器端 一般为了防止在服务器的内存中 为了高速存取 Sessinon在用户访问第一次访问服务器时创建 需要注意只有访问JSP Ser
  • 什么是DDL和DML语句?

    1 什么是DDL和DML语句 SQL语言分成三大类 1 DDL语言 2 DML语言 3 DCL语言 可恶 竟然在技术内幕只提及了一部分 内幕661 要知道DDL是什么意思 必须先了解它的英文全称 data definition langua
  • 【华为OD机试】TLV解析Ⅰ【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 TLV 编码是按 Tag Length Value 格式进行编码的 一段码流中的信元用Tag标识 Tag在码流中 唯一不重复 Length表示信元Value的长度 V
  • Linux 定时任务crontab配置

    https www cnblogs com zoulongbin p 6187238 html
  • [718]canal的配置详解

    文章目录 canal的配置加载方式 properties配置文件 canal properties介绍 instance properties介绍 canal的配置加载方式 介绍配置之前 先了解下canal的配置加载方式 canal配置方式
  • 【斯坦福CS224W笔记之一】 图的基本表示

    是来自b站up主同济子豪兄的中文精讲 自己做来总结给自己学习滴 如果感兴趣的话可以去b站搜索或者去子豪兄的github图神经进行学习 https github com TommyZihao zihao course blob main CS
  • Java线程安全与等待通知

    目录 1 线程不安全原因 1 1 引入 线程不安全的例子 抢占式执行 1 2 线程不安全的原因 5点 其他 2 抢占式执行引起的线程不安全 synchronized 3 内存可见性引起的线程不安全 volatile 3 1 例子 编译器优化
  • Win10操作系统隐藏6个实用小功能

    目录 功能一 分屏 功能二 录屏 功能三 截图 功能四 便签功能 功能五 视频剪辑 功能六 计算器 功能一 分屏 Win10操作系统其实是自带分屏功能的 这个功能对我来说真的太喜欢了 尤其是核对文档的时候 真的是太方便了 操作方法 在文档页
  • 内网离线安装Docker

    文章目录 描述 下载docker离线包地址 1 安装docker 1 下载 Docker 二进制文件 离线安装包 2 上传离线包 3 解压安装包 4 将docker 相关命令拷贝到 usr bin 5 docker注册成系统服务 6 添加执
  • QT--信号槽与带参Lambda表达式

    一 常规的不带参数的Lambda表达式响应槽函数 connect ui btn QushButton clicked to do something 二 带参的Lambda表达式响应槽函数 connect ui spbox static c
  • ArcSDE超出最大连接数问题解决

    ARCSDE数据库默认连接的实例数为48 可用 sdemon o info I users 命令查看当前的用户链接数 因为连接的用户很多时 会导致实例数不够用 这个时候需要对连接的实例数进行修改 修改方法如下 1 plsql登录sde用户
  • 你还没有Aspose 2021中文开发指南吗?中文指南打包带走

    说到文档处理 就得来说说Aspose系列 Aspose是全球领先的图表控件开发商 旗下产品覆盖Word Excel PDF 条码 ZIP CAD HTML 电子邮件 PSD等各个文档管理领域 为全球 NET Java C 等各大平台程序员提
  • ARM平台移植libcurl curl-7.49.0

    libcurl是免费的轻量级的客户端网络库 支持DICT FILE FTP FTPS Gopher HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3 POP3S RTMP RTSP SCP SFTP SMTP SM
  • SpringMVC重要接口(三)HttpMessageConverter

    大部分人的第一反应是通过SpringMVC拦截器 Interceptor 中的postHandler方法处理 实际这是行不通的 因为当程序运行到该方法 是在返回数据之后 渲染页面之前 所以这时候HttpServletResponse中的输出
  • C++-类和对象(上)

    类和对象 上 一 构造函数 1 概念 2 特性 二 析构函数 1 概念 2 特性 三 拷贝构造 1 概念 2 特性 四 运算符重载 1 概念 2 赋值运算符重载 五 重载与const 重载 六 总结 一 构造函数 1 概念 class St
  • Java后端、前端、大数据、python、Golang学习路线

    面向招聘要求学编程 加油 小y同学 blibli很多资源 黑马 尚硅谷 狂神说等等 1 后端 Java基础 完成 Java Web 完成 Maven 完成 Git 完成 SSM Spring框架 SpringMVC 持久层框架Mybatis
  • 充电IC和电量计的驱动调试

    LK是little kernel的缩写 高通平台android普遍采用LK作为其bootloader LK是一个开源项目 但是 LK只是整个系统的引导部分 所以它不是独立存在 LK是一个功能极其强大的bootloader 但只支持arm和x
  • 手把手教SYSU_2023SpringRL之实践作业二 (期末):Multi-Agent Reinforcement Learning (MARL)

    手把手教SYSU 2023SpringRL之实践作业二 期末 Multi Agent Reinforcement Learning MARL 0 前言 最终成绩90 1 环境概述 观测空间 动作空间 奖励函数 2 代码实战 训练环境配置 训
  • python Statsmodel 回归模型笔记

    Statsmodels是Python中一种常用的统计分析库 支持多种回归模型的建立和分析 以下是Statsmodels中常见的几种回归模型及其用途 线性回归模型 Linear Regression Model 用于建立自变量和因变量之间线性