一元线性回归

  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 相关关系的描述

常用工具:散点图

R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多


R语言线性回归 自变量多 r语言线性回归置信区间_线性回归_02


R语言线性回归 自变量多 r语言线性回归置信区间_r语言_03

  • 绘制散点图
> 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)

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_04


9.1.3 关系强度的度量

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

1. 相关系数

R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_05


R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_06

假定:

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

2.相关系数的检验

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

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

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_07

  • 进行决策,求出P值,如果P小于a,拒绝H0,表示总体两个变量之间线性关系显著
  • 计算相关系数
> cor(table[,2],table[,3])
[1] 0.937114
  • 检验相关系数
> cor.test(table[,2],table[,3])

	Pearson's product-moment correlation

data:  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 模型估计和检验

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_08

9.2.1 回归模型和回归方程

  • 回归模型


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

9.2.2 参数的最小二乘估计

R语言线性回归 自变量多 r语言线性回归置信区间_ide_09


R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_10


R语言线性回归 自变量多 r语言线性回归置信区间_ide_11


R语言线性回归 自变量多 r语言线性回归置信区间_拟合_12

  • 回归模型的拟合
> 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 ‘ ’ 1

Residual 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 Table

Response: 销售收入
          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)}

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_13

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

R语言线性回归 自变量多 r语言线性回归置信区间_ide_14

9.2.3 模型的拟合优度

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

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

1. 决定系数

误差来源:

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

  • 回归平方和(SSR)

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

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_15

  • 残差平方和(SSE)

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

R语言线性回归 自变量多 r语言线性回归置信区间_拟合_16

SST=SSR+SSE

R语言线性回归 自变量多 r语言线性回归置信区间_拟合_17


R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_18

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


2.残差的标准误

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_19


Se度量各观测值在直线周围分散程度,反映了实际观测值与估计观测值差异程度,也是对误差项的标准差估计

在排除x对y的线性影响后,y随机波动大小的估计量

各点越靠近直线,Se越小


9.2.4 模型的显著性检验

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

1. 线性关系检验

F检验

R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_20


R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_21

> anova(model1)
Analysis of Variance Table

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


R语言线性回归 自变量多 r语言线性回归置信区间_拟合_22

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

t检验

R语言线性回归 自变量多 r语言线性回归置信区间_ide_23


R语言线性回归 自变量多 r语言线性回归置信区间_线性回归_24

> 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均值的区间

R语言线性回归 自变量多 r语言线性回归置信区间_拟合_25

R语言线性回归 自变量多 r语言线性回归置信区间_线性回归_26


R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_27

9.3.2 个别值的预测区间

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

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_28


R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_29

R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_30


R语言线性回归 自变量多 r语言线性回归置信区间_ide_31

  • 点预测值、置信区间、预测区间
> 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
  • 绘制置信区间预测区间图


R语言线性回归 自变量多 r语言线性回归置信区间_线性回归_32

  • 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 回归模型的诊断

R语言线性回归 自变量多 r语言线性回归置信区间_ide_33

9.4.1 残差与残差图

R语言线性回归 自变量多 r语言线性回归置信区间_线性回归_34

  • 回归预测值(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

R语言线性回归 自变量多 r语言线性回归置信区间_ide_35


R语言线性回归 自变量多 r语言线性回归置信区间_R语言线性回归 自变量多_36

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

9.4.2 检验模型的假定

1. 检验线性关系

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

R语言线性回归 自变量多 r语言线性回归置信区间_拟合_37

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

2. 检验正态性

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

R语言线性回归 自变量多 r语言线性回归置信区间_r语言_38

  • 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

R语言线性回归 自变量多 r语言线性回归置信区间_拟合_39

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

4. 检验独立性

R语言线性回归 自变量多 r语言线性回归置信区间_ide_40


R语言线性回归 自变量多 r语言线性回归置信区间_拟合_41

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

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