【数模整理3】数据分析那些事儿——回归分析

回归分析是什么?

回归是一种数据分析方法,研究两个或多个变量之间的关系。不同于上一篇所讲的相关分析,回归分析能确定Y与X间的定量关系表达式(回归方程),因此,它可以

  • 揭示各个X对Y的影响程度大小
  • 帮助建立预测模型

回归分析的方法数不胜数,稍加整理,得到下图:
【数模整理3】数据分析那些事儿——回归分析_第1张图片

目录

  • 回归分析是什么?
  • 工具
  • 回归
    • 1 线性回归(Linear regression)
      • 最小二乘法(Least Square Method)
      • 逐步回归(Stepwise regression)
      • 分层回归(Hierarchical multiple regression)
        • 中介作用
        • 调节作用
      • 套索回归(Lasso regression) 、岭回归(Ridge regression)、弹性网络回归(ElasticNet regression)
    • 2 偏最小二乘法回归(Partial least squares regression/ PLS regression)
    • 3 Logistic回归
    • 检验回归模型
      • F检验
      • 多重共线性——VIF值
      • 自相关性——D-W值
      • 残差正态性
      • 异方差性
    • 其他参考资料

工具

  • SPSSAU(我之前用得比较熟,但是它要钱QAQ)
  • SPSSPRO(free!)
  • pycharm

回归

1 线性回归(Linear regression)

线性回归假设目标/因变量/Y特征/自变量/X存在线性关系,即满足一个多元一次方程 y = θ 0 + θ 1 x 1 + . . . θ n x n . y = θ_0+θ_1x_1+...θ_nx_n. y=θ0+θ1x1+...θnxn.因此它将寻找最佳的拟合直线(回归线),从而确定回归方程中的θ.具体方法如下:【数模整理3】数据分析那些事儿——回归分析_第2张图片
补充上SPSSAU官网的总结:
【数模整理3】数据分析那些事儿——回归分析_第3张图片

·

最小二乘法(Least Square Method)

最小二乘法是解决曲线拟合问题最常用的方法,在1806年由马里·勒让德提出,其一般形式是:
在这里插入图片描述
【数模整理3】数据分析那些事儿——回归分析_第4张图片

操作方法:

  • SPSSPRO→ 预测模型→ 线性回归(最小二乘法)
    【数模整理3】数据分析那些事儿——回归分析_第5张图片
    【数模整理3】数据分析那些事儿——回归分析_第6张图片
    【数模整理3】数据分析那些事儿——回归分析_第7张图片
    【数模整理3】数据分析那些事儿——回归分析_第8张图片
  • python代码有两个库可以选择,可以参考这位仁兄的劳动成果:
    Python数模笔记-StatsModels 统计回归(2)线性回归
    Python数模笔记-Sklearn(4)线性回归

·

逐步回归(Stepwise regression)

逐步回归分析会自动化移除掉不显著的X,通常用于探索研究中。

操作方法:

  • SPSSAU→进阶方法→逐步回归(要开会员:(
    【数模整理3】数据分析那些事儿——回归分析_第9张图片
  • python代码可以参考这位仁兄的劳动成果:https://blog.csdn.net/qq_34105362/article/details/89574808

·

分层回归(Hierarchical multiple regression)

分层回归对若干个自变量x进行分群组分析,主要用于模型的比较,或者说对变量重要性进行判定。通常用于中介作用或者调节作用研究中。

中介作用

中介作用是研究X对Y的影响时,是否会先通过中介变量M,再去影响Y;即是否有X->M->Y这样的关系,如果存在此种关系,则说明具有中介效应。
【数模整理3】数据分析那些事儿——回归分析_第10张图片

调节作用

调节作用是研究X对Y的影响时,是否会受到调节变量Z的干扰。
【数模整理3】数据分析那些事儿——回归分析_第11张图片
操作方法:
SPSSPRO→预测模型→分层回归
【数模整理3】数据分析那些事儿——回归分析_第12张图片
【数模整理3】数据分析那些事儿——回归分析_第13张图片

·

套索回归(Lasso regression) 、岭回归(Ridge regression)、弹性网络回归(ElasticNet regression)

#对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。

对于共线性问题病态数据,则要采用下面这两种有偏估计回归方法。在标准回归分析(最小二乘法)的基础上,通过正则化,献祭掉无偏性(损失部分信息、降低精度),得到更高的稳定性(更为符合实际)。

Lasso回归 岭回归
全称 Least absolute shrinkage and selection operator Ridge regression/ Tikhonov regularization
原理 L1正则化 L2正则化
损失函数可导性 不连续可导 连续可导
求极值的解法 坐标轴下降法、最小角回归法(LARS) 牛顿法、拟牛顿法等
结果 更容易使得权重变为 0 使得权重接近 0
额外用途 特征选择(feature selection) /
使用情况 对样本的噪声极为敏感 更老,更常用

弹性网络回归则综合了前两种算法:lasso回归筛选出相关的参数,并缩减其他无关参数;同时岭回归缩减所有相关性的参数。

注:通常,这三种回归得到的方程的R平方值会稍低于普通回归分析,而回归系数的显著性往往明显高于普通回归。

操作方法:

  • SPSSPRO→“预测模型”→“岭回归(Ridge)”【数模整理3】数据分析那些事儿——回归分析_第14张图片

  • SPSSAU→“进阶方法”→“岭回归”或者(要会员orz

  • python代码可以参考这位仁兄的劳动成果:
    【机器学习】LASSO回归、弹性网络回归(附python代码)

·

2 偏最小二乘法回归(Partial least squares regression/ PLS regression)

PLS回归是一种解决共线性问题、多个因变量Y同时分析、以及处理小样本时影响关系研究的一种多元统计方法。
操作方法:

  • SPSSAU→ 进阶方法 → PLS回归(要会员orz
    【数模整理3】数据分析那些事儿——回归分析_第15张图片
  • python代码可以参考这位仁兄的劳动成果:
    python 偏最小二乘回归

3 Logistic回归

逻辑回归又叫对数几率回归,是一种广义的线性回归分析模型,主要用于分类问题。
【数模整理3】数据分析那些事儿——回归分析_第16张图片

困了,有缘再写,先堆一下可能会用到的参考资料。
逻辑回归(logistics regression)原理-让你彻底读懂逻辑回归
【机器学习】逻辑回归(非常详细)-知乎
logistic回归模型
一文理解二元logistic回归-SPSSAU知乎
有序Logit(Logistic)分析-SPSSAU官网


检验回归模型

对回归模型进行检验。可包括以下:

F检验

F是方差比率,主要用于方差齐性检验、方差分析等等。 F = S S A / d f 1 S S E / d f 2 F=\frac{SSA/df1}{SSE/df2} F=SSE/df2SSA/df1
其中SSA是各个水平之间的偏差平方和或组间平方和(Sum of Square Between Groups), SSE是各个水平内部的偏差平方和,可以说成是组内偏差平方和,可以理解为上面说的误差的平方和(Sum of Square Error),df1、df2分别是它们的自由度。

  • F < F表 表明两组数据没有显著差异;
  • F ≥ F表 表明两组数据存在显著差异。

注:

  1. F检验对于数据的正态性非常敏感,因此在检验方差齐性的时候,Levene检验, Bartlett检验或者Brown–Forsythe检验的稳健性都要优于F检验。
  2. 若两个母体有相同的方差(方差齐性),那么可以采用F检验,但是该检验会呈现极端的非稳健性和非常态性,可以用t检验、巴特勒特检验等取代。

R²是指拟合优度,反应拟合程度。
R 2 = 1 − ∑ i ( y i ^ − y i ) 2 ∑ i ( y i − y i ˉ ) 2 R^2=1-\frac{\begin{matrix} \sum_{i} (\hat{y_i}-y_i)^2 \end{matrix}}{\begin{matrix} \sum_{i} (y_i-\bar{y_i})^2 \end{matrix}} R2=1i(yiyiˉ)2i(yi^yi)2

  • R² = 1:最理想情况,所有的预测值等于真值。
  • R² = 0:一种可能情况是"简单预测所有y值等于y平均值",即所有y_i(hat)都等于y_i(ba)(即真实y值的平均数),但也有其他可能。
  • R²<0:模型预测能力差,比"简单预测所有y值等于y平均值"的效果还差。这表示可能用了错误模型,或者模型假设不合理。
  • R²没有下限,因为预测可以任意程度的差。因此,R方的范围是 [公式] 。

多重共线性——VIF值

查看VIF值,如果全部小于10(严格是5),则说明模型没有多重共线性问题,模型构建良好;反之若VIF大于10说明模型构建较差。

自相关性——D-W值

如果D-W值在2附近(1.7~2.3之间),则说明没有自相关性,模型构建良好,反之若D-W值明显偏离2,则说明具有自相关性,模型构建较差。解决方案:查看因变量Y数据。

残差正态性

在分析时可保存残差项,然后使用“直方图”直观检测残差正态性情况,如果残差直观上满足正态性,说明模型构建较好,反之说明模型构建较差。解决方案:重新构建模型(e.g. 对Y取对数后再次构建模型)

异方差性

将保存的残差项,分别与模型的自变量X或者因变量Y,作散点图,查看散点是否有明显的规律性,比如自变量X值越大,残差项越大/越小,这时此说明有规律性,模型具有异方差性,模型构建较差。解决方案:重新构建模型(e.g. 对Y取对数后再次构建模型)

另外,如果回归分析出现各类异常,记得查看数据中是否有异常值并处理。


其他参考资料

知乎专栏-19种回归分析你知道几种呢?
Python数模笔记-StatsModels 统计回归(2)线性回归
Python数模笔记-Sklearn(4)线性回归

你可能感兴趣的:(回归,数据分析,数学建模)