一元线性回归(R语言)

这篇博客介绍了如何进行一元线性回归分析,包括确定因变量与自变量的关系、建立和检验模型、利用回归方程预测以及模型诊断。通过相关系数检验、散点图、回归分析和残差图等方法,展示了如何使用R语言进行数据分析,并对广告支出与销售收入之间的关系进行了深入探讨。最终,验证了模型的有效性和预测能力。
摘要由CSDN通过智能技术生成

一元线性回归

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

在这里插入图片描述

1.2计算相关系数
cor(data$销售收入,data$广告支出)

#### 输出结果
0.937114
1.3 检验相关系数
cor.test(data$销售收入,data$广告支出)

在这里插入图片描述

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

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

2.1 回归模型的拟合
model = lm(销售收入~广告支出,data=data)
summary(model)

在这里插入图片描述

  • 模型分析:
    • 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)

在这里插入图片描述

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])

在这里插入图片描述

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)

在这里插入图片描述

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)

在这里插入图片描述

# 绘制残差图
plot(zre)

在这里插入图片描述

  • 残差图:通过残差图可看出,所有的点基本都以0为中心随机分布在一条水平带
4.2 检验线性关系
library(car)
crPlots(model)

在这里插入图片描述

  • 从拟合曲线可以看出,销售收入与广告支出之间没有明显的非线性模式,说明二者之间的线性关系假定成立。
  • 如果由明显的非线性关系,就需要考虑建立非线性模型
4.3 检验正太性
par(mfrow=c(2,2),cex=0.8,cex.main=0.7)
plot(model)

在这里插入图片描述

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

在这里插入图片描述

spreadLevelPlot(model)

在这里插入图片描述

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

在这里插入图片描述

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

数据连接

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煜岐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值