昨天分享了描述性统计量相关内容,今天把昨天剩下的部分写完,

昨天文章链接:

6.数据分析(1) --描述性统计量和线性回归(1)

前言:在针对非物理信号分析的时候,例如用户数、用户经常出入的地点、疾病感染人数等,这部分涉及到数据分析知识,本文分享一下Matlab常用的描述性统计量函数和线性回归的基本应用。


1、线性回归简介

数据模型明确描述预测变量与响应变量之间的关系。线性回归拟合模型系数为线性的数据模型。最常见的线性回归类型是最小二乘拟合,它可用于拟合线和多项式以及其他线性模型。

在对各对数量之间的关系进行建模之前,最好进行相关性分析,以确定这些数量之间是否存在线性关系。

如果需要使用非线性模型拟合数据,请转换变量以使关系变成线性关系。或者尝试使用nlinfit 函数、lsqcurvefit 函数直接拟合非线性函数。


2、简单线性回归

线性回归对一个因变量(即响应变量)y 与一个或多个自变量(即预测变量)x1,...,xn之间的关系进行建模。简单线性回归使用以下关系方程:

y=β0+β1x+ϵ

其中,β0是 y 轴截距,β1是斜率(即回归系数),ϵ 是误差项。

首先确定一组(n 个)x 和 y 的观测值,以 (x1,y1), (x2,y2), ..., (xn,yn) 形式给出。对这些值应用简单线性回归关系方程,构成一个线性方程组。这些方程以矩阵形式表示如下:

假设

现在关系变为 Y=XB。

load x.matload y.matb1 = x\yb1 =1.372716735564871e-04

b1 是斜率或回归系数。线性关系为 y=β1x=0.0001373x。

yCalc1 = b1*x;scatter(x,y)hold onplot(x,yCalc1)grid on

在模型中加入 y 轴截距β0 以改进拟合,即y=β0+β1x。用一列 1 填补 x 并使用 \ 运算符计算 β0。

X = [ones(length(x),1) x];b = X\y

此结果表示关系 y=β0+β1x=142.7120+0.0001256x。

yCalc2 = X*b;plot(x,yCalc2,'--')legend('原始数据','方法1','方法2','Location','best');

如图所示,两个拟合非常相似。判断更佳拟合的一种方法是计算决定系数 R2。R2 用于度量模型能够在多大程度上预测数据,其值介于 0 和 1 之间。R2 的值越高,模型预测数据的准确性越高。

其中,ˆy 表示 y 的计算值,‾y 是 y 的均值,R2 定义为

通过比较 R2 的值,找出两个拟合中较好的一个。如 R2 值所示,包含 y 轴截距的第二个拟合更好。

Rsq1 = 1 - sum((y - yCalc1).^2)/sum((y - mean(y)).^2)Rsq2 = 1 - sum((y - yCalc2).^2)/sum((y - mean(y)).^2)Rsq1 =   0.822235650485566Rsq2 =   0.838210531103428

3、残差与拟合优度

残差是响应变量(因变量y)的观测值与模型的预测值之间的差。当拟合的模型适合数据时,残差接近独立随机误差。即,残差分布不应该呈现出可辨识的模式。

利用线性模型产生拟合需要尽量减小残差平方和。该最小化的结果即为最小二乘拟合。

拟合优度的一个度量是决定系数 或 R2。该统计量表明通过拟合模型得到的值与模型可预测的因变量的匹配程度。拟合模型的残差方差定义 R2:

R2 = 1 – SSresid / SStotal

SSresid 是与回归的残差的平方和。SStotal 是与因变量均值的差的平方和(总平方和)。

3.1 通过多项式拟合计算 R2

从多项式回归的系数得出 R2,以确定线性模型对 y 的方差的解释率,

利用 polyfit 计算从 x 预测 y 的线性回归:

p = polyfit(x,y,1)p =    1.5229   -2.1911

p(1) 是斜率,p(2) 是线性预测变量的截距。

调用 polyval 以使用 p 预测 y,调用结果 yfit:

yfit = polyval(p,x);

使用 polyval,在本例中拟合方程为:

yfit =  p(1) * x + p(2);

将残差值计算为有符号数的向量:

yresid = y - yfit;

计算残差的平方并相加,以获得残差平方和:

SSresid = sum(yresid.^2);

通过将观测次数减 1 再乘以 y 的方差,计算 y 的总平方和:

SStotal = (length(y)-1) * var(y);

计算 R2:

rsq = 1 - SSresid/SStotalrsq =    0.8707

这表明,线性方程 1.5229 * x -2.1911 可预测变量 y 中方差的 87%。

3.2 计算多项式回归的调整 R2

通常可通过拟合更高次多项式,减少模型中的残差。当您添加更多项时,会增加决定系数 R2。您可获得更接近数据的拟合,但代价是模型更为复杂,此时需要对该统计量R2进行改进,调整 R2 中包括了一项对模型中项数的罚值。因此,调整 R2 更适合比较不同的模型对同一数据的拟合程度。调整 R2 定义如下:

R2adjusted = 1 - (SSresid / SStotal)*((n-1)/(n-d-1))

其中 n 是数据中的观测值数量,d 是多项式的次数。(线性拟合的阶数为 1,二次拟合为 2,三次拟合为 3,依此类推。)

调用 polyfit 生成三次拟合,以从 x 预测 y:

p = polyfit(x,y,3)p =   -0.0003    0.0390    0.2233    6.2779

p(4) 是三次预测变量的截距。

调用 polyval 以使用 p 中的系数预测 y,将结果命名为 yfit:

yfit = polyval(p,x);

polyval 计算显式方程,手动输入则如下所示:

yfit =  p(1) * x.^3 + p(2) * x.^2 + p(3) * x + p(4);

计算残差值:

yresid = y - yfit;

计算残差的平方并相加,以获得残差平方和:

SSresid = sum(yresid.^2);

通过将观测次数减 1 再乘以 y 的方差,计算 y 的总平方和:

SStotal = (length(y)-1) * var(y);

计算三次拟合的简单 R2:

rsq = 1 - SSresid/SStotalrsq =    0.9083

最后,计算调整 R2 :

rsq_adj = 1 - SSresid/SStotal * (length(y)-1)/(length(y)-length(p))rsq_adj =    0.8945

调整 R2 (0.8945) 小于简单 R2 (0.9083)。后者可以更可靠地估计多项式模型的预测能力。

在许多多项式回归模型中,对方程添加次数会使 R2 和调整 R2 都增加。在上面的示例中,与线性拟合相比,使用三次拟合使这两种统计量都有所增加。线性拟合并非始终差于更高阶拟合:更复杂拟合的调整 R2 也有可能低于更简单的拟合,此时表明增加复杂度并不适当。此外,虽然基本拟合工具生成的多项式回归模型的 R2 值始终在 0 和 1 之间变动,但某些模型的调整 R2 可能为负值,这表明该模型的项太多。

线性拟合polyfit_6.数据分析(1) 描述性统计量和线性回归(2)相关推荐

  1. Python 散点图线性拟合_一文教你全面掌握用Python实现线性回归

    全文共4968字,预计学习时长15分钟或更长 本文旨在为读者理解和应用线性回归时提供参考.虽然线性回归算法很简单,但是只有少数人能真正理解其基本原则. 本文首先会深入挖掘线性回归理论,理解其内在的工作 ...

  2. MATLAB 美国标准普尔500指数(sp500)的资产收益率分布的拟合与检验 统计图 拟合检验 描述性统计量分析 matlab

    MATLAB 美国标准普尔500指数(sp500)的资产收益率分布的拟合与检验 统计图 拟合检验 描述性统计量分析 matlab 文章目录 实验内容 实验(一):下载并保存数据 实验(二):数据的描述 ...

  3. Python之数据分析(numpy线性模型、线性预测、线性拟合)

    文章目录 一.线性预测 二.线性拟合 线性模型分为两种:线性预测和线性拟合,这两种都可以起到预测走势和数据点的作用,当然,预测是存在一定误差的,因此这种预测图像仅供参考. 一.线性预测 1.基本概念 ...

  4. python数据分析之单因素分析(线性拟合)

    功能:线性拟合,单因素分析,对散点图进行线性拟合,并放大散点图的局部位置 输入:某个xlsx文件,包含'患者密度(人/10万人)'和'人口密度(人/平方千米)'两列 输出:对这两列数据进行线性拟合,绘 ...

  5. excel线性拟合的斜率_协方差分析:方差分析与线性回归的统一

    转自个人微信公众号[Memo_Cleon]的统计学习笔记:协方差分析:方差分析与线性回归的统一. 在进行数据分析时,有时候我们会遇到数据基线不平的情况,比如两样本的t检验的示例,比较Labe和Meto ...

  6. 基于matlab数据线性拟合回归

    1 选题背景及意义 在统计学中,线性回归是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合.只有一个自变 ...

  7. 一个简单的线性拟合问题,到底有多少种做法

    一个简单的线性拟合问题,到底有多少种做法 相信大家都做过线性拟合问题吧,其实就是给很多点,来求线性方程的斜率和截距.早在高中数学就有这类问题,我记得很清楚,如果出现在试卷中,一般出现在解答题的第二题左 ...

  8. matlab实现线性函数逼近,[转载]【MATLAB】MATLAB 线性拟合小结 ——nb

    MATLAB 线性拟合小结 -- REGRESS多元线性回归(用最小二乘估计法) http://wenku.baidu.com/view/0a0ea0de941ea76e59fa0418.html?r ...

  9. python实现多元线性拟合、一元多项式拟合、多元多项式拟合

    数据分析中经常会使用到数据拟合,本文中将阐述如何实现一元以及多元的线性拟合以及多项式拟合,本文中只涉及实现方式,不涉及理论知识. 模型拟合中涉及的误差评估方法如下所示: import numpy as ...

最新文章

  1. linux日期日增,Linux日期
  2. Struts1和Struts2的区别和对比
  3. 线性时间冰山查询算法(Linear-time Iceberg Query Algorithm )
  4. FreeJTS部标视频平台:JT/T808、JT/T809、JT/T796、JT/T794、JT/T1078、苏标ADAS的区别
  5. SAP官方发布的ABAP编程规范
  6. 从工作的角度看 CV/NLP/推荐系统选哪个?
  7. 关于Java抽象类,接口与实现接口及派生类继承基类
  8. 一串字符串转换为ascii_将ASCII字符串(char [])转换为C中的BYTE数组
  9. 蚂蚁Service Mesh大规模落地实践与展望
  10. JavaBeginnersTutorial 中文系列教程·翻译完成
  11. Docker实践(七)部署SpringBoot微服务
  12. jenkins修改数据存放路径
  13. 细数那些年ZStack拿过奖的案例
  14. java 虚拟机 分析_Java 虚拟机中的运行时数据区分析
  15. 怎么把HTML转换成swf用迅雷,什么工具能把MP4格式转换成SWF并不降低画质
  16. win10磁盘如何解锁bitlocker,解决分区助手无法调整分区问题
  17. Qt 运行时不显示图标
  18. 使用DOM4J解析XML文件的两种方法
  19. 魅族16php7.3系统,魅族16th官方稳定版固件rom系统刷机包:Flyme 7.3.0.0A
  20. epub格式电子书制作工具——ep…

热门文章

  1. QT最方便的LOG库使用Easylogging++,只需要一个头文件
  2. 猜数字游戏python程序_python实现的简单猜数字游戏
  3. DC-DC电源PCB设计指南
  4. vscode php输出,js程序如何在vscode控制台输出
  5. linux hadoop 本地,Linux系统下运行基于本地的Hadoop
  6. python语言编写的modbus协议_RTU Modbus从机的python脚本
  7. python 包中当前目录对应的一个点号
  8. AutoML简要概述
  9. 成功将用intelli idea 建立的项目打包成jar文件,并在Linux上成功运行
  10. php单词出现频率,PHP计算文件或数组中单词出现频率