前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6.数据分析(1) --描述性统计量和线性回归(2)

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

作者头像
用户9925864
发布2022-07-27 08:11:49
6630
发布2022-07-27 08:11:49
举报
文章被收录于专栏:算法工程师的学习日志

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

昨天文章链接:

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

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


1、线性回归简介

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

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

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


2、简单线性回归

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

代码语言:javascript
复制
y=β0+β1x+ϵ

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

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

假设

现在关系变为 Y=XB。

代码语言:javascript
复制
load x.mat
load y.mat
b1 = x\y
b1 =1.372716735564871e-04

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

代码语言:javascript
复制
yCalc1 = b1*x;
scatter(x,y)
hold on
plot(x,yCalc1)
grid on

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

代码语言:javascript
复制
X = [ones(length(x),1) x];
b = X\y

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

代码语言:javascript
复制
yCalc2 = X*b;
plot(x,yCalc2,'--')
legend('原始数据','方法1','方法2','Location','best');

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

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

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

代码语言:javascript
复制
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 的线性回归:

代码语言:javascript
复制
p = polyfit(x,y,1)
p =
    1.5229   -2.1911

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

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

代码语言:javascript
复制
yfit = polyval(p,x);

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

代码语言:javascript
复制
yfit =  p(1) * x + p(2);

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

代码语言:javascript
复制
yresid = y - yfit;

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

代码语言:javascript
复制
SSresid = sum(yresid.^2);

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

代码语言:javascript
复制
SStotal = (length(y)-1) * var(y);

计算 R2:

代码语言:javascript
复制
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:

代码语言:javascript
复制
p = polyfit(x,y,3)
p =
   -0.0003    0.0390    0.2233    6.2779

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

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

代码语言:javascript
复制
yfit = polyval(p,x);

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

代码语言:javascript
复制
yfit =  p(1) * x.^3 + p(2) * x.^2 + p(3) * x + p(4);

计算残差值:

代码语言:javascript
复制
yresid = y - yfit;

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

代码语言:javascript
复制
SSresid = sum(yresid.^2);

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

代码语言:javascript
复制
SStotal = (length(y)-1) * var(y);

计算三次拟合的简单 R2:

代码语言:javascript
复制
rsq = 1 - SSresid/SStotal
rsq =
    0.9083

最后,计算调整 R2 :

代码语言:javascript
复制
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 可能为负值,这表明该模型的项太多。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3、残差与拟合优度
    • 3.1 通过多项式拟合计算 R2
      • 3.2 计算多项式回归的调整 R2
      相关产品与服务
      腾讯云 BI
      腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档