Python数学建模之回归分析

1.基本概念及应用场景        

        回归分析是一种预测性的建模技术,数学建模中常用回归分析技术寻找存在相关关系的变量间的数学表达式,并进行统计推断。例如,司机的鲁莽驾驶与交通事故的数量之间的关系就可以用回归分析研究。回归分析根据变量的数目分为一元回归和多元回归,根据自变量和因变量的表现形式分为线性和非线性

回归模型:描述因变量y如何依赖于自变量x和误差项e的方程。

回归方程:描述因变量y如何依赖于自变量x的方程。

2.回归分析的一般步骤

  • 确定回归方程中的解释变量和被解释变量
  • 确定回归模型,建立回归方程
  • 对回归方程进行各种检验
  • 用回归方程进行预测

3.一元线性回归分析

1.概念

例子:

  • 人均收入是否显著影响人均食品消费支出
  • 贷款余额是否影响到不良贷款
  • 航班正点率是否对顾客投诉次数有显著影响

回归模型: 

y=\beta _{0}+\beta _{1}x+\epsilon

\beta _{0}:截距

\beta _{1}:斜率

\epsilon:误差项,反映随机因数对y的影响,是不可避免的

回归方程:

y=\beta _{0}+\beta _{1}x

        若回归方程中的未知参数已知,则对于给定的x值,可计算出y的期望值。

        用样本统计量代替未知参数,就得到估计的回归方程,称回归直线。

2.最小二乘法求参数

        常用最小二乘法,即使残差(因变量的观察值与估计值的离差)平方和达到最小求参数:

Q=\sum (y-\widehat{y})^{2}=\sum (y-\widehat{\beta} _{0}-\widehat{\beta }_{1}x)^{2}

展开:

Q=\sum y^{2}+n\widehat{\beta} ^{2}_{0}+\widehat{\beta} ^{2}_{1}\sum x^{2}+2\widehat{\beta}_{0}\widehat{\beta}_{1}\sum x-2\widehat{\beta}_{0}\sum y-2\widehat{\beta}_{1}\sum xy

求偏导并整理:

\left\{\begin{matrix} \widehat{\beta }_{1}=\frac{n\sum xy-\sum x\sum y}{n\sum x^{2}-(\sum x)^2 }\\ \widehat{\beta }_{0}=\overline{y}-\widehat{\beta _{1}}\overline{x} \end{matrix}\right.

代入数据即可得到\widehat{\beta }_{0}\widehat{\beta }_{1}

3.点估计

        将x的值代入回归方程即可得对应\widehat{y}的点估计值。

4.区间估计

估计标准误差:

s_{e}=\sqrt{\frac{\sum (y-\widehat{y})^{2}}{n-k}}

        估计标准误差越小,则数据点围绕回归直线的分散程度越小,回归方程的代表性越大,可靠性越高。

置信区间:

\widehat{y_{0}}\pm t_{\frac{\alpha }{2}}s_{e}\sqrt{\frac{1}{n}+\frac{(x_{0}-\overline{x})^{2}}{\sum (x-\overline{x})^{2}}}

预测区间:

\widehat{y_{0}}\pm t_{\frac{\alpha }{2}}s_{e}\sqrt{1+\frac{1}{n}+\frac{(x_{0}-\overline{x})^{2}}{\sum (x-\overline{x})^{2}}}

\alpha:显著性水平

1-\alpha:置信水平

t_{\frac{\alpha }{2}}:即t_{\frac{\alpha }{2}}(n-k),n-k为残差自由度(样本容量-回归系数的数量),一元线性回归方程中k=2

模型建立和求解的Python代码:

import numpy as np
import statsmodels.api as sm
import scipy.stats as stats
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei')  # 用来正常显示中文标签
plt.rc('axes', unicode_minus=False)  # 用来正常显示负号# 输入数据
x = np.array([143, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 160, 162, 164])
y = np.array([88, 85, 88, 91, 92, 93, 93, 95, 96, 98, 97, 96, 98, 99, 100, 102])# 添加截距项
X = sm.add_constant(x)# 求参数值
model = sm.OLS(y, X).fit()
beta = model.params
print("参数值:")
print("beta0 =", beta[0])
print("beta1 =", beta[1])# 点估计
x0 = float(input("x="))
y_pred = beta[0] + beta[1] * x0
print("点估计预测值:", y_pred)# 计算标准误差
se = np.sqrt(model.mse_resid)# 自由度
n = len(x)
df = n - model.df_model - 1# 置信水平和 t 分位数
alpha = 0.05
t = np.abs(stats.t.ppf(alpha/2, df))# 计算置信区间和预测区间
x_mean = np.mean(x)
x_var = np.sum((x - x_mean)**2)
conf_interval = t * se * np.sqrt(1/n + (x - x_mean)**2 / x_var)
pred_interval = t * se * np.sqrt(1 + 1/n + (x - x_mean)**2 / x_var)# 绘制原始数据和回归直线
plt.scatter(x, y, color='blue', marker='*', label='原始数据')
plt.plot(x, model.fittedvalues, color='red', label='回归直线')
plt.xlabel('x')
plt.ylabel('y')# 绘制置信区间和预测区间
plt.fill_between(x, model.fittedvalues - conf_interval, model.fittedvalues + conf_interval, color='gray', alpha=0.3, label='置信区间')
plt.fill_between(x, model.fittedvalues - pred_interval, model.fittedvalues + pred_interval, color='yellow', alpha=0.3, label='预测区间')plt.legend()
plt.show()

5.模型检验

1.回归直线的拟合优度

        回归直线与各观测点的接近程度称为回归直线对数据的拟合优度。

        评价拟合优度的指标:

  • 总平方和(TSS):反映因变量的n个观测值与其均值的总离差

TSS=\sum y_{i}^{2}=\sum (y_{i}-\overline{y}_{i})^{2}

  • 回归平方和(ESS):反映了y的总变差中,由于x与y之间的线性关系引起的y的变化部分

ESS=\sum \widehat{y_{i}}^{2}=\sum (\widehat{y_{i}}-\overline{y}_{i})^{2}

  • 残差平方和(RSS):反映了其他因素对y变差的作用,是不能由回归直线来解释的y的变差部分

RSS=\sum e_{i}^{2}=\sum (y_{i}-\widehat{y_{i}})^{2}99

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

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

相关文章

论文阅读:GamutMLP A Lightweight MLP for Color Loss Recovery

这篇文章是关于色彩恢复的一项工作,发表在 CVPR2023,其中之一的作者是 Michael S. Brown,这个老师是加拿大 York 大学的,也是 ISP 领域的大牛,现在好像也在三星研究院担任兼职,这个老师做了很多这种类似的工…

系统架构25 - 软件架构设计(4)

软件架构复用 软件产品线定义分类原因复用对象及形式基本过程 软件产品线 软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕…

九、OpenCV自带colormap

项目功能实现&#xff1a;每隔1500ms轮流自动播放不同风格图像显示&#xff0c;按下Esc键退出 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 colormap.h #pragma once #include<opencv2/opencv.hpp> using namespace cv;class ColorMap { public:vo…

Mybatis开发辅助神器p6spy

Mybatis什么都好&#xff0c;就是不能打印完整的SQL语句&#xff0c;虽然可以根据数据来判断一二&#xff0c;但始终不能直观的看到实际语句。这对我们想用完整语句去数据库里执行&#xff0c;带来了不便。 怎么说呢不管用其他什么方式来实现完整语句&#xff0c;都始终不是Myb…

《Linux 简易速速上手小册》第6章: 磁盘管理与文件系统(2024 最新版)

文章目录 6.1 磁盘分区与格式化6.1.1 重点基础知识6.1.2 重点案例&#xff1a;为新硬盘配置分区和文件系统6.1.3 拓展案例 1&#xff1a;创建交换分区6.1.4 拓展案例 2&#xff1a;使用 LVM 管理分区 6.2 挂载与卸载文件系统6.2.1 重点基础知识6.2.2 重点案例&#xff1a;挂载新…

近十年金融资产收益率

通过掌握大类资产的历年收益率数据&#xff0c;做基于数据的投资&#xff0c;提高胜率和收益率。 下面是同花顺梳理的2014至2023大类金融资产收益率&#xff1a; 基于这个数据&#xff0c;我们再统计两项指标&#xff1a; 1. 每种资产在近十年的投资胜率&#xff08;收益率为…

牛客2024年情人节比赛 娱乐报告

前言 挺欢乐的比赛&#xff0c;有趣 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 第二杯半价 思路: 模拟 分奇偶进行讨论 t int(input())for _ in range(t):n, x list(map(int, input().split()))if n % 2 1:print (n//2 * (x (x 1) // 2) x)else:pr…

RIDERS: Radar-Infrared Depth Estimation for Robust Sensing

RIDERS: 恶劣天气及环境下鲁棒的密集深度估计 论文链接&#xff1a;https://arxiv.org/pdf/2402.02067.pdf 作者单位&#xff1a;浙江大学, 慕尼黑工业大学 代码链接&#xff1a;https://github.com/MMOCKING/RIDERS 1. 摘要&#xff08;Abstract&#xff09; 恶劣的天气条件, …

python 自我检测题--part 1

1. Which way among them is used to create an event loop ? Window.mainloop() 2. Suppose we have a set a {10,9,8,7}, and we execute a.remove(14) what will happen ? Key error is raised. The remove() method removes the specified element from the set. Th…

imazing怎么连接苹果手机

imazing怎么连接苹果手机 要连接苹果手机&#xff0c;您可以选择使用数据线或无线网络&#xff08;Wi-Fi&#xff09;两种方式。以下是具体的步骤&#xff1a; 使用数据线连接&#xff1a; 准备工具&#xff1a;确保您的Mac或Windows电脑已经安装了iMazing软件&#xff0c;并且…

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图&#xff1a; linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

顾问聘请协议(模板)

甲方&#xff1a;________________   乙方&#xff1a;________________ 诚信合作是一切事业发展的基础&#xff0c;外部智力是企业进步的源泉。甲、乙双方经友好协商达成本协议&#xff0c;甲方愿意聘请乙方为特邀管理顾问&#xff0c;乙方愿按本协议内容与甲方合作。 一、合…

水果FL Studio21.2最新中文版功能特点介绍

FL Studio 21的特点和优势包括&#xff1a; 丰富的主题换肤&#xff1a;用户可以通过调整色调、饱和度、亮度、文本、仪表和步进序列器的颜色&#xff0c;来个性化定制FL Studio 21的外观&#xff0c;使其更符合个人审美或工作风格。更快的音频编辑&#xff1a;FL Studio 21集…

奇异递归模板模式应用1-对象计数

需求&#xff1a;有时遇到某些类特征相似而又没有共同的父类&#xff0c;希望能够知道这些类的创建数量之和。 思路&#xff1a;将这些类继承自同一个计数类&#xff0c;共享计数变量s_createCount信息&#xff0c;实现如下&#xff1a; class Counter { public:Counter() {s_…

Codeforces Round 925 (Div. 3)

D. Divisible Pairs 题意&#xff1a;给定一个长度为n(2<n<2*10^5)的数组&#xff0c;给出两个数x、y(1<x,y<10^9),找出完美对的个数 完美对满足 (aiaj)整除x (ai-aj)整除y 且&#xff08;1<i<j<n) 统计数组a中的完美对有多少个 思路&#xff1a;统计…

【2024年毕设系列】如何使用Anaconda和Pycharm

【2024年毕设系列】如何使用Anaconda和Pycharm 视频教程地址&#xff1a;【2024毕设系列】Anaconda和Pycharm如何使用_哔哩哔哩 Hi&#xff0c;各位好久不见&#xff0c;这里是肆十二&#xff0c;首先在这里给大伙拜年了。 诸位过完年之后估计又要开始为了大作业和毕业设计头疼…

Virt a Mate(VAM)游戏折腾记录

如有更新见原文&#xff1a;https://blog.iyatt.com/?p13283 1 前言 如果在网上看到有些视频名字带有 VAM 的&#xff0c;可能就是玩这个游戏录屏的。这个游戏可以建模、操作模型动作、构建场景等等。之前大致知道有这么个东西&#xff0c;只是电脑配置太差了&#xff0c;新…

Vue项目创建和nodejs使用

Vue项目创建和nodejs使用 一、环境准备1.1.安装 node.js【下载历史版本node-v14.21.3-x64】1.2.安装1.3.检查是否安装成功&#xff1a;1.4.在Node下新建两个文件夹 node_global和node_cache并设置权限1.5.配置npm在安装全局模块时的路径和缓存cache的路径1.6.配置系统变量&…

网安常用的三个攻击方式

1.渗透测试执行标准&#xff08;PTES&#xff09; 渗透测试执行标准由7个部分组成&#xff0c;包括前期交互、情报收集、威胁建模、漏洞分析、渗透利用、后渗透、撰写报告。在中国&#xff0c;渗透测试必须经过授权&#xff0c;否则就违背了网络安全法。前期交互主要指开展渗透…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Marquee组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Marquee组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Marquee组件 跑马灯组件&#xff0c;用于滚动展示一段单行文本&#xff0c;仅当…