数学建模常用模型(五):多元回归模型

news2024/11/19 1:36:47

数学建模常用模型(五):多元回归模型

由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候,通常采取搜集大量数据的办法,基于对数据的统计分析去建立模型,其中用途最为广泛的一类随即模型就是统计回归模型。
回归模型确定的变量之间是相关关系,在大量的观察下,会表现出一定的规律性,可以借助函数关系式来表达,这种函数就称为回归函数或回归方程。
这是我自己总结的一些代码和资料(本文中的代码以及参考书籍等),放在github上供大家参考:https://github.com/HuaandQi/Mathematical-modeling.git

1.用回归模型解题的步骤

一:确定回归模型属于那种基本类型,然后通过计算得到回归方程的表达式;
①根据试验数据画出散点图;
②确定经验公式的函数类型;
③通过最小二乘法得到正规方程组;
④求解方程组,得到回归方程的表达式。

二:是对回归模型进行显著性检验。yunx
①相关系数检验,检验线性相关程度的大小;
②F检验法(这两种检验方法可以任意选);
③残差分析;
④对于多元回归分析还要进行因素的主次排序;
如果检验结果表示此模型的显著性很差,那么应当另选回归模型了。

2.模型的转化

非线性的回归模型可以通过线性变换转变为线性的方程来进行求解;
函数关系式:可以通过线性变换:转化为一元线性方程组来求解,对于多元的也可以进行类似的转换。

3. 程序实例

3.1多元线性回归模型

一元线性回归是一个主要影响因素作为自变量来解释因变量的变化,但是在现实问题研究中,因变量的变化往往受几个重要因素的影响,此时就需要用两个或两个以上的影响因素作为自变量来解释因变量的变化,这就是多元回归亦称多重回归。当多个自变量与因变量之间是线性关系时,所进行的回归分析就是多元线性回归。

import pandas as pd
import numpy as np
import statsmodels.api as sm# 实现了类似于二元中的统计模型,比如ols普通最小二乘法
import statsmodels.stats.api as sms#实现了统计工具,比如t检验、F检验...
import statsmodels.formula.api as smf
import scipy

np.random.seed(991)# 随机数种子

# np.random.normal(loc=0.0, scale=1.0, size=None)
# loc:float  此概率分布的均值(对应着整个分布的中心),loc=0说明这一个以Y轴为对称轴的正态分布,
# scale:float 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
# size:int or tuple of ints  输出的shape,默认为None,只输出一个值
# 数据生成
x1 = np.random.normal(0,0.4,100)# 生成符合正态分布的随机数(均值为0,标准差0.4,所生成随机数的个数为100)
x2 = np.random.normal(0,0.6,100)
x3 = np.random.normal(0,0.2,100)
eps = np.random.normal(0,0.05,100)# 生成噪声数据,保证后面模拟所生成的因变量的数据比较接近实际的环境

X = np.c_[x1,x2,x3]# 调用c_函数来生成自变量的数据的矩阵,按照列进行生成的;100×3的矩阵
beta = [0.1,0.2,0.7]# 生成模拟数据时候的系数的值
y = np.dot(X,beta) + eps# 点积+噪声(dot是表示乘)
X_model = sm.add_constant(X)# add_constant给矩阵加上一列常量1,便于估计多元线性回归模型的截距,也是便于后面进行参数估计时的计算
model = sm.OLS(y,X_model)# 调用OLS普通最小二乘法来求解
# 下面是进行参数估计,参数估计的主要目的是估计出回归系数,根据参数估计结果来计算统计量,
# 这些统计量主要的目的就是对我们模型的有效性或是显著性水平来进行验证。
results = model.fit()# fit拟合
results.summary()# summary方法主要是为了显示拟合的结果

3.2非线性回归模型

非线性回归是线性回归的延伸,线性就是每个变量的指数都是 1,而非线性就是至少有一个变量的指数不是 1。生活中,很多现象之间的关系往往不是线性关系。选择合适的曲线类型不是一件轻而易举的工作,主要依靠专业知识和经验。

import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras

#建立随机数作为数据集
x_data = np.linspace(-0.5,0.5,200)  #从-0.5到0.5取均匀的200个数
noise = np.random.normal(0,0.02,x_data.shape)
y_data = np.square(x_data)+noise

#使用keras的Sequential函数建立一个顺序模型
model = keras.Sequential()
#在模型中添加全连接层和激活函数
model.add(keras.layers.Dense(units=10,input_dim=1))
model.add(keras.layers.Activation('tanh'))
model.add(keras.layers.Dense(units=1))
model.add(keras.layers.Activation('tanh'))
 
#定义优化算法
sgd = keras.optimizers.SGD(learning_rate=0.3)
#优化方法:sgd(随机梯度下降算法)
#损失函数:mse(均方误差)
model.compile(optimizer=sgd,loss='mse')

for step in range(3001):
    #每次训练一个批次
    cost = model.train_on_batch(x_data,y_data)
    #每500个batch打印一次cost
    if step % 500 == 0:
        print('cost:',cost)

#x_data输入到网络中,得到预测值y_pred
y_pred = model.predict(x_data)
 
#显示随机点的结果
plt.scatter(x_data,y_data)
 
#显示预测点的结果
plt.plot(x_data,y_pred,'r-',lw=3)
plt.show()

4.运行结果

4.1多元线性回归模型运行结果

在这里插入图片描述

4.2非线性回归模型运行结果

在这里插入图片描述

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

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

相关文章

docker中运行RabbitMq的启用插件指南

我们使用 Docker 来运行 RabbitMQ,有时需要启用一些插件,这个与正常安装的启用插件的步骤会有所不同。以下是在 Docker 中启用 RabbitMQ 插件的一般步骤: 首先,确认已经将 rabbitmq_delayed_message_exchange-3.12.0.ez 插件文件复…

raid5两块磁盘掉线导致阵列崩溃的服务器数据恢复案例

服务器数据恢复环境: DELL PowerVault系列某型号存储,15块硬盘搭建了一组RAID5磁盘阵列。 服务器故障&检测: 存储设备raid5阵列中一块磁盘由于未知原因离线,管理员对该磁盘阵列进行了同步操作。在同步的过程中又有一块磁盘指示…

使用 hbuilderx 配置 MuMu模拟器进行调试

第一步 先安装MuMu模拟器,调成手机模式。 第二步 查看MuMu模拟器监听的端口。 在安装目录下 /vms/MuMuPlayer-12.0-0/MuMuPlayer-12.0-0 旧端口7555,新端口号16384 切换到安装目录下的 /shell,然后shift右击,打开 powershell&a…

【服务器数据恢复】raid5崩溃的redhat linux系统数据恢复案例

服务器数据恢复环境: 一台ibm某型号服务器,5块硬盘组建一组raid5磁盘阵列,redhat linux操作系统,上层部署有oracle数据库。 服务器故障: raid5阵列中两块硬盘离线,服务器崩溃。经过初检发现故障服务器中的…

基于SpringBoot的医护人员排班系统【附开题(bao告)和万字文档(Lun文)和搭建文档】

主要功能 前台登录: ①首页:医院信息展示、医护信息展示、排班信息展示、投诉信息展示 ②医院信息:名称查询、医院查看、医院简介、可以点赞、可以评论、点我收藏 ③医护信息:根据工号、姓名查询、点击查看医护信息、可以收藏 ④…

Simulink仿真模块 - Band-Limited White Noise

Band-Limited White Noise模块的功能是在连续系统中引入白噪声。它所在的库为: Simulink / Sources 如图所示: Band-Limited White Noise 模块生成适合在连续系统或混合系统中使用的正态分布随机数。 白噪声仿真 从理论上讲,连续白噪声的相关时间为 0,功率谱密度 …

飞利浦的护眼台灯好用吗?南卡/飞利浦/雷士对比测评,看看哪款更好用!

日常生活中,灯光对于我们重要性不用多说。不管是学习还是办公等环境都需要合适的光线,而台灯作为补充光线小型家电,基本每个家庭里都会备着一台,特别是对于长期使用电脑的上班族或者需要长时间学习的学生这类人员。但是台灯的种类…

【大数据技术】hive 窗口函数sum range between的详细介绍

【大数据技术】hive 窗口函数sum range between的详细介绍 数据准备 建表 create table range_test( name string, month int , sales int ) row format delimited fields terminated by "," ;插入数据 load data local inpath "/home/xx/test/1.t…

双击就能运行的Win95,流畅稳定还内置大型游戏

像咱这样的新时代互联网民工,上班面对 Win10/11 下班也还是一样,难免有时候觉得腻。 回味起当初的 Win7、Win8、Win XP ,不管当初受过什么伤,现在只有美好的回忆。 大家可能还想象过,用现在配置去运行老系统。 不知高…

uniapp 小程序 vue TypeError: Cannot read property ‘toString‘ of undefined

是因为对字符串使用toString的时候页面中的数据还没有加载 。错误代码: 可以使用 v-if 修改为:

AR是现实的商业创新,还是虚幻的电子梦境?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 在本期节目中,我们将深入探讨AVAR的创始人胡雅婷的创业故事。 我们从年轻人偏爱虚拟偶像和热衷元宇宙创业的社会话题出发&…

递归的深层次理解+初始搜索算法

1)什么是递归:就是函数自己调用自己的过程 2)为什么会使用到递归:主问题->相同的子问题,相同的子问题->一样相同的子问题 3)递归结束的条件:也就是细节和出口最小的不能在继续进行分割的子问题 4)宏观看待递归的过程: 1)不要在意递归展开的细节图 2)那递归的函…

全面分析MySQL?ERROR?1045出现的原因及解决

目录 通常从网上都能找到解决方案 1.停止服务2.跳过验证3.修改密码4.重启服务原因分析 SO 解决办法 在命令行输入mysql -u root –p,输入密码,或通过工具连接数据库时,经常出现下面的错误信息,相信该错误信息很多人在使用MySQL…

使用Kali Linux 暴力破解wifi密码详细步骤

使用Kali Linux 暴力破解wifi密码详细步骤所谓暴力破解就是穷举法,将密码字典中每一个密码依次去与握手包中的密码进行匹配,直到匹配成功。所以能否成功破解wifi密码取决于密码字典本身是否包含了这个密码。破解的时间取决于CPU的运算速度以及密码本身的…

信息安全-数据安全-数据安全平台建设实践

背景 在大数据时代,数据已经成为公司的核心竞争力。此前,我们介绍了美团酒旅起源数据治理平台的建设与实践,主要是通过各种数据分析挖掘手段,为公司发展决策和业务开展提供数据支持。 近期,业内数据安全事件频发&…

日本社交网络市场:Facebook 与本土巨头的竞争分析

摘要:Facebook作为全球最大的社交媒体平台之一,成功地击败了日本的本土社交网站,包括Mixi、DeNA和Gree等。 社交媒体在全球范围内迅速崛起,改变了人们的社交方式和信息传播方式。然而,在不同国家和地区,由于…

尚硅谷Docker实战教程-笔记08【高级篇,Docker复杂安装详说】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇,Docker理念简介、官网介绍、平台入门图解、平台架构图解】…

易基因: DNA甲基化差异水平分析中的DMC、DMR、DMG鉴定 | 干货分享

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 DNA甲基化(DNA methylation)为DNA化学修饰的一种形式,能够在不改变DNA序列的前提下,改变遗传表现。所谓DNA甲基化是指在DNA甲基化转移酶的…

跑深度学习nvidia驱动忽然实效的详细解决方法

由于经常跑深度学习,所以对于显卡驱动什么的都还是整的比较明白的不含糊,所以都能跑的起来。但是今天跑pytorch框架时(用到cuda)忽然给我报了个错: RuntimeError: No CUDA GPUs are available这给我整不会了&#xff…

HarmonyOS学习路之开发篇—数据管理(轻量级数据存储)

轻量级数据存储概述 轻量级数据存储适用于对Key-Value结构的数据进行存取和持久化操作。应用获取某个轻量级存储对象后,该存储对象中的数据将会被缓存在内存中,以便应用获得更快的数据存取速度。应用也可以将缓存的数据再次写回文本文件中进行持久化存储…