R语言之多元线性回归xt3.11

第3章 多元线性回归

3.11 研究货运总量y(万吨)与工业总产值x1(亿元)、农业总产值x2(亿元)、居民非商品支出x3(亿元)的关系。数据见表3-9。
R语言之多元线性回归xt3.11_第1张图片
(1)计算出y,x1,x2,x3的相关系数矩阵。
(2)求出y与x1,x2,x3的三元线性回归方程。
(3)对所求的方程做拟合优度检验。
(4)对回归方程做显著性检验。
(5)对每一个回归系数做显著性检验。
(6)如果有的回归系数没有通过显著性检验,将其剔除,重新建立回归方程,并做回归方程的显著性检验和回归系数的显著性检验。
(7)求出每一个回归系数的置信水平为95% 置信区间。
(8)求标准化回归方程。
(9)求当x01=75,x02=42,x03=3.1时的y0的预测值,给定置信水平为95%,用R软件计算精确置信区间,手工计算近似预测区间。
(10)结合回归方程对问题做一些基本分析。

rm(list=ls())

# ---- 3.11货运总量y与工业x1、农业总产值x2、非商品支出x3的关系 ----
#(1)计算出y,x1,x2,x3的相关系数矩阵。----
y=c(160,260,210,265,240,220,275,160,275,250)
编号=c(1:10)
x1=c(70,75,65,74,72,68,78,66,70,65)
x2=c(35,40,40,42,38,45,42,36,44,42)
x3=c(1,2.4,2,3,1.2,1.5,4,2,3.2,3)
data3.11<-data.frame(编号,y,x1,x2,x3)
data3.11
attach(data3.11) #将该数据框添加到R的搜索路径,以便于下面直接使用数据框中的数组x和y
cor3.11 <- cor(data3.11[,-1]) #用除去第一列编号数据后剩余的样本计算相关系数矩阵
cor3.11



#(2)求y关于x1,x2,x3的三元线性回归方程。----
lm3.11 <- lm(y~x1+x2+x3,data=data3.11) #建立回归方程
summary(lm3.11)
# 得到y^=-348.280+3.754x1+7.101x2+12.447x3



#(3)对所求得的方程作拟合优度检验。----
#R^2=Multiple R-squared=0.8055接近1,说明回归方程拟合度高
#或者说R=0.8974965>R0.05(8)=0.632,所以接受原假设,说明x与y有显著的线性关系
#或者说调整后的决定系数为0.708,说明回归方程对样本观测值的拟合程度较好。


#(4)对回归方程做显著性检验。(F检验)----
#提出原假设H0=β1=β2=β3=0
# F检验
summary(lm3.11)
# F=8.283>F0.05(3,6)=4.76,说明拒绝原假设H0,x与y有显著的线性关系
# 或者说P=0.01487<α=0.05,所以拒绝原假设H0,说明x与y有显著的线性关系



#(5)对每一个回归系数做显著性检验。(t检验)----
summary(lm3.11)
t1 <- 1.942
t2 <- 2.465
t3 <- 1.178
qt(1-0.05,6)  #t值~tα(n-p-1)   #t0.05(6)=1.943
# t1=1.942α=0.05,所以接受原假设,说明x1对y没有显著的影响
# t2=2.465>t0.05(8)=1.943,P2=0.0488<α=0.05,所以拒绝原假设,说明x2对y有显著的影响
# t3=1.178α=0.05,所以接受原假设,说明x3对y没有显著的影响



#(6)如果有的回归系数没有通过显著性检验,将其剔除,重新建立回归方程,再做回归方程的显著性检验和回归系数的显著性检验。----
lm3.11_drop3 <- lm(y~x1+x2,data=data3.11) #P3=0.2835最大,剔除x3,建立新的回归方程
###summary(lm3.11_drop3) #自己先简单用summary函数看新的回归方程是否符合检验,再用F跟t检验最终方程(方便点)
###此时P1=0.03676<α=0.05,P2=0.00835<α=0.05,所有的自变量在显著性水平α=0.05时都显著

# 重新建立回归方程y^=-459.624+4.676x1+8.971x2
## 对新的回归方程做显著性检验。
#提出原假设H0=β1=β2=0
summary(lm3.11_drop3)
# F=11.12>F0.05(2,7)=4.74,说明拒绝原假设H0,x与y有显著的线性关系
# 或者说P=0.006718<α=0.05,所以拒绝原假设H0,说明x与y有显著的线性关系
## 对每一个回归系数做显著性检验。
summary(lm3.11_drop3)
t1 <- 1.942
t2 <- 2.465
t3 <- 1.178
qt(1-0.05,7)  #t值~tα(n-p-1)   #t0.05(7)=1.895
# t1=2.575>t0.05(7)=1.895,P1=0.03676<α=0.05,所以拒绝原假设,说明x1对y有显著的影响
# t2=3.634>t0.05(7)=1.895,P2=0.00835<α=0.05,所以拒绝原假设,说明x2对y有显著的影响

# 得到最终回归方程y^=-459.624+4.676x1+8.971x2



#(7)求出每一个回归系数的置信水平为95% 置信区间。----
confint(lm3.11_drop3,level=0.95)
# β1置信水平为95%的置信区间(0.381,8.970)
# β2置信水平为95%的置信区间(3.134,14.808)



#(8)求标准化回归方程。----
summary(lm3.11_drop3)
sd.data3.11 <- scale(data3.11,center=TRUE,scale=TRUE) #对各列数据进行标准化
sd.lm3.11_drop3 <- lm(y~x1+x2,data=data.frame(sd.data3.11))
summary(sd.lm3.11_drop3)
# 得到标准化回归方程为y^*=0.479x1*+0.676x2*+(-7.552e-16)   #(-7.552e-16)可忽略不计



#(9)求当x01=75,x02=42,x03=3.1时的y0^,给定置信水平为95%,用R软件计算精确置信区间,手工计算近似预测区间。----
# 得到最终回归方程y^=-459.624+4.676x1+8.971x2
# 法一:使用回归方程计算出y0的预测值
y0_hat1 <- -459.624+4.676*75+8.971*42
y0_hat1 #267.858

# 法二:使用predict()函数得到y0的预测值
y0_hat2 <- predict(lm3.11_drop3,newdata=data.frame(x1=75,x2=42)) #此处必须以数据框的形式存储新点
y0_hat2 #267.829 


## 精确置信区间
y0_pred <- predict(lm3.11_drop3,newdata=data.frame(x1=75,x2=42),interval='prediction',level=0.95)
y0_pred
# 求得y0置信度为95%的精确置信区间为(204.44,331.22)


## 近似预测区间
sigma_hat <- 24.08 #由summary(lm3.11_drop3)得到σ^=Residual standard error=24.08
y0_L2 <- y0_hat2-2*sigma_hat #下限
y0_L2
y0_U2 <- y0_hat2+2*sigma_hat #上限
y0_U2
# 求得y0置信度为95%的近似预测区间为(219.67,315.99)



###给出E(y0)的置信度为95%的区间估计
y0_conf <- predict(lm3.11_drop3,newdata=data.frame(x1=75,x2=42),interval='confidence',level=0.95)
y0_conf
# 求得E(y0)置信水平为95%的区间估计为(239.97,295.69)


detach(data3.11) #与attach()相对应,将数据框从搜索路径中移除

#(10)结合回归方程对问题做一些基本分析。----
# 最终回归方程y^=-459.624+4.676x1+8.971x2
# 标准化回归方程为y^*=0.479x1*+0.676x2

#(10)结合回归方程对问题做一些基本分析。----
由回归方程y^=-459.624+4.676x1+8.971x2,可知农业总产值固定的时候,工业总产值每增加1亿元,货运总量增加4.676万吨;工业总产值固定的时候,农业总产值每增加1亿元,货运总量增加8.971万吨。而居民非商品支出对货运总量没有显著的线性影响。
由标准化回归方程y^* =0.479x1* +0.676x2* ,可知工业总产值、农业总产值与Y都是正相关关系,比较回归系数的大小可知农业总产值X2对货运总量Y的影响程度大一些。




参考课本:应用回归分析(R语言版),何晓群编著

你可能感兴趣的:(R)