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

回归分析系列1-多元线性回归

03 多元线性回归

3.1 简介

多元线性回归是简单线性回归的扩展,允许我们同时研究多个自变量对因变量的影响。多元回归模型可以表示为:

y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_p x_p + \epsilon

其中,x1,x2,…,xp是 p 个自变量,β0 是截距,β1,β2,…,βp是对应的回归系数,ϵ是误差项。

3.2 估计回归系数

类似于简单线性回归,多元线性回归的系数估计也通常使用最小二乘法。我们选择回归系数,使得实际观测值与模型预测值之间的残差平方和最小。

在Python中,我们可以使用statsmodels库来拟合多元线性回归模型。下面是一个示例代码:

import numpy as np
import pandas as pd
import statsmodels.api as sm# 生成模拟数据
np.random.seed(0)
X = np.random.rand(100, 2)  # 100个样本,每个样本有2个自变量
y = 2 + 3 * X[:, 0] + 5 * X[:, 1] + np.random.randn(100)  # 因变量# 拟合多元线性回归模型
X = sm.add_constant(X)  # 添加截距项
model = sm.OLS(y, X).fit()# 输出回归结果
print(model.summary())

在这个例子中,我们生成了两个自变量,并通过多元线性回归模型来估计它们对因变量的影响。

3.3 模型拟合与解释

多元线性回归的拟合结果包含多个回归系数,每个系数反映了对应自变量对因变量的影响。通过这些系数,我们可以判断每个自变量在控制其他变量的情况下对因变量的边际影响。

例如,如果我们在模型中包含了两个自变量 x1和 x2​,我们可以解释回归系数\beta_1表示在 x2不变的情况下,x1 每增加一个单位,y 增加的量。

3.4 假设检验与模型选择

在多元回归分析中,我们通常会进行假设检验来评估每个自变量的显著性。我们通常检验的假设是 H0:\beta_j=0,即某个自变量对因变量没有显著影响。

在Python中,statsmodels 的回归结果会自动提供每个回归系数的 t 值和 p 值,这些值可以帮助我们进行假设检验。

此外,我们还可以使用 AIC(Akaike Information Criterion)和 BIC(Bayesian Information Criterion)等信息准则来比较不同模型的拟合效果,从而选择最佳模型。

3.5 多重共线性

多元回归模型的一个潜在问题是多重共线性,即自变量之间存在较高的相关性。这可能导致估计的回归系数不稳定,并且使得模型对数据中的噪声过于敏感。

为了检测多重共线性,我们可以计算方差膨胀因子(Variance Inflation Factor, VIF)。VIF值越高,表明自变量之间的相关性越强,通常VIF大于10被认为是共线性较强的标志。

在Python中,可以使用statsmodels库的variance_inflation_factor函数来计算VIF值:

from statsmodels.stats.outliers_influence import variance_inflation_factor# 计算VIF值
vif = pd.DataFrame()
vif["VIF Factor"] = [variance_inflation_factor(X, i) for i in range(X.shape[1])]
vif["features"] = ["const", "x1", "x2"]print(vif)

通过这个表格,我们可以识别出具有高VIF值的自变量,并考虑是否需要对模型进行调整,例如通过去除变量或使用正则化技术。

3.6 模型诊断

在多元线性回归中,模型诊断与简单线性回归类似,但也存在一些特有的挑战。我们依然需要检查残差的正态性、同方差性和独立性,同时还需要关注多重共线性和异常点的影响。

残差正态性

残差的正态性是最小二乘估计量的一个重要假设。可以通过绘制QQ图来检验残差是否服从正态分布。

import matplotlib.pyplot as plt
import scipy.stats as stats# 绘制QQ图
sm.qqplot(model.resid, line='s')
plt.show()
残差同方差性

同方差性假设要求残差的方差在不同的自变量值上保持恒定。可以通过绘制残差与预测值的散点图来检验这一假设。

# 绘制残差与预测值的散点图
plt.scatter(model.fittedvalues, model.resid)
plt.axhline(y=0, color='r', linestyle='-')
plt.xlabel('Fitted values')
plt.ylabel('Residuals')
plt.show()

如果残差图显示出漏斗形状,则可能存在异方差性。

多重共线性

如前所述,多重共线性会导致回归系数的不稳定,影响模型的解释性。除了使用VIF值外,我们还可以通过观察回归系数的变化来识别共线性问题。

异常值与杠杆点

异常值和杠杆点可能会对模型产生过大的影响。可以通过Cook’s距离来识别这些点。

influence = model.get_influence()
cooks = influence.cooks_distance[0]plt.stem(np.arange(len(cooks)), cooks, markerfmt=",")
plt.title('Cook\'s Distance')
plt.show()

如果某些点的Cook’s距离特别大,则表明它们可能对模型拟合有不成比例的影响。

3.7 高维数据中的回归

在实际应用中,自变量的数量有时可能远多于观测值的数量。这种情况下,传统的最小二乘回归可能不适用,因为模型会出现过拟合问题,预测能力下降。为了解决这一问题,通常采用以下方法:

岭回归

岭回归通过在最小二乘目标函数中添加一个惩罚项来抑制回归系数的大小,从而减小多重共线性问题对模型的影响。这个惩罚项通常是回归系数的平方和的某个倍数。

from sklearn.linear_model import Ridge# 拟合岭回归模型
ridge_model = Ridge(alpha=1.0)  # alpha为正则化参数
ridge_model.fit(X[:, 1:], y)  # 注意在这里我们不包含截距项# 输出回归系数
print(ridge_model.coef_)
Lasso回归

Lasso回归(Least Absolute Shrinkage and Selection Operator)也通过增加一个惩罚项来限制回归系数的绝对值,从而可以进行变量选择,即将不重要的变量系数缩为零。

from sklearn.linear_model import Lasso# 拟合Lasso回归模型
lasso_model = Lasso(alpha=0.1)
lasso_model.fit(X[:, 1:], y)# 输出回归系数
print(lasso_model.coef_)
弹性网回归

弹性网回归结合了岭回归和Lasso回归的惩罚项,适用于特征之间高度相关的情况。

from sklearn.linear_model import ElasticNet# 拟合弹性网回归模型
elastic_net_model = ElasticNet(alpha=0.1, l1_ratio=0.5)
elastic_net_model.fit(X[:, 1:], y)# 输出回归系数
print(elastic_net_model.coef_)
3.8 示例:犯罪率与社会经济因素

让我们通过一个具体的例子来理解多元线性回归。在这个例子中,我们研究一个数据集,探索城市中的犯罪率与一系列社会经济因素之间的关系。假设我们有以下变量:

  • 犯罪率(因变量)
  • 城市人口密度
  • 城市中的失业率
  • 平均收入

我们可以通过以下代码来加载数据并拟合多元线性回归模型:

# 假设我们有一个数据框包含以上变量
data = pd.DataFrame({'crime_rate': np.random.rand(100),'population_density': np.random.rand(100),'unemployment_rate': np.random.rand(100),'average_income': np.random.rand(100)
})# 定义自变量和因变量
X = data[['population_density', 'unemployment_rate', 'average_income']]
y = data['crime_rate']# 添加截距项
X = sm.add_constant(X)# 拟合多元线性回归模型
model = sm.OLS(y, X).fit()# 输出回归结果
print(model.summary())

这个模型将帮助我们理解不同社会经济因素如何共同影响犯罪率。通过观察回归系数和p值,我们可以识别出哪些因素对犯罪率有显著影响。

相关文章:

回归分析系列1-多元线性回归

03 多元线性回归 3.1 简介 多元线性回归是简单线性回归的扩展,允许我们同时研究多个自变量对因变量的影响。多元回归模型可以表示为: 其中,x1,x2,…,xp是 p 个自变量,β0 是截距,β1,β2,…,βp是对应的回归系数&…...

web小游戏开发:拼图——蜂巢拼图

web小游戏开发:拼图——蜂巢拼图 蜂巢拼图游戏规则调整选项切图计算六边形的宽和高铺上背景画出蜂巢制作图块游戏方法打乱排列拖拽图块开始拖拽拖拽移动放置图块小结蜂巢拼图 之前我们已经完成了长方形的拼图代码,包括了三个游戏方式,并讨论了带咬合齿的游戏代码该如何制作…...

springCloud集成activiti5.22.0流程引擎(分支)

springCloud集成activiti5.22.0流程引擎 点关注不迷路,欢迎再访! 精简博客内容,尽量已行业术语来分享。 努力做到对每一位认可自己的读者负责。 帮助别人的同时更是丰富自己的良机。 文章目录 springCloud集成activiti5.22.0流程引擎一.Sprin…...

ppt模板免费网站有哪些?自动美化工具推荐

新的8月,是时候以全新面貌迎接高效办公挑战了! 想要你的PPT演示脱颖而出,却苦于找不到精美又免费的模板? 别担心,今天我来告诉你们:哪个软件有精美免费ppt模板? 今天我为你们精心汇总了6款PPT…...

java实现解析pdf格式发票

为了减少用户工作量及误操作的可能性&#xff0c;需要实现用户上传PDF格式的发票&#xff0c;系统通过解析PDF文件获取发票内容&#xff0c;并直接将其写入表单。以下文章记录了功能实现的代码。 发票样式 发票内容解析 引用Maven 使用pdfbox <dependency><groupI…...

数据结构初阶——算法复杂度超详解

文章目录 1. 数据结构前言1. 1 数据结构1. 2 算法 2. 算法效率2. 1 复杂度的概念 3. 时间复杂度3. 1 大O的渐进表示法3. 2 时间复杂度计算示例3. 2. 1 示例13. 2. 2 示例23. 2. 3 示例33. 2. 4 示例43. 2. 5 示例53. 2. 6 示例63. 2. 7 示例7 4. 空间复杂度4. 1 空间复杂度计算…...

ArcGIS Pro SDK (十二)布局 4 预定义的形状和箭头

ArcGIS Pro SDK (十二)布局 4 预定义的形状和箭头 文章目录 ArcGIS Pro SDK (十二)布局 4 预定义的形状和箭头1 创建预定义的形状图形元素2 创建预定义的形状图形元素3 创建预定义的形状图形元素4 创建线箭头元素环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 1 …...

在 Ubuntu 14.04 服务器上安装 ISPConfig3 的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 虽然命令行是一个强大的工具&#xff0c;可以让您在许多情况下快速轻松地工作&#xff0c;但在某些情况下&#xff0c;可视化界面…...

ELK学习笔记

ElasticStack分布式日志系统概述 Elasticsearch: 一个分布式搜索引擎&#xff0c;能够快速存储、搜索和分析大量数据。核心概念包括索引&#xff08;Index&#xff09;、文档&#xff08;Document&#xff09;和分片&#xff08;Shard&#xff09;。使用 RESTful API 进行数据操…...

Python+Selenium+Pytest+POM自动化测试框架封装详解

1、测试框架简介 1&#xff09;测试框架的优点 代码复用率高&#xff0c;如果不使用框架的话&#xff0c;代码会显得很冗余。可以组装日志、报告、邮件等一些高级功能。提高元素等数据的可维护性&#xff0c;元素发生变化时&#xff0c;只需要更新一下配置文件。使用更灵活的…...

Hidden Marlov Model(HMM)

一、Model 1、将声学特征设为X&#xff0c;经过语音识别得到的tokens设为Y&#xff0c;目标是找到通过X得到Y的最大概率&#xff0c;可以通过概率公式改变为 分为两个概率 2、将tokens序列Y转化为states序列S&#xff0c;声学特征分得更细 3、从states到声学特征的过程 二、HM…...

mamba的安装及下载速度慢问题解决

同事反馈mamba的安装时网络慢 mamba是conda的加速工具&#xff0c;相比于conda 对包和环境的管理&#xff0c;mamba可以实现并行运算。相比于 conda&#xff0c;mamba 是用C重写了 conda 的部分功能&#xff0c;运行效率显著提高&#xff0c;可以进行并行的下载&#xff0c;使…...

【Linux入门】Linux环境搭建

目录 前言 一、发行版本 二、搭建Linux环境 1.Linux环境搭建方式 2.虚拟机安装Ubuntu 22.02.4 1&#xff09;安装VMWare 2&#xff09;下载镜像源 3&#xff09;添加虚拟机 4&#xff09;换源 5&#xff09;安装VM Tools 6)添加快照 总结 前言 Linux是一款自由和开放…...

CPU缓存一致性机制详解

CPU缓存一致性机制详解 在多核处理器中&#xff0c;缓存一致性是保证系统正常运行的重要环节。本文详细介绍了缓存一致性协议、写入策略、总线嗅探、目录协议等相关概念&#xff0c;并通过示例代码解释了这些机制是如何在实际应用中工作的。通过学习本文&#xff0c;读者可以深…...

Android 12系统源码_屏幕设备(一)DisplayManagerService的启动

前言 DisplayManagerService是Android Framework中管理显示屏幕相关的模块&#xff0c;各种Display的连接、配置等&#xff0c;都是通过DMS和来管理控制。 在DMS模块中&#xff0c;对显示屏幕的描述分为物理显示屏(physical display)和逻辑显示屏(logical display)&#xff0c…...

《AI视频类工具之十——​D-ID》

一.简介 官网:D-ID | The #1 Choice for AI Generated Video Creation Platform D-ID是一个人工智能生成的视频创建平台,可以轻松快速地从文本输入中创建高质量、高性价比和引人入胜的视频,背后的Al技术是由Stable Difusion和GPT.3提供支持,可以在没有任何技术知识的情况…...

【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用

文章目录 局域网 LAN广域网 WAN网络中的重要概念IP 地址端口号 认识协议协议分层是什么OSI 七层网络模型TCP/IP 五层网络模型&#xff08;或四层&#xff09;物理层传输层网络层数据链表层应用层网络设备所在分层 封装和分用[站在发送方视角]&#xff08;封装&#xff09;[站在…...

我司搜索中台的三次演变

本人从入职就开始负责我司的搜索中台了&#xff0c;总共是经历了三个大版本的迭代。 分别是&#xff1a; 基于阿里云智能开放搜索OpenSearch实现的第一代自研&#xff0c;开源canal&#xff08;数据同步&#xff09; 底层阿里云elasticsearch 对索引封装 实现的第二代自研&a…...

html+css+js网页设计 电商模版4个页面

htmlcssjs网页设计 电商模版4个页面 带js 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&…...

区块链技术在Facebook中的潜力:未来趋势与挑战

数据安全的新高度 区块链技术以其去中心化和不可篡改的特性&#xff0c;正在成为提升数据安全和隐私保护的重要工具。Facebook作为全球最大的社交媒体平台之一&#xff0c;正积极探索如何将区块链技术应用于其平台&#xff0c;以增强用户数据的安全性和隐私保护。Facebook在应…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...