首页 > 其他分享 >6.数据分析(1) --描述性统计量和线性回归(2)

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

时间:2022-11-12 18:34:37浏览次数:70  
标签:数据分析 R2 -- 模型 残差 描述性 拟合 线性 回归

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

昨天文章链接:

​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.mat
load y.mat
b1 = x\y
b1 =1.372716735564871e-04

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

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


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

在模型中加入 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');

6.数据分析(1) --描述性统计量和线性回归(2)_多项式_02

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

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

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

通过比较 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.822235650485566
Rsq2 =
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/SStotal
rsq =
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/SStotal
rsq =
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 可能为负值,这表明该模型的项太多。

标签:数据分析,R2,--,模型,残差,描述性,拟合,线性,回归
From: https://blog.51cto.com/domi/5842466

相关文章

  • 将 .gradle文件 从C盘移动到D盘
    参考资料:http://e.betheme.net/article/show-38049.html?action=onClickandroidstudio默认.gradle文件夹的路径是C:\Users\登录名.gradle目录,所以只需要在环境变量里面......
  • static 关键字
    静态变量(类变量)、静态方法(类方法):static声明的属性或方法。静态变量/静态方法生命周期和类相同,在整个程序执行期间都有效。它有如下特点:为该类的公用变量,属于类,......
  • 详解数据预处理和特征工程-特征选择-Embedded嵌入法【菜菜的sklearn课堂笔记】
    视频作者:[菜菜TsaiTsai]链接:[【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili]嵌入法是一种让算法自己决定使用哪些特征的方法,即特征选择和......
  • STM32定时器 重映射
     在STM32中文参考手册的8.3.7章节介绍了定时器复用功能重映射F10xx中具有硬件PWM功能的定时器只有TIM1,TIM2,TIM3,TIM4,我把其中的表格都列出来了:举例:我要使用TIM3定......
  • 软件产品测试之压力测试
    压力测试是一种性能测试方法,通过迫使软件处于极端情况发现性能瓶颈。在极端情况下软件更容易暴露出性能问题。因此采用压力测试分析实时软件的性能以保障它的质量。其实就......
  • Java三大特性(三)—多态
    ......
  • 创龙AD+全志T3 ad_display 开发案例
    前言本文主要介绍基于全志科技T3(ARMCortex-A7)处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616AD芯片,亦适用于ADIAD7606/AD7616。CL1606/CL1616与AD7606/AD......
  • 实景三维电子沙盘
    关键字:实景三维电子沙盘F3DGIS北京东方地博科技实景三维电子沙盘系统 是基于公司自主著作权三维地图平台结合实景三维应用最新打造而成,可作为各种实景三维成果数据的......
  • 基于CSS mask和clip-path实现切角的技巧
    本文翻译自TrickstoCutCornersUsingCSSMaskandClip-PathProperties,略有删改原作者:TemaniAfif我们最近使用CSSmask属性创建花哨的边框,本文将使用CSSmask和c......
  • Day09:switch——case结构的使用详解
    switch——case结构的使用详解什么是switch——case结构他也是一种多选择结构switch——case结构是类于if——else的语法,通过比较而输出对应的内容;通俗的讲,好比我们......