用R语言做数据分析——数据分布的图形描述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用R语言做数据分析——数据分布的图形描述
直方图
对于数据分布,常用直方图进行描述,将数据取值的范围分成若干区间(一般是等间距的),在等间距的情况下,每个区间的长度称为组距。
考察数据落入每一区间的频数与频率,在每个区间上画一个矩形,它的宽度是组距,它的高度可以是频数、频率或频率/组距,在高度是频率/组距的情况下,每一矩形的面积是数据落入区间的频率,这种直方图可以估计总体的概率密度。
在R语言总,使用hist()函数画出样本的直方图,其格式为:
其中x是由样本构成的向量,breaks规定直方图的组距,它可以是向量,即给定了直方图的起点、重点与组距;也可以是数字,即定义了直方图的组距。
freq是逻辑变量,TRUE表示绘制频率之风那个图,FALSE表示绘制密度直方图。
probability的作用与freq相反;col表示直方图中填充的颜色。
> w<>
> hist(w)
> hist(w,freq = FALSE)
核密度图
与直方图相配套的是核密度图,其目的是用已知样本,估计其密度,它的使用方法是:
其中x是由样本构成的向量,bw表示宽度,可选择。
当bw省略时,R语言会画出光滑的曲线。
在前一例子的基础上绘制出核密度估计曲线和概率密度曲线,代码如下:
> lines(density(w),col='blue')
> x<>
> lines(x,dnorm(x,mean(w),sd(w)),col='red')
经验分布图
直方图的制作适合于总体为连续型分布的场合,对于一般的总体分布,若要估计它的总体分布函数F(x),可用经验分布函数做估计,可用函数ecdf()绘制出样本的经验分布函数,其用法是:
其中,在函数ecdf()中的x是由观察值得到的数值型向量,而在函数plot()中的x是由函数ecdf()生成的向量,verticals是逻辑变量,当
为TRUE时表示画竖线,否则(FALSE缺省值)不画竖线,下面根据向量w,画出它的经验分布图和对应的正态分布图。
QQ图
不论是直方图还是经验分布图,要从比较上鉴别样本是否近似于某种类型的分布是很困难的,而QQ图可以帮助我们鉴别样本的分布是否近似于某种类型的分布。
qqnorm()函数和qqline()函数提供了画正态QQ图和相应直线的方法,其使用方法为:
其中x是第一列样本,y是第二列样本或只有此列样本。
下面绘制w的正态QQ图,并从直观上鉴别样本数据是否来自正态分布总体。
> qqnorm(w)
> qqline(w)
茎叶图
与直方图比较,茎叶图更能细致地看出数据分布结构。
R语言中使用stem()函数绘制茎叶图,其使用格式为:
stem(x,scale=1,width=2,atom=2)
其中x是数据向量,scale控制绘出茎叶图的长度,width表示宽度,atom表示容差。
>x<>
> stem(x)
2 | 5
3 |
4 | 5
5 | 045
6 | 148
7 | 25589
8 | 1344456667999
9 | 0112
10 | 0
第一个数25的十位为2,以个位为单位,将25用“|”分开。
每个数都可以这样处理。
在茎叶图中,纵轴为测定数据,横轴为数据频数,数据的十分位表示“茎”,作为纵轴的刻度;个位数作为“叶”,显示频数的个数,
作用与直方图类似。
箱线图
茎叶图是探索性数据分析所采用的重要方法,而箱线图却能更直观简洁地展现数据分布的主要特征,R语言使用boxplot()函数画箱线图。
例如,绘制出向量x的箱线图:
> boxplot(x)
在箱线图中,上下四分位数分别确定出中间箱体的顶部和底部,箱体中间的粗显示中位数所在位置,上下两条横线表示最大值、最小值,超出此范围的点称为异常值。
箱线图的第二种形式为:
其中formula是公式,如y~grp。
y是数值型向量,grps是数据的分组,通常是因子,data是数据结构。
> boxplot(count~spray,data=InsectSprays,col=2:7)
箱线图的第三种形式为:
具体参数在这里不作过多解释,详细可参考R语言的在线帮助文件。
> A<>
> B<>
> boxplot(A,B,notch = TRUE,names=c('A','B'),col=c(2,3))
五数总括
在探索性数据分析中,认为最有代表性的、最能反映数据重要特征的五个数:中位数、下四分位数、上四分位数、最小值和最大值。
这五个数称为样本数据的五数总括。
五数总括可用fivenum()函数计算,
使用格式为:
fivenum(x,na.rm=TRUE)
其中,x是样本数据,na.rm是逻辑变量,当为TRUE时,所有的NA和NAN数据将被去掉。
> x<>
> fivenum(x)
[1] 25.0 68.0 83.5 87.0 100.0。