基础理论:
线性回归模型是一个简单而有效的模型,曾经在过去的一个世纪中在统计界得到主要的应用。

Yi(i=1,…n)是响应随机变量,(x1i,…xpi)是n个实测数据,p是解释变量的数量。€i是残差,是独立分布的随机变量,其平均值为0,方差是一个常数。
以上公式可简化为:Y=Xβ+€
Y和€是n1的矩阵。X是一个np 矩阵,β是一个p*1的矩阵。
线性回归模型的目标是,通过减少响应变量的真实值和预测值的差值来获得模型的参数(截距项和斜率),具体而言,是使得残差的平方和最小。
为了能够恰当解释OLS模型的系数,数据必须满足以下统计假设:正态性、独立性、线性、同方差性
在R中,用lm()来拟合回归模型。当回归模型包含一个因变量和一个自变量时,我们称为简单线性回归。当只有一个预测变量,但同时包含变量的幂时,我们称为多项式回归。当有不止一个预测变量时,则称为多元线性回归。

R语言代码:

#1 简单线性回归
fit<-lm(weight~height,data=women)#先定义拟合的公式
summary(fit)#展示拟合模型的详细结果
women$weight#展示women数据框中的weight字段
fitted(fit)#列出拟合模型的预测值
residuals(fit)#列出拟合的残差值
plot(women$height,women$weight,xlab="Height(in inches)",ylab="Weight(in inches)")#画实测数据的散点图
abline(fit)#在原图中增加拟合直线图
#2 多项式回归
fit2<-lm(weight~height+I(height^2),data=women)#I(height^2)表示向预测等式
#添加一个身高的平方项
summary(fit2)
plot(women$height,women$weight,xlab="Height(in inches)",ylab="Weight(in labs)")
lines(women$height,fitted(fit2))
#3 多元线性回归
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])#lm()需要数据框格式,而源数据是矩阵格式,所以作此转换
cor(states)#先计算变量间的相关性
library(car)#car包中包含scatterplotmatrix函数,可以生成散点图矩阵
scatterplotMatrix(states,spread=FALSE,smoother.args=list(lty=2),main="Scatter Plot Matrix")
#scatterplotMatrix()函数默认在非对角区域绘制变量间的散点图,并添加平滑和线性拟合曲线。对角线区域绘制每个变量的密度图和轴须图
fit3<- lm(Murder~Population+Illiteracy+Income+Frost,data=states)
summary(fit3)
#当预测变量不止一个时,回归系数的含义为:一个预测变量增加一个单位,其他预测变量保持不变时,因变量将要增加的数量。
#4 考虑交互项的多元线性回归
fit4<-lm(mpg~hp+wt+hp:wt,data=mtcars)#hp:wt为交互项
summary(fit4)
#若两个变量的交互项显著,说明响应变量与其中一个预测变量的关系依赖于另外一个预测变量的水平。
library(effects)
plot(effect("hp:wt", fit4,,list(wt=c(2.2,3.2,4.2))),multiline=TRUE)
#5 回归诊断
#以上计算没有任何输出告诉你,模型是否合适。你对模型的信心依赖于它在多大程度上满足OLS模型统计假设。
confint(fit3)
# 先使用R基础包中函数的标准方法
par(mfrow=c(2,2))
plot(fit)
dev.off
# 使用改进的方法 car包提供了大量函数,大大增强了拟合和评价回归模型的能力
# 正态性
library(car)
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
fit3<- lm(Murder~Population+Illiteracy+Income+Frost,data=states)
par(mfrow=c(1,1))
qqPlot(fit3,labels=row.names(states),id.method="identify",simulate=TRUE,main="Q-Q plot")
residplot<-function(fit3,nbreaks=10){z<-rstudent(fit3)hist(z,breaks=nbreaks,freq=FALSE,xlab="Studentized Residual",main="Distribution of Errors")rug(jitter(z),col="brown")curve(dnorm(x,mean=mean(z),sd=sd(z)),add=TRUE,col="blue",lwd=2)lines(density(z)$x,density(z)$y,col="red",lwd=2,lty=2)legend("topright",legend=c("Normal Curve","Kernel Density Curve"),lty=1:2,col=c("blue","red"),cex=.7)
}
residplot(fit3)
#误差的独立性
durbinWatsonTest(fit3)#p值不显著说明无自相关性
# 线性
library(car)
crPlots(fit3)#成分残差图绘制,若图形存在非线性,则说明你对预测变量的函数形式建模不够充分,需要添加一些曲线成分
# 同方差性
ncvTest(fit3)#生成计分检验,p不显著,则说明满足方差不变的假设
spreadLevelPlot(fit3)#最佳拟合曲线的散点图,水平曲线说明合格

线性回归模型及R语言代码相关推荐

  1. 最大熵,三硬币模型的R语言代码

    #最大熵算法 #< 统计学习方法>最大熵,三硬币模型的R语言代码 有3个硬币,分布为A.B.C,硬币正面的概率是pai,p,q.投币实验如下,先投A,如果A是正面,即A=1,那么选择投B: ...

  2. 统计学习导论之R语言应用(三):线性回归R语言代码实战

    统计学习导论(ISLR) 参考资料 The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习导 ...

  3. excel计算二元线性回归_多重共线性及解决方法(附R语言代码)

    一.多重共线性及其危害 我有一组自变量: 它们满足下列关系: 那么我们称这四个变量间存在多重共线性. 这就意味着,一个变量可以被另外几个变量来解释,这就会带来两个后果 1.尽管系数估计的无偏性没有收到 ...

  4. r语言 siar 代码_平滑转换自回归(STAR)模型的R语言编程实现详解

    总体讲,ST(Smooth transition)模型,这块的code混乱的比较狗血,文献中的做法也是千奇百怪, 单变量的有 :STAR, LSTAR, ESTAR, 多变量的有:STVAR, LST ...

  5. 【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例

    全文链接:http://tecdat.cn/?p=23606 梯度下降是一种优化算法,能够为各种问题找到最佳解决方案(点击文末"阅读原文"获取完整代码数据). 梯度下降是什么? 梯 ...

  6. 《统计学习导论》R语言代码整理

    <统计学习导论>R语言代码整理 一.特殊函数 二.基本函数 三.画图 一些函数 一些参数 type pch (plotting character) lty(line types) 特定问 ...

  7. python 梯度提升树_机器学习:梯度提升算法|python与r语言代码实现

    梯度提升算法 10.1 GBM GBM(梯度提升机)是一种在处理大量数据以进行高预测的预测时使用的Boosting算法.Boosting实际上是一个学习算法的集合,它结合了几个基本估计量的预测,以便比 ...

  8. 统计学习导论之R语言应用(四):分类算法R语言代码实战

    统计学习导论之R语言应用(ISLR) 参考资料: The Elements of Statistical Learning An Introduction to Statistical Learnin ...

  9. r语言 面板数据回归_工具方法 | “名牌包”:面板、时间序列模型常用R语言包...

    计量经济学是数学.统计技术和经济分析的综合,即运用数学.统计方法和相关经济理论,通过计量模型来揭示经济数量关系和规律.R语言包,已经实现了现代计量经济学的很多统计分析功能,下面从面板数据模型和时间序列 ...

最新文章

  1. Socket java.net.SocketException: Connection reset的解决方案
  2. 从零点五开始用Unity做半个2D战棋小游戏(六)
  3. sklearn中的metrics
  4. JAVA核心技术卷2:高级特征(原书第8版)
  5. RabbitMQ管控台操作手册
  6. Redis 基础——五大类型与数据结构
  7. 几组图片轮回html,HTML 5 Canvas
  8. A轮、B轮、C轮融资、VC、PE、IPO概念解析
  9. 2.计蒜客ACM题库.A1002 字符串长度
  10. 免费申请ssl证书并部署
  11. AXI总线简介(二)
  12. js prototype 原型对象
  13. 【Nginx之轨迹】Nginx + Lua 实现 waf Web 应用防火墙(解决 nignx 加载失败问题:LuaJIT version which is not OpenResty‘s)
  14. eggs和egg是什么意思_egg是什么
  15. vue通过自定义指令 v-py 将名字转拼音
  16. 8大基本数据类型各占多少字节和一些单位常识
  17. 深度学习词汇表(一)
  18. 将腾讯视频QLV格式转换为MP4格式
  19. Sourcetree 拉取代码提示填写 authentic,但配置无法更改用户
  20. 随手记-记录一些技术点

热门文章

  1. CQSchema优化——2009IBM Rational开发者大会文稿
  2. 关于计算机发展的辩论赛,计算机辩论赛策划书
  3. 美创数据库审计助力中原银行数据安全建设
  4. CSS中的 “点“,“空格“,“>“ ,“逗号”,“+ ”
  5. 三好先生--2021年定个小目标
  6. Python pandas.DataFrame.sum函数方法的使用
  7. Python中timedelta 函数使用
  8. 互联网项目管理 序言
  9. 密码学 AES算法实现 c语言
  10. epic导入游戏_如何获得Epic Store游戏的退款