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

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

相关文章

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到

MySQL磁盘空间不足问题解决

《MySQL磁盘空间不足问题解决》本文介绍查看空间使用情况的方式,以及各种空间问题的原因和解决方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录查看空间使用情况Binlog日志文件占用过多表上的索引太多导致空间不足大字段导致空间不足表空间碎片太多导致空间不足临时表空间

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

Java中InputStream重复使用问题的几种解决方案

《Java中InputStream重复使用问题的几种解决方案》在Java开发中,InputStream是用于读取字节流的类,在许多场景下,我们可能需要重复读取InputStream中的数据,这篇文章主... 目录前言1. 使用mark()和reset()方法(适用于支持标记的流)2. 将流内容缓存到字节数组

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

解决Failed to get nested archive for entry BOOT-INF/lib/xxx.jar问题

《解决FailedtogetnestedarchiveforentryBOOT-INF/lib/xxx.jar问题》解决BOOT-INF/lib/xxx.jar替换异常需确保路径正确:解... 目录Failed to get nested archive for entry BOOT-INF/lib/xxx

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、