加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

R语言统计分析(一元线性回归和多元线性回归)

(2015-05-08 15:23:32)
标签:

r语言

绘图

统计

回归分析

分类: 数据统计与分析

数据

表2 2003-2012某省运输业相关数据

年份

投资总额

(亿元)

从业人数

(万人)

能源投入

(万吨标准煤)

地区GDP

(亿元)

CO2排放量

(万吨)

2003年

320.1

166.37

487.82

6867.7

1216.14

2004年

373.87

180.37

509.12

8553.79

1269.24

2005年

468.35

187.29

649.93

10587.42

1620.28

2006年

568.4

188.9

673.04

12362.79

1677.89

2007年

426.06

198.65

772.28

15012.46

1925.29

2008年

389.43

204.46

802.43

18407.78

2000.46

2009年

484.44

207.7

875.72

19480.46

2183.17

2010年

661.88

213.14

1340.6

23092.36

3342.12

2011年

784.37

217.8

1288.68

26931.03

3212.68

2012年

896.8

222.77

1418.56

29599.31

3536.47

将以上excel表格进行简单处理,并保存为txt文本格式,存放在C盘的Data文件夹内。表2为2003-2012某省运输业相关数据,保存时命名为zongti.txt。代码中出现的invest,worker,energy,gdp,carbon等词语分别代表表格中的投资总额、从业人数、能源投入地区GDP、CO2排放量。 

 

一元线性回归分析

相关分析只能得出两个变量之间是否相关,但是不能回答两个变量之间存在相关关系时是如何联系的,即无法找出刻画它们之间因果关系的函数关系,回归分析就可以解决这一问题。根据表2中投资总额和地区GDP这两项数据,分别设为变量X和Y。代码如下:

 

setwd("c:\\Data\\")

zongti<-read.table(file="zongti.txt",header=TRUE)

x<-zongti$Invest

y<-zongti$GDP

lm.r<-lm(y~1+x)

summary(lm.r)

 

调用函数lm()可以非常方便求解回归方程,以下为运行的结果:

Call:

lm(formula = y ~ 1 + x)

 

Residuals:

   Min      1Q    Median    3Q     Max

-5833.7  -2645.0   358.8  1810.6  6595.9

 

Coefficients:

             Estimate Std. Error t value Pr(>|t|)  

(Intercept) -2080.606   4064.682  -0.512  0.62257  

             35.674      7.174   4.973  0.00109 **

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 4074 on 8 degrees of freedom

Multiple R-squared:  0.7556,    Adjusted R-squared:  0.725

F-statistic: 24.73 on 1 and 8 DF,  p-value: 0.00109

 

从上面输出的结果中的p值可以看出回归方程通过回归参数的检验与回归方程的检验,由此得到的一元线性回归方程为:

Y= -2080.606+35.674X

 

多元回归分析

很多实际问题中,影响响应变量的因素不止一个,因此综合需要考虑与之相关的其他变量,此类回归分析为多元回归分析。也就是说多元回归分析是对随机变量Y与n个自变量X1、X2…Xn之间存在的线性相关关系。

根据表2中投资总额、从业人数和能源投入以及地区GDP这两项数据,分别设为变量X1、X2、X3和Y。代码如下:

 

setwd("c:\\Data\\")

zongti<-read.table(file="zongti.txt",header=TRUE)

y<-zongti$GDP

 x1<-zongti$Invest

 x2<-zongti$Worker

 x3<-zongti$Energy

 B<-data.frame(y,x1,x2,x3)

 lm.r<-lm(y~x1+x2+x3)

 lm.s<-step(lm.r)

 summary(lm.s)

 

同样调用lm()函数进行的回归分析,由于考虑的变量很多,用step()函数进行变量筛选,结果如下:

 

Start:  AIC=148.59

y ~ x1 + x2 + x3

 

       Df Sum of Sq      RSS    AIC

- x1      718520 13475687 147.14

              12757167 148.59

- x3     5873190 18630357 150.38

- x2    25535839 38293006 157.58

 

Step:  AIC=147.14

y ~ x2 + x3

 

       Df Sum of Sq      RSS    AIC

              13475687 147.14

- x3    18222037 31697724 153.69

- x2    24818088 38293775 155.58

> summary(lm.s)

 

Call:

lm(formula = y ~ x2 + x3)

 

Residuals:

     Min       1Q   Median       3Q      Max

-2192.72  -757.01    60.92  1017.12  1538.74

 

Coefficients:

             Estimate Std. Error t value Pr(>|t|)  

(Intercept) -39030.90   10382.08  -3.759  0.00708 **

x2             235.96      65.72   3.591  0.00885 **

x3              10.46       3.40   3.077  0.01790 *

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Residual standard error: 1387 on 7 degrees of freedom

Multiple R-squared:  0.9752,    Adjusted R-squared:  0.9681

F-statistic: 137.6 on 2 and 7 DF,  p-value: 2.406e-06

 

若选择全部的变量构造回归方程,效果不一定好。R语言提供了获得最优回归方程的方法,逐步回归法的计算函数step(),它以Akaike信息统计量为准则(AIC)通过选择最小的AIC信息统计量,来达到删除或者增加变量的目的。也就是说它是以AIC作为评价指标来判断一个变量是否应该加入模型。

从上面运行的结果来看,如果去掉变量X1,AIC的值为147.14;如果如果去掉变量X2,AIC的值为157.58;如果去掉变量X3,AIC的值为150.38;如果选用所有的变量构造方程,AIC的值为148.59。所以可以考虑去掉变量X1

去掉变量X1后,由于用于回归方程检验的F统计量的p值和用于回归系数检验的t统计量的p值都小于0.05,因此回归方程与回归系数的检验都是显著的,最优的多元回归方程为:

Y= -39030.90+235.96X2+ 10.46X3

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有