回归有多种形式。下面主要介绍普通最小二乘(OLS)回归法,包括简单线性回归、多项式回归、多元线性回归以及交互性回归。

最小二乘法OLS的主要运算符

条件:减小因变量的真实值与预测值的差值来获取模型参数,即残差平方和最小。

为了能够恰当地解释OLS模型的系数,数据必须满足以下统计假设
(1)正态性。对于固定的自变量值,因变量值成正态分布
(2)独立性。Yi值之间相互独立。
(3)线性。因变量与自变量之间为线性相关。
(4)同方差性。因变量的方差不随自变量的水平不同而变化。

在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;代码y~ x * z * w可展开为y ~ x + z + w + x:z + x:w + z:w +x:z:w
^ 表示交互项的次数,例如,z ~ (x+y)^2,展开为z~x+y+x:y;代码y ~ (x + z + w)^2可展开为y ~ x + z + w + x:z + x:w + z:w
. 表示包含除因变量之外的所有变量,例如,如果只有三个变量x,y和z,那么代码 z~.,展开为z~x+y+x:y
- 表示从等式中移除某个变量。例如,y ~ (x + z + w)^2 – x:w可展开为y ~ x + z + w +x:z + z:w
-1 删除截距项,强制回归的直线通过原点
I() 从算术的角度来解释括号中的表达式,例如,z~y+I(x^2) 表示的拟合公式是 z=a+by+cx2, 例如,y ~ x + (z + w)^2将展开为y ~ x + z + w + z:w。相反, 代码y~ x + I((z + w)^2)将展开为y ~ x + h, h是一个由z和w的平方和创建的新变量
function 可以在表达式中应用数学函数,例如,log(z) ~x+y

其他命令如下【对于拟合后的模型(lm函数返回的对象),可以应用下面的函数,得到模型的更多额外的信息】:

函数 用途
summary() 展示拟合模型的详细结果
coefficients() 列出拟合模型的模型参数(截距项和斜率)
confint() 提供模型参数的置信区间(默认95%)
fitted() 列出拟合模型的预测值
residuals() 列出拟合模型的残差值
anova() 生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表
vcov() 列出模型参数的协方差矩阵
AIC() 输出赤池信息统计量
plot() 生成评价拟合模型的诊断图
predict() 用拟合模型对新的数据集预测响应变量值

1. 简单线性回归

举个栗子:

fit <- lm(weight~height,data=women)
summary(fit)
结果分析
  • 残差标准差(Residual standard error):表示模型用身高来预测体重的平均误差

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

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

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

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

2.多项式回归

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

fit2 <- lm(weight~I(height^2),data=women)   ##多项式回归仍是线性回归

具体的不介绍

3.多元线性回归

当自变量不止一个时,简单线性回归就变为多元线性回归。

多元回归分析中,第一步最好检查下变量间的相关性cor(),cor.test(),corr.test()

data=data.frame(Y,Z,W)
cor(data)
  • cor(x,use=,method=),use是指定缺失值的处理方式,系统默认是use="everthing"和method=“pearson”。一般也需要计算方差和协差阵,用cov()函数即可
  • cor.test函数只能每次检验一种相关关系。
  • psych包corr.tesr()函数可以做总体(多个特征)的相关检验。corr.test(data,use=“complete”) use取值有两种“pairwise”,"complete"是处理缺失值的,代码如图所示,可以清晰相关系数对应的概率。

一些操作代码:

mydata <- read.csv("intro_auto.csv")
# 读入数据,也可以用R中的mtcarsnames(mydata)
# 查看数据中的变量名head(mydata)
# 查看数据中的前几条记录attach(mydata)
# 直接调用变量,不用mydata$mpgsummary(mpg)
# 变量mpg的描述性统计分析,最小值、最大值、中位数、平均数、四分位数等sort(make)
# 字符型变量按照abc排序,如果是数值型,从大到小排序table(make)
# 出现频率统计table(make,foreign)
# 二维的频率统计cor(price,mpg)
# 相关性t.test(mpg,mu = 20)
# t检验,mu的均值是否异于20anova(lm(mpg~factor(foreign)))
# 方差分析olsreg <- lm(mpg~weight+length+foreign)
# 多元线性回归summary(olsreg)
# 回归结果的描述Y <- cbind(mpg)
X <- cbind(weight,length,foreign)
# 把被解释变量存成Y,解释变量存成X,后面回归的时候方便很多olsreg <- lm(Y ~ X)
# 回归summary(olsreg)
# 回归结果的描述plot(olsreg)
# 会生成四张图,反映回归的好坏
##Q-Q图对应正态性检验##Residuals vs Fitted(残差图与拟合图)对应线性假设,
##若图中有曲线关系,则可能需要对回归模型加二次项。##Scale-Location Graph(位置尺度图)对应同方差性。
##若水平线周围的点随机分布,则满足假设。##Residual vs Leverage(残差与杠杆图)提供可能关注的单个观测点。
##从图上可以鉴别出离群点、高杠杆点和强影响点。

4.有交互项的多元线性回归

此时代码例子为:

fit <- lm(mpg ~ hp + wt + hp:wt, data = mtcars)

若两个自变量的交互项显著,则说明因变量与其中一个自变量的关系依赖于另一个自变量。

用effects包中的effect()函数,可以用图形展示交互项结果(即当一个变量取某个固定的值时,另一个自变量变化时因变量的变化),格式为:

plot(effect(term, mod, xlevels), multiline =TRUE)

term即模型要画的项,mod为通过lm()拟合的模型,xlevels是一个列表,指定变量要设定的常量值,multiline = TRUE选项表示添加相应直线。

例:

plot(effect("hp:wt", fit, list(wt = c(2.2, 3.2, 4.2))), multiline = TRUE)

5.回归诊断

summary()函数对模型有了整体的描述,但是没有提供关于模型在多大程度上满足统计假设的任何信息,即没有任何输出告诉你模型是否合适。回归诊断技术提供了评价回归模型适用性的必要工具,帮助发现并纠正问题。
car包提供了大量的函数,大大增强了拟合和评价回归模型的能力

5.1 正态性

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

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

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

5.2 误差的独立性

car包提供了一个可做Durbin-Watson检验的函数,能够检测误差的序列相关性。对应函数为durbinwatsonTest()

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

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

5.3 线性

通过成分残差图(component + residual plots)检查因变量和自变量之间是否呈线性关系。
对应car包中crPlot函数绘制。

crPlots(fit)

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

5.4 同方差性

ncvTest()函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性(误差方差不恒定)。

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

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

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

R语言 最小二乘法OLS的运用相关推荐

  1. R语言实战 OLS回归

    第八章回归 OLS回归 这里演示的大部分内容中,都是利用OLS法通过一系列的预测变量来预测响应变量. OLS回归的大概介绍: OLS回归拟合模型的形式: n是观测的数目 k是也测变量的数目 第i次观测 ...

  2. R语言实战笔记--第八章 OLS回归分析

    R语言实战笔记–第八章 OLS回归分析 标签(空格分隔): R语言 回归分析 首先,是之前的文章,数理统计里面的简单回归分析,这里简单回顾一下: 简单回归分析的原理:最小二乘法,即使回归函数与实际值之 ...

  3. R语言普通最小二乘(OLS)回归说明、以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性)、Independence(独立性)、Linearity(线性度)、方差齐性)

    R语言普通最小二乘(OLS)回归说明.以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性).Independence(独立性).Linearity(线性度).方差齐性) ...

  4. R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类...

    原文链接:http://tecdat.cn/?p=21379 本文我们对逻辑回归和样条曲线进行介绍. logistic回归基于以下假设:给定协变量x,Y具有伯努利分布, 目的是估计参数β. 回想一下, ...

  5. 用r语言画出y = ax^2 + bx + c,R语言中如何使用最小二乘法

    这里只是介绍下R语言中如何使用最小二乘法解决一次函数的线性回归问题. 代码如下: > x > y > lsfit(x,y) 结果如下: $coefficients Intercept ...

  6. r读取shape文件可视化_R语言读取空间数据以及ArcGIS中OLS工具回归结果可视化R语言版...

    前面已经介绍过R语言读取excel的方法了,当然读取数据来说,个人还是推荐csv或txt存储(针对小数据量).大数据量的数据的话建议还是用数据库,此外也可以考虑data.table包读取,这个包也是个 ...

  7. R语言 OLS回归中的几种回归方法

    线性回归:R语言实战 简单线性回归 如果直线形式的线性回归不够准确,可以多加一个二次项,构成多项式回归,变成一条曲线来提高拟合的精度. 多项式回归:R语言实战笔记 多项式回归 如果预测变量不止一个,就 ...

  8. R语言入门(2)时间序列分析原理

    1.随机游走模型 1.1 基本介绍 随机游走模型是时间序列分析中最基本的概念,是一个著名的非平稳序列.公式如下: Yt=Yt−1+ut Y_t = Y_{t-1} + u_t 式中, utu_t是一个 ...

  9. R语言解读自回归模型

    R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可 ...

  10. R语言计算线性回归的最小二乘估计

    R语言计算线性回归的最小二乘估计 全称:线性回归的最小二乘法(OLS回归),ordinary least square,字面翻译:普通最小平方: 内容:包括三个部分:简单线性回归.多项式回归.多元线性 ...

最新文章

  1. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jumpamp;Crouch
  2. mathematica实现闭包
  3. [ZZ88]送给即将毕业奔三的男人们的16条忠告
  4. 机器学习实战-聚类分析KMEANS算法-25
  5. winform 以不规则图形背景显示窗体
  6. 为什么 Dapr 如此令人兴奋
  7. java生成json字符串,威力加强版
  8. 用easymock来mock数据
  9. 家里的活一般是都帮不上忙
  10. 安装使用 superset
  11. 一个月面试近 20 家,拿下阿里 Offer!
  12. Python20行代码爬取搞笑图片—拯救你的不开心
  13. solr java 客户端
  14. 电脑开机自动推送微信通知
  15. Error running : No valid Maven installation found. Either set the
  16. 弹跳机器人 桌游_《碰撞机器人 Ricochet Robots 》介绍
  17. Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法
  18. 自定义实现乘风破浪的小船
  19. KNN(k-nearest neighbor的缩写)最近邻算法原理详解
  20. 算法小讲堂之哈希表|散列表|考研笔记

热门文章

  1. 亚马逊云科技与德勤中国同行,创造更智慧、美好的数字化未来
  2. 【OpenCV】Flutter 上采用ffi 与 c++ 的opencv交互使用总结
  3. c++11新特性std::is_trivial
  4. formula 返回list_Formula element (List)
  5. 高考倒计时100天,考生如何提前准备?
  6. diskpart给u盘分区
  7. 利用tushare数据计算期货主力合约的活跃度
  8. 方舟手游修改服务器难度,方舟手游中途可以修改难度吗
  9. Splitter 用法
  10. python数据分析实验报告心得_Python实训周总结