变量之间存在着相关关系,比如,人的身高和体重之间存在着关系,一般来说,人高一些,体重要重一些,身高和体重之间存在的是不确定性的相关关系。回归分析是研究相关关系的一种数学工具,它能帮助我们从一个变量的取值区估计另一个变量的取值。

OLS(最小二乘法)主要用于线性回归的参数估计,它的思路很简单,就是求一些使得实际值和模型估值之差的平方和达到最小的值,将其作为参数估计值。就是说,通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

一,OLS回归

OLS法通过一系列的预测变量来预测响应变量(也可以说是在预测变量上回归响应变量)。线性回归是指对参数β为线性的一种回归(即参数只以一次方的形式出现)模型:

Yt=α+βxtt (t=1……n)表示观测数

  • Yt  被称作因变量
  • xt  被称作自变量
  • α、β 为需要最小二乘法去确定的参数,或称回归系数
  • μt  为随机误差项

OLS线性回归的基本原则:最优拟合曲线应该使各点到直线的距离的平方和(即残差平方和,简称RSS)最小:

OLS线性回归的目标是通过减少响应变量的真实值与预测值的差值来获得模型参数(截距项和斜率),就是使RSS最小。

为了能够恰当地解释OLS模型的系数,数据必须满足以下统计假设:

  • 正态性:对于固定的自变量值,因变量值成正太分布
  • 独立性:个体之间相互独立
  • 线性相关:因变量和自变量之间为线性相关
  • 同方差性:因变量的方差不随自变量的水平不同而变化,即因变量的方差是不变的

二,用lm()拟合回归模型

在R中,拟合回归模型最基本的函数是lm(),格式为:

lm(formula, data)

formula中的符号注释:

  • ~ 分割符号,左边为因变量,右边为自变量,例如, z~x+y,表示通过x和y来预测z
  • + 分割预测变量
  • : 表示预测变量的交互项,例如,z~x+y+x:y
  • * 表示所有可能的交互项,例如,z~x*y 展开为 z~x+y+x:y
  • ^ 表示交互项的次数,例如,z ~ (x+y)^2,展开为z~x+y+x:y
  • . 表示包含除因变量之外的所有变量,例如,如果只有三个变量x,y和z,那么代码 z~. 展开为z~x+y+x:y
  • -1 删除截距项,强制回归的直线通过原点
  • I() 从算术的角度来解释括号中的表达式,例如,z~y+I(x^2) 表示的拟合公式是 z=a+by+cx2
  • function 可以在表达式中应用数学函数,例如,log(z) ~x+y

对于拟合后的模型(lm函数返回的对象),可以应用下面的函数,得到模型的更多额外的信息。

  • summary() 展示拟合模型的详细结果
  • coefficients() 列出捏模型的参数(截距项intercept和斜率)
  • confint() 提供模型参数的置信区间
  • residuals() 列出拟合模型的残差值
  • fitted() 列出拟合模型的预测值
  • anova() 生成一个拟合模型的方差分析表
  • predict() 用拟合模型对新的数据预测响应变量

例如,使用基础安装包中的数据集women(包含了年龄在30-39岁之间女性的身高和体重信息),通过身高来预测体重。

1,线性拟合

使用lm()函数来拟合模型,获得模型对象fit

fit <- lm(weight~height,data=women)

使用summary()函数来查看模型的信息:

> summary(fit)

Call:
lm(formula = weight ~ height, data = women) Residuals:
Min 1Q Median 3Q Max
-1.7333 -1.1333 -0.3833 0.7417 3.1167 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -87.51667 5.93694 -14.74 1.71e-09 ***
height 3.45000 0.09114 37.85 1.09e-14 ***
---
Signif. codes: ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ Residual standard error: 1.525 on degrees of freedom
Multiple R-squared: 0.991, Adjusted R-squared: 0.9903
F-statistic: on and DF, p-value: 1.091e-14

残差标准差(Residual standard error):表示模型用身高来预测体重的平均误差

R的平方项(Multiple R-squared):表明模型可以解释体重99.1%的方差,是实际和预测值之间相关系数的平方。

F统计量(F-statistic):检验所有的预测变量预测响应变量是否都在某个概率水平之上,

从Coefficients 组中,可以看到 Intercept(截距项)是 - 87.51667,height的系数是3.45,截距项和系数的标准差、t值和Pr(>|t|),其中,Pr(>|t|) 表示双边检验的p值

注,p值的表示方法通常有p-value,或Pr,p值是概率,表示某一事件发生的可能性大小。如果P值很小,说明原假设情况的发生的概率很小,而如果出现了,根据小概率原理,我们就有理由拒绝原假设,P值越小,我们拒绝原假设的理由越充分。总之,P值越小,表明结果越显著。

因此可以得到预测等式:

Weight= - 87.51667 + 3.45 * Height

绘制拟合的直线:

> plot(women$height, women$weight,xlab='height',ylab='weight')
> abline(fit)

2,多项式拟合

使用lm(),在formula参数中使用I()函数来进行多项式拟合

> fit2 <- lm(weight~I(height^),data=women)
> plot(women$height, women$weight,xlab='height',ylab='weight')
> lines(women$height,fitted(fit2))
> summary(fit2) Call:
lm(formula = weight ~ I(height^), data = women) Residuals:
Min 1Q Median 3Q Max
-1.2562 -0.7636 -0.1837 0.4622 2.2654 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.390e+01 2.109e+00 11.34 4.12e-08 ***
I(height^) 2.659e-02 4.926e-04 53.98 < 2e- ***
---
Signif. codes: ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ Residual standard error: 1.072 on degrees of freedom
Multiple R-squared: 0.9956, Adjusted R-squared: 0.9952
F-statistic: on and DF, p-value: < 2.2e-16

非线性模型可用nls()函数进行拟合。

三,回归诊断(标准方法

回归诊断用于评价回归模型的拟合程度,模型返回的参数多大程度上匹配原始数据。

根据OLS回归的统计假设来评价模型的拟合情况,对于lm()拟合的模型对象,使用plot()函数生成评价模型拟合情况的四幅图形,

> fit <- lm(weight~height,data=women)
> par(mfrow=c(,))
> plot(fit)

正态性:当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正态分布。正态QQ图(Normal Q-Q)是在正态分布对应的值下,标准化残差的概率图。若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么久违反了正态假设。

独立性:无法判断因变量和自变量的值是否相互独立,只能从收集的数据中来验证。

线性相关性:若因变量与自变量线性相关,那么残差值与预测(拟合)值除了系统误差之外,就没有任何关联。在残差和拟合图(Residuals VS Fitted)中,可以看到一条曲线,这暗示着可能需要对拟合模型加上一个二次项。

同方差性:若满足不变方差假设,那么在位置尺度图(Scale-Location)中,水平线周围的点应该随机分布。

残差和杠杆图(Residuals VS Leverage)提供了特殊的单个观测点(离群点、高杠杆点、强影响点)的信息。

  • 离群点:表明拟合回归模型对其预测效果不佳(产生巨大的残差)
  • 高杠杆点:指自变量因子空间中的离群点(异常值),由许多异常的自变量值组合起来的,与因变量没有关系。
  • 强影响点:表明它对模型参数的估计产生的影响过大,非常不成比例。强影响点可以通过Cook距离(Cook distance)统计量来前别。

残差和杠杆图的可读性差,不够实用。

什么是高杠杆点?离群点是指对于给定的预测值  来说,响应值  异常的点。相反,高杠杆(high leverage) 表示观测点  是异常的。例如,图1(a)左下图中的观测点41具有高杠杆值,因为它的预测变量值比其他观测点都要大。实线是对数据的最小二乘拟合,而虚线是删除观测点41后的拟合。事实上,高杠杆的观测往往对回归直线的估计有很大的影响。如果一些观测对最小二乘线有重大影响,那么它们值得特别关注,这些点出现任何问题都可能使整个拟合失效。因此找出高杠杆观测是十分重要的 。

四,回归诊断(car包

car包提供了大量的函数,大大增强了拟合和评价回归模型的能力

1,正态性

qqplot()函数提供了精确的正态假设检验方法,

> library(carData)
> library(car)
> par(mfrow=c(,))
> fit <- lm(weight~height,data=women)
> qqPlot(fit,labels=row.names(women),id.method='identity',simulate=TRUE,main='qq-fit')
[]
> fit2 <- lm(weight~height+I(height^),data=women)
> qqPlot(fit2,labels=row.names(women),id.method='identity',simulate=TRUE,main='qq-fit2')
[]

可以看到,置信区间通过虚线划定,当绝大多数点都落在置信区间时,说明正态性假设符合的很好。

2,误差的独立性

car包提供了durbinWatsonTest()函数,用于做Durbin-Watson检验,检测误差的序列相关性。

> durbinWatsonTest(fit)
lag Autocorrelation D-W Statistic p-value
0.585079 0.3153804
Alternative hypothesis: rho !=

p值 (p=0)不显著,误差项之间独立

3,线性相关性

通过成分残差图(component + residual plots)检查因变量和自变量之间是否呈线性关系。

crPlots(fit)

若图形存在非线性,则说明可能对预测变量的函数形式建模不够充分,那么需要添加一些曲线成分,比如多项式,对一个或多个变量进行变换(log(x)代替x),或用其他回归变体形式而不是线性回归。

4,同方差性

判断方差是否恒定,nvcTest()函数生成一个记分检验,原假设为误方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,说明存在误方差不很定。

spreadLevelPlot()函数创建了一个添加了最佳拟合曲线的散点图,展示了标准化残差绝对值与拟合值得关系。

> ncvTest(fit)
Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 0.8052115, Df = , p = 0.36954
> spreadLevelPlot(fit) Suggested power transformation: -0.8985826

记分检验不显著:p=0.36954,说明满足方差不变假设,也可以通过分布水平看到这一点,点在水平的最佳拟合曲线周围呈随机分布。

五,回归诊断(gvlma包)

gvlma()函数,用于对线性模型假设进行综合验证,同事还能验证偏斜度,峰度和异方差的评价。从输出项中可以看出,假设检验的显著性水平是5%。如果p<0.05,说明违反了假设条件。从Global Stat 的Decision 栏中,可以看到数据满足OLS回归模型所有的统计假设(p=0.597)。

> library(gvlma)
> gvmodel <- gvlma(fit)
> summary(gvmodel)
.................
ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
USING THE GLOBAL TEST ON DEGREES-OF-FREEDOM:
Level of Significance = 0.05 Call:
gvlma(x = fit) Value p-value Decision
Global Stat 16.5866 0.0023251 Assumptions NOT satisfied!
Skewness 1.5577 0.2119999 Assumptions acceptable.
Kurtosis 0.1019 0.7496131 Assumptions acceptable.
Link Function 14.1218 0.0001713 Assumptions NOT satisfied!
Heteroscedasticity 0.8052 0.3695398 Assumptions acceptable.

参考文档:

最小二乘线性(OLS)回归模型

机器学习 第四篇:OLS回归分析的更多相关文章

  1. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  2. 第四篇 Entity Framework Plus 之 Batch Operations

    用 Entity Framework  进行 增,删,改.都是基于Model进行的,且Model都是有状态追踪的.这样Entity Framework才能正常增,删,改. 有时候,要根据某个字段,批量 ...

  3. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  4. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

    解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...

  5. 解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译)

    解剖SQLSERVER 第四篇  OrcaMDF里对dates类型数据的解析(译) http://improve.dk/parsing-dates-in-orcamdf/ 在SQLSERVER里面有几 ...

  6. 深入理解javascript作用域系列第四篇——块作用域

    × 目录 [1]let [2]const [3]try 前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用 ...

  7. 前端工程师技能之photoshop巧用系列第四篇——图片格式

    × 目录 [1]图片格式 [2]保存设置 前面的话 对于前端来说,图片格式是需要重要掌握的知识.本文是photoshop巧用系列第四篇——图片格式 图片格式 目前在前端的开发中常用的图片格式有jpg. ...

  8. 第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理

    温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微信公众平台开发实战之了解微信公众平台基础知识以及资料准备 第二篇 :微信公众平台开发实战之开启开发者模式,接入微信公众平台开发 第三篇 :微信公众 ...

  9. IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构(转载)

    IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构 系列文章链接: IIS负载均衡-Application Request Route详解第一篇: ...

随机推荐

  1. 从零自学Java-10.充分利用现有对象

    1.超类和子类的设计:2.建立继承层次:3.覆盖方法. 程序StringLister:使用数组列表和特殊的for循环将一系列字符串按字母顺序显示到屏幕上.这些字符串来自一个数组和命令行参数 packa ...

  2. SOAP REST

    SOAP是基于RPC原理,是传统程序的函数调用和返回在RPC中被请求和应答代替了而已. SOAP Simple Object Access Protocol,是一种严格定义的信息交换协议,用于在web ...

  3. yolo.h5制作方法

    学习吴恩达的深度学习第三课缺少yolo.h5文件,花了很长时间来解决这个问题. 看到CSDN上各种需要积分下载的yolo.h5文件,实在看不下去了. 从 https://github.com/alla ...

  4. 【PAT】B1085 PAT单位排行(25 分)(c++实现)

    终于做的有点眉目了,今天学习了一点stl的皮毛,解题瞬间变容易了 下边开始分析本题 这道题如果用纯c解决实在太麻烦,试了半天两个超时,果断放弃,还是用map方便: 我的方法与柳神的方法是有区别的,我只 ...

  5. Iptables防火墙(SNAT和DNAT)

     1.SNAT:源地址转换 实现内网访问外网,修改IP地址,使用POSTROUTING 命令:iptables  -t  nat  -A POSTROUTING  -s  192.168.1.10/2 ...

  6. Hadoop2.7.6_05_mapreduce-Yarn

    1. MAPREDUCE原理 Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架: Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认 ...

  7. ccf-20171203 Crontab问题

    这题有如下几个点要注意: 1.最开始输出的开始时间和截止时间,这里是不包含截止时间的. 2.月份和星期的英文表示是大小写任意的,并未规定必须是Sat这种形式. 3.星期天的数字标识是0. 我的思路是, ...

  8. NavigationController相关颜色设置

    一.当push进去一个界面后,返回按钮颜色改变: self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

  9. Arcgis10.3在添加XY数据时出现问题

    准备通过excel表格(xls格式)中的经纬度生成点数据,但是选择数据的时候报错:连接到数据库失败,常规功能故障,外部表不是预期的格式.如下图所示: 解决方法: 将xls格式的表格另存为csv格式,重 ...

  10. CyclicBarrier源码解读

    1. 简介 JUC中的CyclicBarrier提供了一种多线程间的同步机制,可以让多个线程在barrier等待其它线程到达barrier.正如其名CyclicBarrier含义就是可以循环使用的屏障 ...