一元线性回归

  1. 确定因变量与自变量的关系
  2. 建立线性关系模型,并对模型进行估计和检验
  3. 利用回归方程进行预测
  4. 对回归模型进行诊断

绘制散点图

library(car)
scatterplot(销售收入~广告支出,data=table,pch=19,xlab='add out',ylab='in',cex.lab=0.8)

计算相关系数

cor(table[,2],table[,3])

检验相关系数

cor.test(table[,2],table[,3])

回归模型的拟合

model1<-lm(销售收入~广告支出,data=table)
summary(model1)

计算回归系数的置信区间

confint(model1,level=0.95)

输出方差分析表

anova(model1)

点预测值、置信区间、预测区间

x0<-table$广告支出
pre_model<-predict(model1)
con_int<-predict(model1,data.frame(广告支出=x0),interval = "confidence",level=0.95)
pre_int<-predict(model1,data.frame(广告支出=x0),interval = "prediction",level=0.95)
data.frame(销售收入=table$销售收入,点预测值=pre_model,置信下限=con_int[,2],置信上限=con_int[,3],预测下限=pre_int[,2],预测上限=pre_int[,3])

x0为具体值时 点预测值、置信区间、预测区间

x0<-data.frame(广告支出=500)
predict(model1,newdata=x0)
predict(model1,data.frame(广告支出=500),interval = "confidence",level=0.95)
predict(model1,data.frame(广告支出=500),interval = "prediction",level=0.95)

回归预测值(pre)残差(res)标准化残差(zre)

pre<-fitted(model1)
res<-residuals(model1)
zre<-model1$residuals/(sqrt(deviance(model1)/df.residual(model1)))
data.frame(销售收入=table$销售收入,点预测值=pre,残差=res,标准化残差=zre)

绘制成分残差图

library(car)
crPlots(model1)

残差的模型诊断图

par(mfrow=c(2,2),cex=0.8,cex.main=0.7)
plot(model1)

检验方差齐性ncvTest

library(car)
ncvTest(model1)

绘制散布-水平图

spreadLevelPlot(model1)

D- W检验(时间序列可能出现的残差自相关

library(car)
durbinWatsonTest(model1)

文章目录

  • 一元线性回归
  • 9.1 确定变量间的关系
    • 9.1.1 变量间的关系
    • 9.1.2 相关关系的描述
    • 9.1.3 关系强度的度量
      • 1. 相关系数
      • 2.相关系数的检验
  • 9.2 模型估计和检验
    • 9.2.1 回归模型和回归方程
    • 9.2.2 参数的最小二乘估计
    • 9.2.3 模型的拟合优度
      • 1. 决定系数
      • 2.残差的标准误
    • 9.2.4 模型的显著性检验
      • 1. 线性关系检验
      • 2.回归系数的检验和推断
  • 9.3 利用回归方程进行预测
    • 9.3.1 均值的置信区间
    • 9.3.2 个别值的预测区间
  • 9.4 回归模型的诊断
    • 9.4.1 残差与残差图
    • 9.4.2 检验模型的假定
      • 1. 检验线性关系
      • 2. 检验正态性
      • 3. 检验方差齐性
      • 4. 检验独立性

9.1 确定变量间的关系

  1. 变量之间是否有关系
  2. 如果有,他们有什么关系
  3. 变量间关系强度如何
  4. 样本所反映的变量关系能否代表总体变量之间的关系

9.1.1 变量间的关系

  • 函数关系:存在准确函数;x与y一一对应
  • 相关关系:影响一个变量的因素有多个,之间存在不确定性;x对应多个y

9.1.2 相关关系的描述

常用工具:散点图


  • 绘制散点图
> table<-read.csv("/Users/zhourui/Documents/example9_1.csv")
> library(car)
> scatterplot(销售收入~广告支出,data=table,pch=19,xlab='add out',ylab='in',cex.lab=0.8)

9.1.3 关系强度的度量

散点图可以判断两个变量之间有没有相关关系,做出大致描述,但是准确度量变量间关系强度,需要计算相关系数

1. 相关系数


假定:

  • 两变量有线性关系
  • 两变量都是随机变量
  • 服从一个联合的双变量正态分布
  • 样本数据中无极端值

2.相关系数的检验

总体相关系数通过样本相关系数预测,样本抽样不同,样本相关系数不同,则需要考察样本相关系数的可靠性:显著性检验

  • 提出假设
  • 计算检验统计量

  • 进行决策,求出P值,如果P小于a,拒绝H0,表示总体两个变量之间线性关系显著

  • 计算相关系数

> cor(table[,2],table[,3])
[1] 0.937114
  • 检验相关系数
> cor.test(table[,2],table[,3])Pearson's product-moment correlationdata:  table[, 2] and table[, 3]
t = 11.391, df = 18, p-value = 1.161e-09
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:0.8450142 0.9752189
sample estimates:cor
0.937114

线性关系显著

9.2 模型估计和检验

9.2.1 回归模型和回归方程

  • 回归模型


    误差项假定:
    1、正态性
    2、方差齐性
    3、独立性
  • 估计回归方程

9.2.2 参数的最小二乘估计




  • 回归模型的拟合
> model1<-lm(销售收入~广告支出,data=table)
> summary(model1)Call:
lm(formula = 销售收入 ~ 广告支出, data = table)Residuals:Min      1Q  Median      3Q     Max
-766.30 -273.85  -26.79  174.73  900.66 Coefficients:Estimate Std. Error t value Pr(>|t|)
(Intercept) 2343.8916   274.4825   8.539 9.56e-08 ***
广告支出       5.6735     0.4981  11.391 1.16e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 394 on 18 degrees of freedom
Multiple R-squared:  0.8782,    Adjusted R-squared:  0.8714
F-statistic: 129.8 on 1 and 18 DF,  p-value: 1.161e-09
  • 计算回归系数的置信空间
> confint(model1,level=0.95)2.5 %      97.5 %
(Intercept) 1767.225152 2920.558006
广告支出       4.627092    6.719825
  • 输出方差分析表
> anova(model1)
Analysis of Variance TableResponse: 销售收入Df   Sum Sq  Mean Sq F value    Pr(>F)
广告支出   1 20139304 20139304  129.76 1.161e-09 ***
Residuals 18  2793629   155202
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

  • 绘制拟合图
> attach(table)
> plot(销售收入 ~ 广告支出)
> text(销售收入 ~ 广告支出,lable=企业编号,cex=0.6,adj=c(-0.6,0.25),col=4)
> abline(model1,col=2,lwd=2)
> n=nrow(table)
> for(i in 1:n){segments(table[i,3],table[i,2],table[i,3],model1$fitted[i])mtext(expression(hat(y)==2343.8916+5.6735%*%广告支出),cex=0.7,side=1,line=-6,adj=0.75)arrows(600,4900,550,5350,code = 2,angle=15,length = 0.08)}

x轴:广告支出,y轴:销售收入

9.2.3 模型的拟合优度

通过估计方程可以使用x来预测y,但是预测的精确度取决于回归模型对观测数据的拟合程度

  • 拟合优度:回归直线与各观测点的接近程度
  • 决定系数:评价拟合优度的统计量

1. 决定系数

误差来源:

  • 自变量取值不同
  • x以外其他随机因素影响


  • 回归平方和(SSR)

回归值与均值的误差平方和,由x变化引起的y变化,反映了y的总误差中由于x变化引起的y变化部分,可以由回归直线解释

  • 残差平方和(SSE)

实际值与回归值的误差平方和,由除了x之外其他因素引起的y变化,不能由回归直线解释

SST=SSR+SSE


Multiple R-squared:  0.8782, Adjusted R-squared:  0.8714

2.残差的标准误


Se度量各观测值在直线周围分散程度,反映了实际观测值与估计观测值差异程度,也是对误差项的标准差估计
在排除x对y的线性影响后,y随机波动大小的估计量
各点越靠近直线,Se越小

9.2.4 模型的显著性检验

建立回归模型前,已经假定x与y有线性关系,但假定是否成立需要检验后才能确定。(判断假定是否成立
显著性检验主要包含:线性关系检验回归系数检验

1. 线性关系检验

F检验

> anova(model1)
Analysis of Variance TableResponse: 销售收入Df   Sum Sq  Mean Sq F value    Pr(>F)
广告支出   1 20139304 20139304  129.76 1.161e-09 ***
Residuals 18  2793629   155202

2.回归系数的检验和推断

t检验

> confint(model1,level=0.95)2.5 %      97.5 %
(Intercept) 1767.225152 2920.558006
广告支出       4.627092    6.719825

9.3 利用回归方程进行预测

回归分析目的:根据建立的回归方程用给定自变量预测因变量

  • 点估计:对于给定x值,求出一个预测值
  • 估计区间:在点估计基础上求的估计区间(均值的置信区间、个别值的预测区间)

9.3.1 均值的置信区间

对于给定x得到一个y均值的区间


9.3.2 个别值的预测区间

对于给定x得到一个y具体值的区间



  • 点预测值、置信区间、预测区间
> x0<-table$广告支出
> pre_model<-predict(model1)
> con_int<-predict(model1,data.frame(广告支出=x0),interval = "confidence",level=0.95)
> pre_int<-predict(model1,data.frame(广告支出=x0),interval = "prediction",level=0.95)
> data.frame(销售收入=table$销售收入,点预测值=pre_model,置信下限=con_int[,2],置信上限=con_int[,3],预测下限=pre_int[,2],预测上限=pre_int[,3])销售收入 点预测值 置信下限 置信上限 预测下限 预测上限
1    4597.5 4264.925 3998.348 4531.501 3395.383 5134.467
2    6611.0 6945.066 6590.492 7299.641 6044.643 7845.490
3    7349.3 6448.639 6168.060 6729.217 5574.703 7322.575
4    5525.7 5260.049 5074.789 5445.310 4411.897 6108.201
5    4675.9 4763.054 4552.697 4973.412 3909.069 5617.039
6    4418.6 4762.487 4552.080 4972.894 3908.490 5616.484
7    5845.4 6196.170 5948.675 6443.664 5332.287 7060.053
8    7313.0 7151.013 6763.533 7538.493 6237.130 8064.896
9    5035.4 5015.523 4822.893 5208.154 4165.731 5865.315
10   4322.6 4578.100 4349.549 4806.650 3719.452 5436.747
11   6389.5 6320.986 6057.644 6584.328 5452.430 7189.542
12   4152.2 4011.888 3709.980 4313.796 3130.873 4892.904
13   5544.8 4854.964 4652.116 5057.813 4002.798 5707.131
14   6095.1 5946.538 5726.896 6166.179 5090.218 6802.857
15   3626.2 3821.828 3491.525 4152.130 2930.682 4712.973
16   3745.4 4074.296 3781.397 4367.196 3196.327 4952.266
17   5121.8 5888.101 5674.071 6102.132 5033.204 6742.998
18   5674.5 5747.967 5545.680 5950.254 4895.934 6600.000
19   4256.6 4043.660 3746.360 4340.960 3164.212 4923.107
20   5803.7 6008.946 5782.898 6234.994 5150.961 6866.931
  • 绘制置信区间预测区间图

  • x0为具体值时 点预测值、置信区间、预测区间
> x0<-data.frame(广告支出=500)
> predict(model1,newdata=x0)1
5180.621
> predict(model1,data.frame(广告支出=500),interval = "confidence",level=0.95)fit      lwr      upr
1 5180.621 4994.127 5367.115
> predict(model1,data.frame(广告支出=500),interval = "prediction",level=0.95)fit      lwr      upr
1 5180.621 4332.199 6029.043

9.4 回归模型的诊断

9.4.1 残差与残差图

  • 回归预测值(pre)残差(res)标准化残差(zre)
> pre<-fitted(model1)
> res<-residuals(model1)
> zre<-model1$residuals/(sqrt(deviance(model1)/df.residual(model1)))
> data.frame(销售收入=table$销售收入,点预测值=pre,残差=res,标准化残差=zre)销售收入 点预测值       残差 标准化残差
1    4597.5 4264.925  332.57536  0.8441934
2    6611.0 6945.066 -334.06646 -0.8479784
3    7349.3 6448.639  900.66117  2.2861954
4    5525.7 5260.049  265.65073  0.6743151
5    4675.9 4763.054  -87.15430 -0.2212283
6    4418.6 4762.487 -343.88696 -0.8729063
7    5845.4 6196.170 -350.76993 -0.8903777
8    7313.0 7151.013  161.98700  0.4111801
9    5035.4 5015.523   19.87679  0.0504543
10   4322.6 4578.100 -255.49955 -0.6485479
11   6389.5 6320.986   68.51398  0.1739126
12   4152.2 4011.888  140.31161  0.3561603
13   5544.8 4854.964  689.83567  1.7510460
14   6095.1 5946.538  148.56225  0.3771033
15   3626.2 3821.828 -195.62753 -0.4965716
16   3745.4 4074.296 -328.89643 -0.8348550
17   5121.8 5888.101 -766.30113 -1.9451423
18   5674.5 5747.967  -73.46670 -0.1864844
19   4256.6 4043.660  212.94024  0.5405174
20   5803.7 6008.946 -205.24580 -0.5209861


  • a:合理(x越大,残差越小)
  • b:违背误差方差相等假设(异方差性)
  • c:回归模型不合理,应选择非线性回归模型

9.4.2 检验模型的假定

1. 检验线性关系

  • F检验
  • 绘制成分残差图
> library(car)
> crPlots(model1)

x轴:广告支出
y轴:销售收入(因变量与残差之和)
没有明显的非线性模式,二者之间线性关系假定成立

2. 检验正态性

  • SW检验
  • KS检验
  • 残差的QQ图
  • 模型诊断(下)
> par(mfrow=c(2,2),cex=0.8,cex.main=0.7)
> plot(model1)

  • Normal Q-Q:标准化残差的正态QQ图➡️检验残差的正态性假定

各点基本上在直线周围随机分布,没有固定模式,正态性假设成立

  • Residuals vs Fitted:残差值与拟合值图➡️因变量与自变量之间的线性关系假定是否成立

如果因变量与自变量之间为线性关系,那么残差值与拟合值之间没有任何系统关系,在0轴水平线附近随机波动

  • Scale-Location:位置尺寸图➡️判断残差的方差齐性假定是否成立

若成立,则各个点在水平线周围随机分布

  • Residuals vs Leverage:残差与杠杆图➡️是否有离群点、高杠杆值点、强影响点

3. 检验方差齐性

  • 检验方差齐性ncvTest

> library(car)
> ncvTest(model1)
Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 1.126441, Df = 1, p = 0.28854

p = 0.28854,不拒绝原假设,可认为回归模型满足方差齐性

  • 绘制散布-水平图
> spreadLevelPlot(model1)Suggested power transformation:  0.8730215

横坐标:拟合值
纵坐标:标准化残差绝对值
线:最佳拟合曲线
线接近水平直线,没有非线性特征,各点随机分布,满足方差齐性

4. 检验独立性


  • D- W检验(时间序列可能出现的残差自相关
> library(car)
> durbinWatsonTest(model1)lag Autocorrelation D-W Statistic p-value1       0.1330482      1.679232   0.464Alternative hypothesis: rho != 0

p=0.464,不拒绝原假设,显示残差无自相关

R语言 CHAR 09相关推荐

  1. R语言 CHAR 01

    第一章 数据与R语言 文章目录 第一章 数据与R语言 一.数据与统计学 1.1 什么是统计学 1.2 变量与数据 1.3 数据来源 二.R语言初步使用 2.1 下载.安装.更新 2.2 对象赋值与运行 ...

  2. R语言 CHAR 11

    时间序列预测 转化成时间格式后画预测图 残差注意相减长度 简单指数平滑预测模型 #模型 cpiforcast<-HoltWinters(table[,5],beta=FALSE,gamma=FA ...

  3. 09#R语言实现决策树分析

    决策树是附加概率结果的一个树状的决策图,是直观的运用统计概率分析的图法.机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点 ...

  4. UA MATH571A R语言回归分析实践 多元回归1 医疗费用的决定

    UA MATH571A R语言回归分析实践 多元回归1 医疗费用 基础回归分析 这一讲开始讨论多元回归,这里选择的例子是寻找家庭医疗费用的决定因素.家庭医疗费用由哪些因素决定是卫生经济学.保险精算等领 ...

  5. geo读取表达矩阵 RNA-seq R语言部分(表达矩阵合并及id转换)

    geo读取表达矩阵 RNA-seq R语言 方法一:1.从geo页面直接下载表达矩阵,然后通过r读取表达矩阵 2.利用getgeo函数读取表达矩阵 3.利用geo自带的geo2r,调整p值为1,获取探 ...

  6. R语言实战笔记--第四五章 数据管理

    R语言实战笔记–第四&五章 数据管理 标签(空格分隔): R语言 第四.第五章都是说的数据管理,合并在一起做个总结,在个人看来,数据管理是一件非常繁琐的事情,但是,每个统计的前提都是一个合适的 ...

  7. 基础004:R语言数据处理和变换——dplyr

    dplyr 背景简介 安装和数据准备 常用函数 变量筛选select 数据筛选filter 排序arrange 创建新变量mutate 本文"植物微生物组"公众号原创,ID: pl ...

  8. R语言笔记8:两个重要函数——用来分解数据框的split和用来查看对象的str

    R语言基础系列: 你知道R中的赋值符号箭头(<-)和等号(=)的区别吗? 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 ...

  9. R语言笔记2:读写数据所需的主要函数、与外部环境交互

    R语言基础系列前情提要: - 1数据类型(向量.数组.矩阵. 列表和数据框) Getting Data In and Out of R (一)读取数据 读取数据所需的几种函数: read.table. ...

最新文章

  1. 6D姿态估计和3D 目标检测(区别)
  2. Spark之数据倾斜 --采样分而治之解决方案
  3. mysql binlog日志查看及解码
  4. 【转】D365 FO第三方集成(三)---服务实现
  5. linux命令之有关网络的操作命令
  6. Java获取数据类型
  7. 光凭 5G 根本无法解决宽带问题!
  8. 去重 属性_Javascript算法 — 数组去重
  9. tomcat 日志配置
  10. hadoop学习笔记01
  11. Java实现分页的几种方式
  12. 深度学习:GCN图分类案例
  13. AtCoder Grand Contest 007 题解
  14. 苹果新机爆裂,德赛和欣旺达却成了关注焦点
  15. 故事版(storyBoard)-lllegal configuration connection object cannot have a prototype objct as
  16. 无线AP(Access Point)是什么
  17. 安装ArcGIS10.2,localhost没有有效的许可管理器的解决办法
  18. SAP中非限制到冻结库存的相互转换操作测试过程记录
  19. 服务器、虚拟主机和空间的区别
  20. 深入探索Win32结构化异常处理

热门文章

  1. 微机原理--第三章(6)移位指令
  2. Windows服务器密码策略、账户锁定策略等安全设置
  3. 让用户进行自传播以老拉新 还需要一个“辅助器”
  4. k-近邻算法(KNN)(机器学习理论+python实战)
  5. Visual Studio 2012 Ultimate RTM 体验(附下载地址和KEY)
  6. 网络安全 基础之 Windows漏洞复现 (MS17-010)永恒之蓝
  7. angular4获得焦点事件_Angular 2 失去焦点事件
  8. KNN最近邻算法分析及实现(Python实现)
  9. 欢迎使用JQuery4u
  10. 远程控制软件vnc,细数4款超级好用的远程控制软件vnc