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

R语言统计分析(一般相关分析和典型相关分析)

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

r语言

绘图

统计

相关性分析

杂谈

分类: 数据统计与分析

数据

表1 2012某省各地区运输业相关数据

地区

投资总额

(亿元)

从业人数

(万人)

能源投入

(万吨标准煤)

地区GDP

(亿元)

CO2排放量

(万吨)

A

211.64

18.13

159.97

5549.79

398.81

B

24.95

2.63

58.81

1207.05

146.61

C

115.92

3.08

82.51

2981.12

205.70

D

20.58

2.28

106.76

1495.80

266.15

E

56.83

1.46

86.66

1566.90

216.04

F

15.95

0.36

27.17

545.78

67.73

G

14.75

1.91

70.40

1619.77

175.51

H

42.68

2.24

163.26

1551.35

407.01

I

31.56

0.80

62.85

989.70

156.69

G

24.56

1.54

63.22

1716.19

157.61

K

15.86

0.85

25.22

797.12

62.87

L

94.30

0.98

26.83

1127.32

66.89

M

71.78

3.02

69.60

2340.73

173.51

N

29.56

2.34

207.87

1397.28

518.22

O

70.85

2.02

117.29

1397.32

292.40

P

32.54

2.05

100.24

1574.72

249.90

Q

19.00

2.15

81.98

1373.55

204.38

R

3.47

0.16

35.59

430.86

88.73

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

 

一般相关分析

相关关系是指两个变量的数值变化存在的不完全确定的依存关系,他们之间的数值不能用方程表示出来,但是可以用某种相关性度量来刻画。进行相关分析的代码如下:

 

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

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

x1<-diqu$Invest

x2<-diqu$Worker

x3<-diqu$Energy

y1<-diqu$GDP

y2<-diqu$Carbon

test<-data.frame(x1,x2,x3,y1,y2)

pairs(test)

cor.test(x1,y1)

cor.test(x2,y1)

cor.test(x3,y1)

cor.test(x1,y2)

cor.test(x2,y2)

cor.test(x3,y2)

 

散点图是一种最为简单和最为有效的相关性分析工具。下图是通过调用函数pairs()根据表1中的五项数据绘制的散点图。可以看出,x3和y2之间的散点图呈直线形式,这是因为能源投入和二氧化碳排放量之间存在着函数关系。

 http://s11/mw690/002TgNAHgy6S6BNXYo2da&690
以上代码调用了函数cor.test()进行了Pearson相关性检验,将运行的结果汇总至下表,如下所示:

 变量之间的相关系数及p值

相关系数

p值

 

y1

y2

 

y1

y2

x1

0.890503

0.32899

x1

7.33E-07

0.1825

x2

0.927572

0.465896

x2

3.03E-08

0.05134

x3

0.468397

1

x3

0.04993

2.2E-16

 

根据上表,发现x1 y1 、x1y2 、x2 y1 、x3 y1 和x3 y2 之间的p值小于0.05,故拒绝原假设,认为它们之间是相关的,其中x1 y1 、x2 y1和x3 y2之间的相关系数大于0.8,故认为它们之间是高度相关的。

典型相关分析

典型相关分析是利用综合变量对之间的相关关系来反映两组指标之间的整体相关性的多元统计分析方法。它的基本原理是:为了从总体上把握两组指标之间的相关关系,分别在两组变量中提取有代表性的两个综合变量U1和V1(分别为两个变量组中各变量的线性组合),利用这两个综合变量之间的相关关系来反映两组指标之间的整体相关性。

简单相关系数描述两组变量的相关关系的缺点:只是孤立考虑单个X与单个Y间的相关,没有考虑X、Y变量组内部各变量间的相关。两组间有许多简单相关系数,使问题显得复杂,难以从整体描述。典型相关是简单相关、多重相关的推广。典型相关是研究两组变量之间相关性的一种统计分析方法。也是一种降维技术。

典型相关分析的实质就是在两组随机变量中选取若干个有代表性的综合指标(变量的线性组合), 用这些指标的相关关系来表示原来的两组变量的相关关系。这在两组变量的相关性分析中, 可以起到合理的简化变量的作用; 当典型相关系数足够大时, 可以像回归分析那样, 由一组变量的数值预测另一组变量的线性组合的数值。

本文将表1中相关,数据指标分为两类,即投入要素和产出要素。投入要素用X来表示,包括各地区对运输业的固定资产投资、从业人数和资源投入三项数据;产出要素用Y表示,包括各地区的GDP和运输活动引起的CO2排放量两项数据。以下是进行典型相关分析的代码:

 

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

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

x1<-diqu$Invest

x2<-diqu$Worker

x3<-diqu$Energy

y1<-diqu$GDP

y2<-diqu$Carbon

test<-data.frame(x1,x2,x3,y1,y2)

test<- scale(test)

ca<-cancor(test[,1:3],test[,4:5])

U<-as.matrix(test[,1:3])%*% ca$xcoef  

V<-as.matrix(test[,4:5])%*% ca$ycoef

par(mfrow=c(1,2))

plot(U[,1],V[,1],xlab="U1",ylab="V1")

plot(U[,2],V[,2],xlab="U2",ylab="V2")

 

调用函数cancor()进行的典型相关分析,运行结果如下:

 

$cor

[1] 1.0000000 0.9400122

 

$xcoef

            [,1]       [,2]        [,3]

x1 -8.719192e-07 -0.1162142  0.42933726

x2  6.884274e-08 -0.1633171 -0.44571419

x3  2.425359e-01  0.1143198  0.06640856

 

$ycoef

            [,1]       [,2]

y1 -2.770303e-06 -0.2745123

y2  2.425369e-01  0.1285801

 

$xcenter

           x1            x2            x3

 1.079383e-17  2.361151e-17 -6.881070e-17

 

$ycenter

           y1            y2

 6.360653e-18 -4.915050e-17

 

运行结果中的cor为相关系数,因为cancor参数中最小的维度是2,所以这里有两个相关系数。典型相关分析的基本思想是首先找到变量X的一个线性组合,如V1=a1Y1+a2Y2…aqYq,及变量Y的一个线性组合,如U1=b1X1+b2X2++bpXp ,所以这里的xcoef和ycoef代表的就是系数a和b,称之为典型相关变量的载荷,

cancor默认参数xcenter和ycenter是对数据进行了中心化处理。

下图是根据U1、V1和  U2、V2做的数据散点图。

 

http://s4/mw690/002TgNAHgy6S6CfTBdhc3&690

 

由散点图可知第一典型相关变量分布接近一条直线;第二典型相关变量数据分布也在一条直线附近。因此,我们推断变量组X和变量组Y之间相关度很高。

 

0

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

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

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

新浪公司 版权所有