描述统计学之R语言实战2:图形法

上篇《描述统计学之R语言实战1:表格法》主要介绍了如何用R语言实现单变量数据、两个变量数据的表格统计法,本篇将介绍如何使用R语言对单变量数据、两个变量数据进行图形化显示。

单变量的数据统计

条形图饼图是用来描述已汇总的分类型数据的频数分布、相对频数分布或百分数频数分布的图形方法。

1.在R中导入“50次购买软饮料的样本数据”。

> library(xlsx)
> drink<-read.xlsx('/Users/liuqin/Documents/50次购买软饮料的样本数据.xlsx',1)
> head(drink)
  购买记录 饮料类别
1        1 可口可乐
2        2 健怡可乐
3        3 百事可乐
4        4 健怡可乐
5        5 可口可乐
6        6 可口可乐

2.table()函数汇总各类别饮料后,用barplot()函数绘制购买饮料的条形图,条形图可直观的看到各类别饮料受欢迎程度。

> counts<-with(drink,table(饮料类别))
> counts
饮料类别
百事可乐 胡椒博士 健怡可乐 可口可乐     雪碧 
      13        5        8       19        5 
> barplot(counts,main='购买软饮料的条形图',cex.names=0.8,
xlab='软饮料',ylab='频数',family='STKaiti',col='cadetblue1')

3.也可用pie()函数绘制饼图,每一个扇形部分的数值可以是频数、相对频数或百分数频数。一般饼形图不是呈现对比的最佳途径,相对于面积,人们对长度的判断更精确,所以更推荐使用条形图。

> lbls<-paste(names(counts),'\n',counts,sep='')
> pie(counts,labels=lbls,main='购买软饮料的饼图',family='STKaiti')

打点图直方图是常用的数量型数据的图形汇总方法。

1.在R中导入“年末审计时间的样本数据”。

> time<-read.xlsx('/Users/liuqin/Documents/年末审计时间样本数据.xlsx',1)
> head(time)
  客户 年末审计时间.单位.天.
1    1                    12
2    2                    15
3    3                    20
4    4                    22
5    5                    14
6    6                    14

2.使用dotchart()函数创建散点图,横轴是数据的值域,每一个数据值由横轴上的点表示,3个点位于横轴刻度18之上,表明有3次审计时间为18天。散点图能够显示数据的细节,且有利于比较两个或更多变量的数据分布。

> dotchart(time$年末审计时间.单位.天.,cex=0.8,main='审计时间数据的打点图',
xlab='审计时间(天数)',color='darkgreen',pch=19,family='STKaiti')


3.也可使用hist()函数创建直方图,与条形图不同,直方图中邻近的长方形是相互连接的,且直观的提供了数据分布形态的信息。

> hist(time$年末审计时间.单位.天.,col='bisque',xlab='审计时间(天)',
ylab='频数',main='审计时间数据的直方图',family='STKaiti')

两个变量的数据统计

散点图是对两个数量变量间关系的图形表述,趋势图是显示两个变量相关性近似程度的一条直线。

1.在R中导入“音像设备商店的样本数据”。

> data<-read.xlsx('/Users/liuqin/Documents/音像设备商店的样本数据.xlsx',1)
> head(data)
  周 广告次数x 销售额y.100美元.
1  1         2               50
2  2         5               57
3  3         1               41
4  4         3               54
5  5         4               54
6  6         1               38

2.plot()函数可绘制样本数据的散点图,广告次数(x)显示在横轴上,销售额(y)显示在纵轴上,散点图表明,广告次数和销售额之间存在正相关性。abline()函数用来添加最佳拟合的线性直线,所有点不在一条直线上,所以不完全是线性关系,其整体关系是正相关的。

> attach(data)
> plot(广告次数x,销售额y.100美元.,main='音像设备商店的散点图和趋势图',
xlab='广告次数',ylab='销售额(100美元)',pch=19,family='STKaiti')
> abline(lm(销售额y.100美元.~广告次数x),col='red',lwd=2,lty=1)

复合条形图结构条形图(堆积条形图)是比较两个及两个以上变量的图形显示方式。

1.在R中导入“100家洛杉矶饭店的质量等级和餐价样本数据”。

> mydata<-read.xlsx('/Users/liuqin/Documents/100家洛杉矶饭店的质量等级和餐价样本数据.xlsx',1)
> head(mydata)
  饭店 质量等级 餐价.美元.
1    1       好         18
2    2       好         22
3    3       好         28
4    4     很好         38
5    5     很好         33
6    6       好         28

2.餐价是一个数量变量,因此需要现将餐价数据分为4个组,然后使用barplot()函数绘制饭店数据的复合条形图,如图所示,随着餐价的增加,“好”的长方形高度在减少,而“优秀”的长方形高度在增加,这表明随着价格的增加,质量等级趋向于更好。

> 餐价<- c("10~19", "20~29", "30~39", "40~49")
> breaks <- c(10,19,29,39,49)
> 餐价<- cut(mydata$餐价.美元., breaks = breaks, labels = 餐价, right = TRUE )
> mytable<-xtabs(~mydata$质量等级+餐价,data=mydata)
> mytable
               餐价
mydata$质量等级 10~19 20~29 30~39 40~49
           好       13     14      1      0
           很好      9     22     17      2
           优秀      1      4      9      8
> par(family='STXihei')
> barplot(mytable,main='质量等级和餐价数据的复合条形图',xlab='餐价($)',
ylab='频数',col=c('red','yellow','green'),legend.text=c("好",'很好','优秀'),
beside=TRUE)


4.将barplot()函数中的参数beside=TRUE去掉,得到堆积条形图,与饼图类似可显示每一组餐价中各质量等级饭店的频数分布。

> par(family='STXihei')
> barplot(mytable,main='质量等级和餐价数据的堆积条形图',xlab='餐价($)',
ylab='频数',col=c('red','yellow','green'),legend.text=c("好",'很好','优秀'))

总结如何选择合适的图形

用于展示数据分布的图形显示:

  • 条形图:用于展示分类型数据的频数分布和相对频数分布
  • 饼形图:用于展示分类型数据的相对频数分布和百分数频数分布
  • 打点图:用于展示数值型数据在整个数据范围内的分布
  • 直方图:用于展示数值型数据在一个区间组集合上的频数分布

用于进行比较的图形显示:

  • 复合条形图:用于两个变量的比较
  • 结构条形图(堆积条形图):用于比较两个分类变量的相对频数和百分数频数

用于展示相关关系的图形显示:

  • 散点图:用于展示两个数量变量的相关关系
  • 趋势图:用于近似散点图中数据的相关关系

你可能感兴趣的:(描述统计学之R语言实战2:图形法)