R语言 最小二乘法OLS的运用
回归有多种形式。下面主要介绍普通最小二乘(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的运用相关推荐
- R语言实战 OLS回归
第八章回归 OLS回归 这里演示的大部分内容中,都是利用OLS法通过一系列的预测变量来预测响应变量. OLS回归的大概介绍: OLS回归拟合模型的形式: n是观测的数目 k是也测变量的数目 第i次观测 ...
- R语言实战笔记--第八章 OLS回归分析
R语言实战笔记–第八章 OLS回归分析 标签(空格分隔): R语言 回归分析 首先,是之前的文章,数理统计里面的简单回归分析,这里简单回顾一下: 简单回归分析的原理:最小二乘法,即使回归函数与实际值之 ...
- R语言普通最小二乘(OLS)回归说明、以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性)、Independence(独立性)、Linearity(线性度)、方差齐性)
R语言普通最小二乘(OLS)回归说明.以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性).Independence(独立性).Linearity(线性度).方差齐性) ...
- R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类...
原文链接:http://tecdat.cn/?p=21379 本文我们对逻辑回归和样条曲线进行介绍. logistic回归基于以下假设:给定协变量x,Y具有伯努利分布, 目的是估计参数β. 回想一下, ...
- 用r语言画出y = ax^2 + bx + c,R语言中如何使用最小二乘法
这里只是介绍下R语言中如何使用最小二乘法解决一次函数的线性回归问题. 代码如下: > x > y > lsfit(x,y) 结果如下: $coefficients Intercept ...
- r读取shape文件可视化_R语言读取空间数据以及ArcGIS中OLS工具回归结果可视化R语言版...
前面已经介绍过R语言读取excel的方法了,当然读取数据来说,个人还是推荐csv或txt存储(针对小数据量).大数据量的数据的话建议还是用数据库,此外也可以考虑data.table包读取,这个包也是个 ...
- R语言 OLS回归中的几种回归方法
线性回归:R语言实战 简单线性回归 如果直线形式的线性回归不够准确,可以多加一个二次项,构成多项式回归,变成一条曲线来提高拟合的精度. 多项式回归:R语言实战笔记 多项式回归 如果预测变量不止一个,就 ...
- R语言入门(2)时间序列分析原理
1.随机游走模型 1.1 基本介绍 随机游走模型是时间序列分析中最基本的概念,是一个著名的非平稳序列.公式如下: Yt=Yt−1+ut Y_t = Y_{t-1} + u_t 式中, utu_t是一个 ...
- R语言解读自回归模型
R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可 ...
- R语言计算线性回归的最小二乘估计
R语言计算线性回归的最小二乘估计 全称:线性回归的最小二乘法(OLS回归),ordinary least square,字面翻译:普通最小平方: 内容:包括三个部分:简单线性回归.多项式回归.多元线性 ...
最新文章
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jumpamp;Crouch
- mathematica实现闭包
- [ZZ88]送给即将毕业奔三的男人们的16条忠告
- 机器学习实战-聚类分析KMEANS算法-25
- winform 以不规则图形背景显示窗体
- 为什么 Dapr 如此令人兴奋
- java生成json字符串,威力加强版
- 用easymock来mock数据
- 家里的活一般是都帮不上忙
- 安装使用 superset
- 一个月面试近 20 家,拿下阿里 Offer!
- Python20行代码爬取搞笑图片—拯救你的不开心
- solr java 客户端
- 电脑开机自动推送微信通知
- Error running : No valid Maven installation found. Either set the
- 弹跳机器人 桌游_《碰撞机器人 Ricochet Robots 》介绍
- Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法
- 自定义实现乘风破浪的小船
- KNN(k-nearest neighbor的缩写)最近邻算法原理详解
- 算法小讲堂之哈希表|散列表|考研笔记
热门文章
- 亚马逊云科技与德勤中国同行,创造更智慧、美好的数字化未来
- 【OpenCV】Flutter 上采用ffi 与 c++ 的opencv交互使用总结
- c++11新特性std::is_trivial
- formula 返回list_Formula element (List)
- 高考倒计时100天,考生如何提前准备?
- diskpart给u盘分区
- 利用tushare数据计算期货主力合约的活跃度
- 方舟手游修改服务器难度,方舟手游中途可以修改难度吗
- Splitter 用法
- python数据分析实验报告心得_Python实训周总结