🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972
个人介绍: 研一|统计学|干货分享
擅长Python、Matlab、R等主流编程软件
累计十余项国家级比赛奖项,参与研究经费10w、40w级横向
文章目录
- 1 目的
- 2 数据背景
- 3 数据基本情况
- 4 建模分析
- 4.1 最小二乘法回归
- 4.2 回归方程标准误差
- 4.3 β ^ 0 \hat\beta_0 β^0和 β ^ 1 \hat\beta_1 β^1的置信度为 95%的区间估计。
- 4.4 x x x和 y y y的决定系数
- 4.5 方差分析
- 4.6 回归系数 β 1 \beta_1 β1的显著性检验
- 4.7 相关系数的显著性检验
- 4.8 对回归分析做残差图并做相应的分析
- 4.9 预测下一周签发新保单 x 0 x_0 x0 =1000 张时需要的加班时间
- 4.10 给出 y 0 y_0 y0 的置信度为 95%的精确预测区间和近似预测区间
- 4.11 给出 E ( y 0 ) E(y_0) E(y0)的置信度为95%的区间估计
1 目的
利用最小二乘法构建一保险公司营业部每周加班时间和签发的新保单数目关系的一元线性回归模型,通过数理统计方法对回归方程及回归系数进行显著性检验和经济 学意义解释,并通过拟合结果对未知变量进行预测及置信度为 95%的区间估计
2 数据背景
一家保险公司十分担心其总公司营业部加班的程度,决定认真调查一 下现状。经过 10 周时间,收集了每周加班时间的数据和签发的新保单数目,x 为 每周签发的新保单数目,y 为每周加班时间(小时),数据见表 1。
3 数据基本情况
根据实际情况,因变量每周加班时间 y ,程序中对应变量为 overtime。 自变量为每周签发的新保单数目 x ,程序中对应变量为 np_number。,首先绘制该保险公司每周签发的新保单数和每周加班时间(小时)的散点图,见图1。
运行程序:
1. np_number<-c(825,215,1070,550,480,920,1350,325,670,1215) #读取新保单数目
2. overtime<-c(3.5,1.0,4.0,2.0,1.0,3.0,4.5,1.5,3.0,5.0) #读取加班时间
3. Com<-data.frame('新保单数目'=np_number,'加班时间'=overtime) #合并数据
4. Com #数据展示
5. plot(Com$新保单数目,Com$加班时间,xlab="新保单数目",ylab="加班时间",type="p")
6. #散点图
运行结果:
然后绘制根据数据拟合该保险公司每周签发的新保单数和每周加班时间(小时)之间的关系,判断 二者之间是否大致呈线性关系,拟合直线图见图2所示。
运行程序:
1. abline(lm(Com$加班时间~Com$新保单数目)) #拟合直线
运行结果:
通过图 2 可以看出每周加班时间和新保单数目大致呈线性关系。
4 建模分析
4.1 最小二乘法回归
设回归方程为:
y
=
β
^
0
+
β
^
1
x
y =\hat\beta_0+\hat\beta_1x
y=β^0+β^1x
求解方法:
1.lsfit 函数
运行程序:
1. lsfit(Com$新保单数目,Com$加班时间) #最小二乘法求回归方程
运行结果:
> lsfit(Com$新保单数目,Com$加班时间)
$coefficients
Intercept X
0.118129074 0.003585132
2.lm函数
运行程序:
1. fm=lm(Com$加班时间~Com$新保单数目,data=Com)
2. summary(fm)
运行结果:
> fm=lm(Com$加班时间~Com$新保单数目,data=Com)
> summary(fm)
Call:
lm(formula = Com$加班时间 ~ Com$新保单数目, data = Com)
Residuals:
Min 1Q Median 3Q Max
-0.83899 -0.33483 0.07842 0.37228 0.52594
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1181291 0.3551477 0.333 0.748
Com$新保单数目 0.0035851 0.0004214 8.509 2.79e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.48 on 8 degrees of freedom
Multiple R-squared: 0.9005, Adjusted R-squared: 0.8881
F-statistic: 72.4 on 1 and 8 DF, p-value: 2.795e-05
根据运行结果可以得到回归方程显著性情况(见表2),以及回归系数显著性(见表3)
3.公式原理法
根据公式:
β
^
1
=
∑
i
=
1
10
x
i
y
i
∑
i
=
1
10
x
i
2
−
n
x
ˉ
2
\hat\beta_1 =\frac{\sum_{i=1}^{10} x_iy_i}{\sum_{i=1}^{10} x_i^2-n\bar{x}^2}
β^1=∑i=110xi2−nxˉ2∑i=110xiyi
β ^ 0 = y ˉ − β ^ 1 x ˉ \hat\beta_0 =\bar y-\hat\beta_1 \bar x β^0=yˉ−β^1xˉ
运行程序:
1. Com1=mean(Com$新保单数目) #平均新增保单数
2. Com2=mean(Com$加班时间) #平均加班时间
3. a=(sum(np_number*overtime)-10*Com1*Com2)/(sum(np_number*np_number)-10*Com1*Com
1)
4. b=Com2-a*Com1
5. a
6. b
运行结果:
> a
[1] 0.003585132
> b
[1] 0.1181291
综上,回归方程为: y = 0.1181 + 0.036 x y=0.1181+0.036x y=0.1181+0.036x。
4.2 回归方程标准误差
求解方法:
1.由表2可以看出,回归方程标准误差 σ ^ = 0.48 \hat\sigma=0.48 σ^=0.48。
2.公式原理法:
根据
σ
^
\hat\sigma
σ^求解公式:
σ
^
2
=
1
n
−
2
∑
i
=
1
10
e
i
2
=
1
n
−
2
∑
i
=
1
10
(
y
i
−
y
i
)
2
\hat\sigma^2 =\frac{1}{n-2}\sum_{i=1}^{10}e_i^2=\frac{1}{n-2}\sum_{i=1}^{10}(y_i-y_i)^2
σ^2=n−21i=1∑10ei2=n−21i=1∑10(yi−yi)2
σ ^ = σ ^ 2 \hat\sigma=\sqrt{\hat\sigma^2} σ^=σ^2
运行程序:
1. overtime1=a*np_number+b #拟合值
2. var=sum((overtime-overtime1)^2)/(10-2) #方差
3. var
4. std=sqrt(var) #标准差
5. std
运行结果:
> var
[1] 0.2304223
> std
[1] 0.4800233
综上,回归方程标准误差 σ ^ = 0.48 \hat\sigma=0.48 σ^=0.48。
4.3 β ^ 0 \hat\beta_0 β^0和 β ^ 1 \hat\beta_1 β^1的置信度为 95%的区间估计。
求解方法:
1.confint()函数
1. confint(fm) #参数区间估计
运行结果:
> confint(fm) #参数区间估计
2.5 % 97.5 %
(Intercept) -0.700843004 0.937101152
Com$新保单数目 0.002613486 0.004556779
根据结果,可得两个参数置信度为 95%的参数区间估计(见表4)。
由表4可得 β ^ 0 ∈ [ − 0.700843004 , 0.937101152 ] \hat\beta_0\in[-0.700843004,0.937101152] β^0∈[−0.700843004,0.937101152]和 β ^ 1 ∈ [ 0.002613486 , 0.004556779 ] \hat\beta_1\in[0.002613486,0.004556779] β^1∈[0.002613486,0.004556779]。
2.公式原理法
由于
β
^
1
∼
N
(
β
1
,
σ
2
L
x
x
)
\hat\beta_1\sim N(\beta_1,\frac{\sigma^2}{L_xx})
β^1∼N(β1,Lxxσ2)
可得:
t
=
β
^
1
−
β
1
σ
^
2
/
L
x
x
=
(
β
^
1
−
β
1
)
2
L
x
x
σ
^
t=\frac{\hat\beta_1-\beta_1}{\sqrt{\hat\sigma^2/L_{xx}}}=\frac{(\hat\beta_1-\beta_1)^2\sqrt{L_{xx}}}{\hat\sigma}
t=σ^2/Lxxβ^1−β1=σ^(β^1−β1)2Lxx
服从自由度为n-2(8)的 t 分布,因而:
P
(
β
^
1
−
t
α
/
2
L
x
x
σ
^
<
β
1
<
β
^
1
+
t
α
/
2
L
x
x
σ
^
)
=
1
−
α
P(\hat\beta_1-t_{\alpha/2}\frac{L_{xx}}{\hat\sigma}<\beta_1<\hat\beta_1+t_{\alpha/2}\frac{L_{xx}}{\hat\sigma})=1-\alpha
P(β^1−tα/2σ^Lxx<β1<β^1+tα/2σ^Lxx)=1−α
即,
β
1
\beta_1
β1的置信度为|
1
−
α
1-\alpha
1−α的置信区间为:
(
β
^
1
−
t
α
/
2
L
x
x
σ
^
,
β
^
1
+
t
α
/
2
L
x
x
σ
^
)
(\hat\beta_1-t_{\alpha/2}\frac{L_{xx}}{\hat\sigma},\hat\beta_1+t_{\alpha/2}\frac{L_{xx}}{\hat\sigma})
(β^1−tα/2σ^Lxx,β^1+tα/2σ^Lxx)
其中:
t
0.05
/
2
(
8
)
=
t
0.025
(
8
)
=
2.3060
t_{0.05/2}(8)=t_{0.025}(8)=2.3060
t0.05/2(8)=t0.025(8)=2.3060
L x x = ∑ i = 1 10 x i 2 − n x ˉ 2 L_{xx}=\sum_{i=1}^{10}x_i^2-n\bar{x}^2 Lxx=i=1∑10xi2−nxˉ2
由于:
β
^
0
∼
N
(
β
0
,
(
1
n
+
x
ˉ
2
L
x
x
)
σ
2
)
\hat\beta_0\sim N(\beta_0,(\frac{1}{n}+\frac{\bar{x}^2}{L_{xx}})\sigma^2)
β^0∼N(β0,(n1+Lxxxˉ2)σ2)
可得:
t
=
β
^
0
−
β
0
(
1
n
+
x
ˉ
2
L
x
x
)
σ
^
2
=
β
^
0
−
β
0
σ
^
(
1
n
+
x
ˉ
2
L
x
x
)
t=\frac{\hat\beta_0-\beta_0}{\sqrt{(\frac{1}{n}+\frac{\bar{x}^2}{L_{xx}})\hat\sigma^2}}=\frac{\hat\beta_0-\beta_0}{\hat\sigma\sqrt{(\frac{1}{n}+\frac{\bar{x}^2}{L_{xx}})}}
t=(n1+Lxxxˉ2)σ^2β^0−β0=σ^(n1+Lxxxˉ2)β^0−β0
服从自由度为n-2(8)的t分布,因而:
P
(
β
^
0
−
β
^
0
−
β
0
σ
^
(
1
n
+
x
ˉ
2
L
x
x
)
<
β
0
<
β
^
0
+
β
^
0
−
β
0
σ
^
(
1
n
+
x
ˉ
2
L
x
x
)
)
=
1
−
α
P(\hat\beta_0-\frac{\hat\beta_0-\beta_0}{\hat\sigma\sqrt{(\frac{1}{n}+\frac{\bar{x}^2}{L_{xx}})}}<\beta_0<\hat\beta_0+\frac{\hat\beta_0-\beta_0}{\hat\sigma\sqrt{(\frac{1}{n}+\frac{\bar{x}^2}{L_{xx}})}})=1-\alpha
P(β^0−σ^(n1+Lxxxˉ2)β^0−β0<β0<β^0+σ^(n1+Lxxxˉ2)β^0−β0)=1−α
即,
β
0
\beta_0
β0的
1
−
α
1-\alpha
1−α的置信区间为:
(
β
^
0
−
β
^
0
−
β
0
σ
^
(
1
n
+
x
ˉ
2
L
x
x
)
,
β
^
0
+
β
^
0
−
β
0
σ
^
(
1
n
+
x
ˉ
2
L
x
x
)
)
(\hat\beta_0-\frac{\hat\beta_0-\beta_0}{\hat\sigma\sqrt{(\frac{1}{n}+\frac{\bar{x}^2}{L_{xx}})}},\hat\beta_0+\frac{\hat\beta_0-\beta_0}{\hat\sigma\sqrt{(\frac{1}{n}+\frac{\bar{x}^2}{L_{xx}})}})
(β^0−σ^(n1+Lxxxˉ2)β^0−β0,β^0+σ^(n1+Lxxxˉ2)β^0−β0)
其中:
t
0.05
/
2
(
8
)
=
t
0.025
(
8
)
=
2.3060
t_{0.05/2}(8)=t_{0.025}(8)=2.3060
t0.05/2(8)=t0.025(8)=2.3060
L x x = ∑ i = 1 10 x i 2 − n x ˉ 2 L_{xx}=\sum_{i=1}^{10}x_i^2-n\bar{x}^2 Lxx=i=1∑10xi2−nxˉ2
运行程序:
1. Lxx=sum(np_number^2)-10*(Com1^2) #均方离差
2. c1=a-2.3060*std/sqrt(Lxx) #常数项置信下限
3. d1=a+std/sqrt(Lxx) #常数项置信上限
4. c2=b-2.3060*std*sqrt(1/10+Com1^2/Lxx) #参数项置信上限
5. d2=b+2.3060*std*sqrt(1/10+Com1^2/Lxx) #参数项置信上限
6. c1
7. d1 8. c2
9. d2
运行结果:
> c1
[1] 0.002613487
> d1
[1] 0.004006488
> c2
[1] -0.7008415
> d2
[1] 0.9370997
综上, β ^ 0 \hat\beta_0 β^0和 β ^ 1 \hat\beta_1 β^1的置信度为95%的置信区间分别为: β ^ 0 ∈ [ − 0.701 , 0.937 ] \hat\beta_0\in[-0.701,0.937] β^0∈[−0.701,0.937]和 β ^ 1 ∈ [ 0.003 , 0.004 ] \hat\beta_1\in[0.003,0.004] β^1∈[0.003,0.004]。
4.4 x x x和 y y y的决定系数
求解方法:
1.由表2可以看出, x x x和 y y y的决定系数为: R 2 = 0.9005 R^2=0.9005 R2=0.9005
2.公式法:
R
2
=
S
S
R
S
S
T
=
∑
i
=
1
n
(
y
^
i
−
y
ˉ
)
2
∑
i
=
1
n
(
y
i
−
y
ˉ
)
2
R^2=\frac{SSR}{SST}=\frac{\sum_{i=1}^n(\hat y_i-\bar{y})^2}{\sum_{i=1}^n(y_i-\bar{y})^2}
R2=SSTSSR=∑i=1n(yi−yˉ)2∑i=1n(y^i−yˉ)2
运行程序:
1. R_squared=sum((overtime1-Com2)^2)/sum((overtime-Com2)^2)
2. R_squared
运行结果:
> R_squared
[1] 0.9004924
综上, x x x和 y y y的决定系数为 0.9005。
4.5 方差分析
求解:
运行程序:
1. anova(fm) #方差分析
运行结果:
> anova(fm) #方差分析
Analysis of Variance Table
Response: Com$加班时间
Df Sum Sq Mean Sq F value Pr(>F)
Com$新保单数目 1 16.6816 16.6816 72.396 2.795e-05 ***
Residuals 8 1.8434 0.2304
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
方差分析结果见表5所示。
结果显示:p=0.00002795<0.001,说明在 0.001 的显著性水平下签发的新保单 数 x 对每周加班 时间有显著影响。
4.6 回归系数 β 1 \beta_1 β1的显著性检验
求解方法:
1.由4.1节 中 summary()函数结果可以看出,在 0.001 的显著性水平下,回 归系数 β 1 \beta_1 β1 呈显著正相关。
2.公式原理法
根据t检验统计量:
t
=
β
^
1
σ
^
/
L
x
x
=
β
^
1
L
x
x
σ
^
t=\frac{\hat\beta_1}{\sqrt{\hat\sigma/L{xx}}}=\frac{\hat\beta_1\sqrt{L{xx}}}{\sqrt{\hat\sigma}}
t=σ^/Lxxβ^1=σ^β^1Lxx
其中:
σ
^
2
,
a
=
1
10
−
2
∑
i
−
1
10
e
i
2
=
1
10
−
2
∑
i
−
1
10
(
y
i
−
y
^
i
)
)
2
\hat\sigma^2,a=\frac{1}{10-2}\sum_{i-1}^{10}e_i^2=\frac{1}{10-2}\sum_{i-1}^{10}(y_i-\hat y_i))^2
σ^2,a=10−21i−1∑10ei2=10−21i−1∑10(yi−y^i))2
运行程序:
1. t<-a*sqrt(Lxx)/std #计算带估参数 t 值
2. p<-pt(t,8,lower.tail=FALSE) #计算 P(t>t 值)概率
3. p1<-2*p #计算 P(|t|>|t 值|),即 P 值概率
4. t
5. p
6. p1
运行结果:
> t
[1] 8.508575
> p
[1] 1.397387e-05
> p1
[1] 2.794774e-05
结果显示:回归系数 β 1 \beta_1 β1 的显著性检验 p=0.00002795<0.001,说明在 0.001 的显 著性水平下签发的新保单数 x 对每周加班时间有显著影响。
4.7 相关系数的显著性检验
求解方法:
1.cor.test 函数计算相关系数的显著性检验
运行程序:
1. tr1<-cor.test(np_number,overtime) #x与y的相关系数的显著性检验
2. tr1
运行结果:
Pearson's product-moment correlation
data: np_number and overtime
t = 8.5086, df = 8, p-value = 2.795e-05
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.7932921 0.9881624
sample estimates: cor
0.9489428
结果显示:x 与 y 的相关系数为 0.9489428,表明呈显著正相关,且 p=0.00002795<0.05,通过在 0.001 的显著性水平下的显著性检验。
2.公式法:
根据 Pearson 计算公式:
r
=
s
x
y
s
X
2
x
y
2
=
l
x
x
l
x
x
l
x
y
=
∑
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
(
∑
x
i
−
x
ˉ
)
2
∑
y
i
−
y
ˉ
)
2
r=\frac{s_{xy}}{\sqrt{s_X^2x_y^2}}=\frac{l_{xx}}{l_{xx}l_{xy}}=\frac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{(\sum x_i-\bar{x})^2\sum y_i-\bar{y})^2}}
r=sX2xy2sxy=lxxlxylxx=(∑xi−xˉ)2∑yi−yˉ)2∑(xi−xˉ)(yi−yˉ)
t检验统计量:
t
r
=
r
−
0
1
−
r
2
10
−
2
tr=\frac{r-0}{\frac{1-r^2}{10-2}}
tr=10−21−r2r−0
运行程序:
1. lxy<-function(x,y){
2. n=length(x);
3. sum(x*y)-sum(x)*sum(y)/n
4. } #建立离均差乘积和函数
5. lxy(np_number,np_number) #x 的离均差平方和
6. lxy(overtime,overtime) #y 的离均差平方和
7. lxy(np_number,overtime) #x 与 y 的离均差平方和
8. r<-lxy(np_number,overtime)/sqrt(lxy(np_number,np_number)*lxy(overtime,overtime
)) #x 与 y 的 Pearson 相关系数
9. n<-length(np_number) #向量的长度
10. tr2<-r/sqrt((1-r^2)/(n-2))
11. p<-pt(tr2,8,lower.tail=FALSE) #计算 P(t>t 值)概率
12. p1<-2*p #计算 P(|t|>|t 值|),即 P 值概率
13. r #相关系数
14. tr2 #相关系数 t 值
15. p1 #P 值
运行结果:
> r #相关系数
[1] 0.9489428
> tr2 #相关系数 t 值
[1] 8.508575
> p1 #P 值
[1] 2.794774e-05
结果表明:x 与 y 的相关系数为 0.9489428,表明呈显著正相关,且p=0.00002795<0.05,通过在 0.001 的显著性水平下的显著性检验。
4.8 对回归分析做残差图并做相应的分析
运行程序:
1. plot(fm,which=1) #绘制回归方程残差图
运行结果:
结果分析:通过回归方程残差图可以看出,几乎所有点 e=0 附近波动,且不 呈任何趋势,说明选用的线性回归模型较为合适。
4.9 预测下一周签发新保单 x 0 x_0 x0 =1000 张时需要的加班时间
求解方法:
1.Predict()函数
运行程序:
1. x<-c(825,215,1070,550,480,920,1350,325,670,1215) #读取新保单数目
2. y<-c(3.5,1.0,4.0,2.0,1.0,3.0,4.5,1.5,3.0,5.0) #读取加班时间
3. Com<-data.frame(x,y) #合并数据
4. fm=lm(y~x,data=Com) #最小二乘法求回归方程
5. x0<-data.frame(x = 1000) #输入新值 1000 并存储为数据框
6. pre0<-predict(fm,x0) #计算预测值
7. pre0 #预测值
运行结果:
> pre0
1
3.703262
2.公式法
通过回归方程公式:
y
^
=
β
1
x
+
β
0
\hat y=\beta_1x+\beta_0
y^=β1x+β0
运行程序:
1. y0 <-a*1000+b #x0=1000 时,y 预测值
2. y0
运行结果:
> y0 y0
[1] 3.703262
综上,结果显示:下一周签发新保单 x 0 x_0 x0 =1000 张时需要的加班时间 3.703 小 时。
4.10 给出 y 0 y_0 y0 的置信度为 95%的精确预测区间和近似预测区间
求解:
y
0
y_0
y0的置信水平为 0.05 的置信区间精确为:
y
^
=
±
t
0.05
/
2
(
8
−
2
)
1
+
h
00
σ
^
\hat y=±t_{0.05/2}(8-2)\sqrt{1+h_{00}}\hat\sigma
y^=±t0.05/2(8−2)1+h00σ^
其中:
h
00
=
1
10
+
(
x
0
−
x
ˉ
)
2
L
x
x
h_{00}=\frac{1}{10}+\frac{(x_0-\bar{x})^2}{L{xx}}
h00=101+Lxx(x0−xˉ)2
y
0
y_0
y0 的置信水平为 0.05 的置信区间近似为:
y
^
0
±
2
σ
^
\hat y_0±2\hat\sigma
y^0±2σ^
运行程序:
1. ypred<-predict(fm,x0,interval = "prediction",level = 0.95)
2. pre1<-pre0+2*std #计算近似置信上限
3. pre2<-pre0-2*std #计算近似置信下限 4. ypred #预测值及精确预测区间
5. pre1 #近似置信上限
6. pre2 #近似置信上限
运行结果:
> ypred #预测值及精确预测区间
fit lwr upr
1 3.703262 2.51949 4.887033
> pre1 #近似置信上限
1
4.663308
> pre2 #近似置信上限
1
2.743215
结果见表6所示。
由表 6 得知, y 0 y_0 y0的置信度为 95%精确预测区间 y 0 ∈ y_0\in y0∈(2.52,4.89) ;近似预测区间 y 0 ∈ y_0\in y0∈(2.74,4.66) 。
4.11 给出 E ( y 0 ) E(y_0) E(y0)的置信度为95%的区间估计
求解:
运行程序:
> yconf #预测值 E(y0)及精确预测区间
fit lwr upr
1 3.703262 3.283728 4.122795
运行结果:
> yconf #预测值 E(y0)及精确预测区间
fit lwr upr
1 3.703262 3.283728 4.122795
结果见表7所示:
由表 7得知, E ( y 0 ) E(y_0) E(y0) 的置信度为 95%的区间估计: E ( y 0 ) ∈ E(y_0)\in E(y0)∈ (3.28, 4.12) 。