酸雨降水问题——多元回归分析

2024-04-16 07:12

本文主要是介绍酸雨降水问题——多元回归分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

题目如下

数据集如下

解题方法

regress 函数

代码实现

得出结果


题目如下

        酸雨是降水中各种离子综合作用的结果。实际检测表明:城市降水pH值主要 受酸性离子[SO]、[NO]、[Ca²+]、[NH]影响。下表列出了我国部分城市降水 中[SO]、[NO]、[Ca²⁺]、[NH]的浓度和pH值数据。以[SO]、[NO]、 [Ca²+]、[NH]和组合因子([Ca²+]+[NH]/([SO]+[NO]))为自变量,分别 记为工,2,3,4,25。pH值为因变量y。下表中给出了北京等15个城市的城市降 水pH值和相应影响因素的一组观测值。试对此问题进行回归分析。

数据集如下

城市x1x2x3x4x5pHy
北京151.8162.8154.539.51.626.29
长春253.661.3156.521.21.796.71
锦州340.8123.8259.249.41.516.32
烟台289.139.1182.522.81.66.95
平顶山107.7138.3152.30.41.616.29
合肥110.3117.3141.931.81.314.73
苏州125.393.6200.214.41.024.63
上海104.375.8153.412.61.084.85
杭州59.968.2112.313.51.024.84
南宁26.627.761.64.90.824.82
桂林67.250107.219.70.924.83
重庆127.8151.1326.627.90.794.21
贵阳199.6174.3405.227.90.864.23
马鞍山12373.7139.215.11.275.33
广州175.1141.1254.933.31.14.39

解题方法

regress 函数

        在MATLAB中,regress函数被用于进行多元线性回归。它能够估计出回归系数并提供置信区间,还能输出残差以及其他有用的统计信息。这个函数特别适合简单的线性回归分析,当你想要快速地得到回归系数和它们的置信区间时。

        以下是regress函数的基本用法:

b = regress(Y,X); % 基本回归,Y 是因变量,X 是自变量
[b,bint,r,rint,stats] = regress(Y,X,alpha); % 给出详细的输出

这里的输入参数包含:

  • Y:因变量,是一个列向量。
  • X:自变量,包括一个常数项用于截距。X 是一个矩阵,每一列是一个自变量,行代表观测值。
  • alpha:显著性水平,用于定义置信区间(通常是0.05表示95%置信区间)。

输出参数说明:

  • b:回归系数的估计值,是一个列向量。
  • bint:系数的置信区间,是一个与 b 相同大小的矩阵,每行给出一个系数的置信区间。
  • r:残差,是一个列向量,即实际观测值和模型预测值之间的差。
  • rint:残差的置信区间,格式与 bint 相同。
  • stats:一个包含四个元素的向量:
    • stats(1) R² 统计量(拟合优度)
    • stats(2) F统计量
    • stats(3) F统计量的 p值
    • stats(4) 误差的方差估计

通过检查这些输出,你可以对模型有一个总体的评估。具体来说:

  • R² 显示了模型的解释能力,描述自变量解释因变量变异的比例。
  • F统计量和它的p值(stats(2)stats(3))检验整个模型是否显著。
  • 回归系数如果显著非零,相应的自变量对因变量有影响。
  • 系数置信区间(bint)有助于理解参数估计的精确度和可靠性。
  • 残差(r)和残差置信区间(rint)提供模型适配度的直观信息和观测值可能的误差范围。

        在使用regress函数之前,重要的是要确保数据满足执行线性回归的条件(线性关系、误差项的独立性和正态性、同方差性等)。此外,若你发现数据具有多重共线性等问题时,可能需要使用其他处理方法,例如岭回归或主成分

代码实现

        使用 regress 函数来做线性回归分析,您需要先准备好您的输入矩阵 X(自变量,包含一个常数项以适应截距项)和向量 Y (因变量)。然后,您将能够执行回归分析,并通过分析输出得到关于模型的统计数据。

        由于题目提供的数据已经是结构化的,所以可以直接转换成MATLAB可以处理的格式。

        以下是执行多元线性回归并分析结果的MATLAB代码:

% 首先定义给出的数据
data = [151.8	162.8	154.5	39.5	1.62	6.29;253.6	61.3	156.5	21.2	1.79	6.71;340.8	123.8	259.2	49.4	1.51	6.32;289.1	39.1	182.5	22.8	1.6	    6.95;107.7	138.3	152.3	0.4	    1.61	6.29;110.3	117.3	141.9	31.8	1.31	4.73;125.3	93.6	200.2	14.4	1.02	4.63;104.3	75.8	153.4	12.6	1.08	4.85;59.9	68.2	112.3	13.5	1.02	4.84;26.6	27.7	61.6	4.9	    0.82	4.82;67.2	50	    107.2	19.7	0.92	4.83;127.8	151.1	326.6	27.9	0.79	4.21;199.6	174.3	405.2	27.9	0.86	4.23;123	    73.7	139.2	15.1	1.27	5.33;175.1	141.1	254.9	33.3	1.1	    4.39];% 分离自变量X和因变量Y
X = data(:,1:5);
Y = data(:,6);% 为自变量矩阵X添加常数项列 (必须为1)
X = [ones(size(X,1),1) X];% 使用 regress函数计算线性回归的参数beta
% regress函数中的 alpha 是用于置信区间的显著性水平,例如 0.05
alpha = 0.05;
[b,bint,r,rint,stats] = regress(Y,X,alpha);% 输出回归系数和相关统计信息
disp('回归系数 b :');
disp(b);disp('系数的95%置信区间 bint:');
disp(bint);disp('残差 r:');
disp(r);disp('残差的置信区间 rint:');
disp(rint);disp('统计信息 stats (R方, F统计量, p值,误差方差):');
disp(stats);% 检查残差图,确保没有明显的模式
% 残差图应显示随机分布的点 - 无明显模式即表示模型适用 
figure;
scatter(Y,r,'filled');
title('残差图');
xlabel('观测值');
ylabel('残差');

        在代码执行结束后,b 变量包含了估算的回归系数,bint 给出了这些估算系数的95%置信区间,r 包含残差,rint 给出了残差的置信区间,最后输出的stats包含一些关键的统计测度,如R方值、F统计量、p值和误差方差,这些可以用来评估模型的拟合情况。

        具体地,R方值越接近1表示模型的拟合效果越好;F统计量和它的p值用来判断整个回归模型是否显著;每个单独回归系数的p值也可以在输出的bint中找到,如果p值小于0.05(或其他设定的显著性水平),则认为该系数在统计上是显著的。

        这个MATLAB代码可以直接用于题目中提供的数据,如果要计算其他的数据,只需要把data变量中的值替换为实际数据即可。以上展示的残差图用于诊断模型,理想情况下残差应随机分布,没有明显的模式。如果残差图显示出结构性模式,则表明模型中可能有误差的系统部分未被解释,这表明模型可能需要进一步研究与改进。

得出结果

回归系数 b :
    3.5150
    0.0067
    0.0017
   -0.0043
   -0.0172
    1.4738

系数的95%置信区间 bint:
    0.8519    6.1782
   -0.0071    0.0204
   -0.0163    0.0198
   -0.0174    0.0087
   -0.0559    0.0215
   -1.1954    4.1430

残差 r:
    0.4480
   -0.1949
    0.0709
    0.2667
    0.1163
   -0.4879
   -0.2663
   -0.1985
    0.0260
    0.2237
    0.2302
    0.3195
    0.0593
   -0.1384
   -0.4745

残差的置信区间 rint:
    0.0128    0.8831
   -0.7786    0.3888
   -0.3188    0.4606
   -0.3169    0.8502
   -0.2351    0.4676
   -1.0813    0.1055
   -1.0314    0.4989
   -0.9958    0.5987
   -0.7660    0.8180
   -0.3745    0.8219
   -0.4736    0.9341
   -0.2839    0.9230
   -0.5191    0.6376
   -0.9438    0.6669
   -1.1557    0.2067

统计信息 stats (R方, F统计量, p值,误差方差):
    0.9097   18.1243    0.0002    0.1256
 

        那么有了这些结果就可以得到我们最终的答案啦~~~

 

这篇关于酸雨降水问题——多元回归分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908113

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos