[数理统计-逐步回归]国内旅游收入回归

数理统计小论文(一)

#摘要
近年来,中国旅游业保持了高速增长,已然成为国民经济发展的新兴增长点,对于旅游业增长势头的了解、预测变得十分重要。
本文借助R语言,通过逐步回归分析近年来国内旅游收入与多个因素的相关关系,并通过显著性检验对解释变量进行取舍,最终得到关于国内旅游收入的回归方程,借此对旅游业的发展势头进行后验性的预测。
#关键词
国内旅游,逐步回归,显著性检验,AIC;


#引言
近年来,随着国内旅游业的持续发展,旅游业作为国民经济增长新的增长点,在国民经济发展中的作用日益明显。
中国旅游业分为国内旅游和入境旅游两大市场,入境旅游外汇收入年均增长22.6%,与此同时国内旅游也迅速增长。特别是进入20世纪90年代后期,中国国内旅游业收入年均增长14.4%,远高于GDP增长率。其中1994-2003年十年间中国旅游收入及相关数据1如表所示。

年份 国内旅游收入(亿元) 国内旅游人数(万人次) 城镇居民人均旅游支出(元) 农村居民人均旅游支出(元) 公路里程(万公里) 铁路里程(万公里)
1994 1023.5 52400 414.7 54.9 111.78 5.9
1995 1375.7 62900 464 61.5 115.7 5.97
1996 1638.4 63900 534.1 70.5 118.58
1997 2112.7 64400 599.8 145.7 122.64 6.6
1998 2391.2 69450 607 197 127.85 6.64
1999 2831.9 71900 614.8 249.5 135.17 6.74
2000 3175.5 74400 678.6 226.6 140.27 6.87
2001 3522.4 78400 708.3 212.7 169.8 7.01
2002 3878.4 87800 739.7 209.1 176.52 7.19
2003 3442.3 87000 684.9 200 180.98 7.3

#方法及计算结果
在多元回归分析中,我们需要关注的点如下:

  • 误差项正态性和独立性
  • 误差项的异方差性
  • 解释变量的相关性
  • 解释变量的选择
  • 正规方程的求解
  • 模型稳定性
  • 预测和控制
    上表所示数据中,我们将国内旅游收入作为预测变量y,将其余5个变量作为解释变量,从左至右依次记为x1,x2,x3,x4,x5。

##方法
为选择合适的解释变量,在R语言采用逐步回归方法,结合相关系数,以及t、F检验验证模型的局部和总体显著性。
结合本文遇到的具体问题,我选择的方法步骤如下:
####1.分别计算5个解释变量与因变量y之间的相关系数R;

tr_data<-read.table("travel.txt",head=1);
attach(tr_data);
par(mfrow=c(2,3));
plot(x1,y,xlab="国内旅游人数",ylab="国内旅游收入");abline(lm(y~x1))
plot(x2,y,xlab="城镇居民人均旅游支出",ylab="国内旅游收入");abline(lm(y~x2))
plot(x3,y,xlab="农村居民人均旅游支出",ylab="国内旅游收入");abline(lm(y~x3))
plot(x4,y,xlab="公路里程",ylab="国内旅游收入");abline(lm(y~x4))
plot(x5,y,xlab="铁路里程",ylab="国内旅游收入");abline(lm(y~x5))
print(cor_xy<-c(cor(x1,y),cor(x2,y),cor(x3,y),cor(x4,y),cor(x5,y)))#计算解释变量与因变量y之间的相关系数

输出结果:
[1] 0.9506456 0.9776733 0.8783299 0.9162138 0.9515093
结果表明5个解释变量与因变量y之间的线性比较明显,暂时保留5个变量进行回归分析;
####2.运用逐步回归方法计算回归方程,R语言中有前向和后向两种回归方式,代码如下:

reduce.model<-step(lm,direction="backward")#后向,减少解释变量
min.model<-lm(y~1)
fwd.model<-step(min.model,direction="forward",scope=(~x1+x2+x3+x4+x5))#前向,逐步增加解释变量

得到的输出如下:
后向:

Start:  AIC=94.97
y ~ x1 + x2 + x3 + x4 + x5

       Df Sum of Sq    RSS     AIC
               40115  94.969
- x1    1     10664  50778  95.326
- x5    1     30807  70922  98.667
- x4    1     96892 137007 105.252
- x3    1    120412 160526 106.836
- x2    1    155649 195764 108.821

前向:

Start:  AIC=138.8
y ~ 1

       Df Sum of Sq     RSS    AIC
+ x2    1   8347017  385588 109.60
+ x5    1   7906238  826367 117.22
+ x1    1   7891891  840714 117.39
+ x4    1   7330565 1402040 122.51
+ x3    1   6736885 1995720 126.04
              8732605 138.80

Step:  AIC=109.6
y ~ x2

       Df Sum of Sq    RSS    AIC
+ x4    1    193717 191871 104.62
+ x1    1    153455 232132 106.53
              385588 109.60
+ x3    1     36674 348914 110.60
+ x5    1     11416 374171 111.30

Step:  AIC=104.62
y ~ x2 + x4

       Df Sum of Sq    RSS     AIC
+ x3    1    117168  74704  97.187
              191871 104.620
+ x5    1     18706 173165 105.594
+ x1    1      5562 186309 106.326

Step:  AIC=97.19
y ~ x2 + x4 + x3

       Df Sum of Sq   RSS    AIC
+ x5    1   23925.2 50778 95.326
              74704 97.187
+ x1    1    3781.7 70922 98.667

Step:  AIC=95.33
y ~ x2 + x4 + x3 + x5

       Df Sum of Sq   RSS    AIC
+ x1    1     10664 40115 94.969
              50778 95.326

Step:  AIC=94.97
y ~ x2 + x4 + x3 + x5 + x1

二者得到的结果一致,即没有去除任何解释变量。
可以得到基于AIC判别的逐步分析法得到的回归方程是

$$Y=-274.37728+0.0131X_1+5.4382X_2+3.2718X_3+12.9862X_4-563.10774X_5$$

##结果

$$Y=-2441.161+4.216X_2+3.222X_3+13.629X_4$$

为什么逐步分析法得到的方程与最终选择的回归方程不一致?请看讨论。


#讨论
在R语言中调用step()方法,得到的回归结果如下

summary(reduce.model)
Call:
lm(formula = y ~ x1 + x2 + x3 + x4 + x5)
Residuals:
      1       2       3       4       5       6       7       8       9      10 
  47.98  -38.43   55.94  -70.41 -110.14   45.56   91.39  -34.75   53.34  -40.48 
Coefficients:
              Estimate Std. Error t value Pr(>|t|)  
(Intercept) -274.37728 1316.68972  -0.208   0.8451  
x1             0.01309    0.01269   1.031   0.3607  
x2             5.43819    1.38040   3.940   0.0170 *
x3             3.27177    0.94421   3.465   0.0257 *
x4            12.98624    4.17793   3.108   0.0359 *
x5          -563.10774  321.28299  -1.753   0.1545  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 100.1 on 4 degrees of freedom
Multiple R-squared:  0.9954,	Adjusted R-squared:  0.9897 
F-statistic: 173.4 on 5 and 4 DF,  p-value: 9.19e-05

只用逐步回归法得到的方程为:

$$Y=-274.37728+0.0131X_1+5.4382X_2+3.2718X_3+12.9862X_4-563.10774X_5$$

该结果表明系统总体显著性明显,但R语言中的逐步回归算法依靠的原理是AIC
即选择使AIC最小的解释变量进行回归。以前向逐步回归为例:当计算y~1时(此时不选择任何解释变量)AIC=138.8;当加入一个解释变量时,AIC减少,其中对x2进行回归时AIC减少的最明显,因此将x2作为解释变量继续回归,取使得AIC减少最明显的一个变量加入解释变量,直到不加入解释变量(none情况)时AIC的值小于加入任何剩余变量,结束回归,得到的解释变量为之前已经加入的解释变量。
但由于模型误差并不严格满足正态分布,因此AIC可能是不全面的。
根据截距项(intercept)、x1、x5的t检验可以看到,三者的显著性并不明显;同时,截距项的不明显可能是由于解释变量之间相关性导致的;结合基于AIC逐步回归法的过程数据,我们看到x1,x5与y之间的相关性较差, 可以求得x1,x5与其余三个解释变量之间的相关系数:

c(cor(x1,x2),cor(x1,x3),cor(x4,x5));

结果得到
[1] 0.9188508 0.7519599 0.8977083
表明x1,x5与其余变量间的相关性是比较明显的,因此我们可以试着去掉x1,x5只对其余三个解释变量进行回归。

lm2=lm(y~x2+x3+x4)
lm2.summary=summary(lm2)
lm2.summary

结果如下:

Call:
lm(formula = y ~ x2 + x3 + x4)

Residuals:
    Min      1Q  Median      3Q     Max 
-115.74  -83.44    0.28   72.99  121.55 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -2441.161    296.039  -8.246 0.000172 ***
x2              4.216      1.069   3.945 0.007581 ** 
x3              3.222      1.050   3.068 0.022008 *  
x4             13.629      2.904   4.693 0.003351 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 111.6 on 6 degrees of freedom
Multiple R-squared:  0.9914,	Adjusted R-squared:  0.9872 
F-statistic: 231.8 on 3 and 6 DF,  p-value: 1.365e-06

可以看到,截距项的显著性的到了提高,所以选择该方法得到的方程:

$$Y=-2441.161+4.216X_2+3.222X_3+13.629X_4$$

#参考文献
1.中国统计年鉴:http://www.stats.gov.cn/tjsj/ndsj/;
2.《应用数理统计》(试用版):孙海燕,周梦,李卫国,冯伟;北京航空航天大学出版社;
3.《R语言经典实例》Paul Teetor,O’REILLY,机械工业出版社;
4.《R数据分析——方法与案例详解》方匡南,朱建平,姜叶飞 编著;

你可能感兴趣的:(数理统计-R语言,r语言)