一元线性回归(R语言)

目录

  • 一元线性回归
      • 一元线性回归建模的大致思路如下:
    • 1. 确定因变量与自变量之间的关系
        • 1.1 查看变量间有没有相关关系
        • 1.2计算相关系数
        • 1.3 检验相关系数
    • 2.建立模型,并对模型进行估计和检验
        • 2.1 回归模型的拟合
        • 2.2 计算回归系数的置信区间
        • 2.3 绘制拟合图
    • 3.利用回归方程进行预测
        • 3.1 利用回归方程进行预测
        • 3.2 绘制置信带和预测带
        • 3.3 计算 x0 = 500 时销售收入的点预测值、置信区间和预测区间
    • 4. 对回归模型进行诊断
        • 4.1 回归预测值(pre)、残差(res)、标准化残差(zre)
        • 4.2 检验线性关系
        • 4.3 检验正太性
        • 4.4 检验方差齐性
        • 4.5 检验独立性
  • 数据连接

一元线性回归

  • 因变量:研究者特别关注的被预测或被解释的变量,又称为响应变量
  • 自变量:用来预测或解释因变量的一个或多个变量,由成为解释变量
  • 在回归分析中,只涉及一个自变量时称为【一元回归】,涉及多个自变量时成为【多元回归】
  • 如果因变量与自变量之间是线性关系,则称为【线性回归 (linear regression)】
  • 如果因变量与自变量之间是非线性关系,则成为【非线性回归 (nonlinear regression)】

一元线性回归建模的大致思路如下:

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

1. 确定因变量与自变量之间的关系

1.1 查看变量间有没有相关关系

data = read.csv('***.csv')
library(carData)
library(car)
scatterplot(销售收入~广告支出,data=data,pch=19,xlab="广告支出",ylab="销售收入",cex.lab=0.8)

一元线性回归(R语言)_第1张图片

1.2计算相关系数

cor(data$销售收入,data$广告支出)

#### 输出结果
0.937114

1.3 检验相关系数

cor.test(data$销售收入,data$广告支出)

一元线性回归(R语言)_第2张图片

  • P=1.161e-09,表明相关关系显著

2.建立模型,并对模型进行估计和检验

2.1 回归模型的拟合

model = lm(销售收入~广告支出,data=data)
summary(model)

一元线性回归(R语言)_第3张图片

  • 模型分析:
    • t检验统计量 t =11.391,P = 1.16e-09,P<0.05接近于0,表示广告支出时影响销售收入的一个显著因素。
    • 残差标准误(Residual standard error) S_e = 394,表示用广告支出来预测销售收入时平均的预测误差为394万元。
    • 决定系数(Multiple R-squared) R^2 = 0.8782 = 87.82%,表示在销售收入取值的总误差中,有87.82%可以由销售收入与广告支出之间的线性关系来解析,模型的拟合程度较高。
    • 模型给出的检验统计量(F-statistic) F = 129.8,P = 1.161e-09,P<0.05接近于0,表示销售收入与广告支出之间的线性关系显著。

2.2 计算回归系数的置信区间

confint(model,level = 0.95)

在这里插入图片描述

  • 根据模型计算出的置信区间表示,广告支出每变动1万元,销售收入的平均改变量在4.627092万~6.719825万元之间。

2.3 绘制拟合图

plot(data$销售收入~data$广告支出)
text(data$销售收入~data$广告支出,labels=data$企业编号,cex=0.6,adj=c(-0.6,0.25),col=4)
abline(model,col=2,lwd=2)
n = nrow(data)
for (i in 1:n){segments(data[i,3],data[i,2],data[i,3],model$fitted[i])}
mtext(expression(hat(y)==2343.8916+5.6735%*%广告支出),cex=0.7,side=1,line=-5,adj=0.6)
arrows(550,4500,550,5350,code=2,angle=15,length=0.1)

一元线性回归(R语言)_第4张图片

3.利用回归方程进行预测

3.1 利用回归方程进行预测

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

一元线性回归(R语言)_第5张图片

3.2 绘制置信带和预测带

library(investr)
plotFit(model,data=data,interval = "both",level=0.95,col.conf = "skyblue3",col.pred = "green",col.fit = "red2")
legend(x="topleft",legend = c("回归线","置信区间","预测区间"),col=c("red2","skyblue3","green"),cex=0.8)

一元线性回归(R语言)_第6张图片

3.3 计算 x0 = 500 时销售收入的点预测值、置信区间和预测区间

x0 = data.frame(广告支出 = 500)
predict(model,newdata = x0)
#### 输出结果
5180.621


predict(model,data.frame(广告支出=500),interval="confidence",level=0.95)
#### 输出结果
       fit      lwr      upr
1 5180.621 4994.127 5367.115



predict(model,data.frame(广告支出=500),interval="prediction",level=0.95)
#### 输出结果
       fit      lwr      upr
1 5180.621 4332.199 6029.043

4. 对回归模型进行诊断

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


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

一元线性回归(R语言)_第7张图片

# 绘制残差图
plot(zre)

一元线性回归(R语言)_第8张图片

  • 残差图:通过残差图可看出,所有的点基本都以0为中心随机分布在一条水平带

4.2 检验线性关系

library(car)
crPlots(model)

一元线性回归(R语言)_第9张图片

  • 从拟合曲线可以看出,销售收入与广告支出之间没有明显的非线性模式,说明二者之间的线性关系假定成立。
  • 如果由明显的非线性关系,就需要考虑建立非线性模型

4.3 检验正太性

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

一元线性回归(R语言)_第10张图片

  • Normal Q-Q 图:时标准化残差的正态Q-Q,该图可用于检验残差的正太性假定,从该图中可以看出,各个点基本上在直线周围随机分布,没有固定模式,因此,在销售收入与广告支出的线性模型中,关于ε正太性的假定基本成立。
  • Residuals vs Fitted 图:残差值与拟合值图,可用于判断因变量与自变量之间的线性关系假定是否成立。如果因变量与自变量之间为线性关系,那么残差值与拟合值之间就没有任何系统关系。从该图可以看出,各残差值基本上在0轴水平线附近随机波动,图中的曲线与残差的0轴水平线没有什么差异,也接近于直线。因此,销售收入与广告支出之间的线性关系成立。
  • Scale-Location 图:位置尺图,可用于判断残差的方差齐性假定是否成立。如果ε满足方差齐性,则各个点在水平线周围随机分布。从该图可以看出,在销售收入与广告支出的线性模型中,关于ε方差齐性的假定基本成立。
  • Residuals vs Leverage 图:残差与杠杆图,该图可用于鉴别样本数据中是否由离群点,高杠杆值点和强影响点。

4.4 检验方差齐性

ncvTest(model)

在这里插入图片描述

spreadLevelPlot(model)

一元线性回归(R语言)_第11张图片

  • 检验结论:方差齐性检验的原假设为误差项满足方差齐性,P=0.28854,不拒绝原假设,建立的回归模型满足方差齐性。

4.5 检验独立性

durbinWatsonTest(model)

在这里插入图片描述

  • 独立性检验结论:该检验的原假设为残差无自相关,P=0.49,不拒绝原假设,显示残差无相关

数据连接

  • 下载链接

你可能感兴趣的:(R语言,统计相关,r语言,线性回归,回归,数据分析,最小二乘法)