参考资料:R语言实战【第2版】
箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值、下四分位数(第25百分位数)、中位数(第50百分位数)、上四分位数(第75百分位数)以及最大值,描述了连续型变量的分布。
箱线图能够显示出可能为离群点(范围±1.5*IQR以外的值,IQR表示四分位距,即上四分位数与下四分位数的差值)的观测。
默认情况下,两条须的延伸极限不会超过盒型各端加1.5倍四分位距的范围,此范围以外的值将以点来表示。
1、使用并列箱形图进行跨组比较
箱线图可以展示单个变量或分组变量。使用格式为:
boxplot(formula,data=dataframe)
其中,formula是一个公式,dataframe代表提供数据数据框(或列表)。一个示例公式为:有~A,这将为类别型变量A的每个值并列地生成数值型变量的y的箱线图。公式y~A*B则价格为类别型变量A和B所有水平的两两组合生成数值型变量y的箱线图。
田间参数varwidth=TRUE将是箱线图的宽度与其样本大小的平方根成正比。参数horizontal=TRUE可以反转坐标轴的方向。
boxplot(mpg~cyl,data=mtcars,
main="Car Mileage Data",
xlab="Number of Cylinder",
ylab="Mile Per Gallon")
结果解读:不同组间油耗的区别非常明显。且:六缸车型的每加仑汽油行驶的英里数分布较其他两类车型更为均匀。与六缸和八缸车型相比,四缸车型的每加仑汽油行驶的英里数分布最广。
箱线图灵活多变,通过添加notch=TRUE,可以得到含有凹槽的箱线图。若两个箱的凹槽互不重叠,则表明他们的中位数有显著差异。
boxplot(mpg~cyl,data=mtcars,
notch=TRUE,
varwidth=TRUE,
col="red",
main="Car Mileage Data",
xlab="Number of Cylinders",
ylab="Miles Per Gallon")
由上图可看出四缸、六缸、八缸的油耗中位数是明显不同的,随着汽缸数的增加,每加仑汽油行驶里程约小。即随着汽缸数的减少,油耗明显降低。
# 两个交叉因子的箱线图
mtcars$cyl.f<-factor(mtcars$cyl,
levels=c(4,6,8),
labels=c("4","6","8"))
mtcars$am.f<-factor(mtcars$am,
levels=c(0,1),
labels=c("auto","standard"))
boxplot(mpg~am.f*cyl.f,
data=mtcars,
varwidth=TRUE,
col=c('gold','darkgreen'),
main="MPG Distribution by Auto Type",
xlab="Auto Type",
ylab="Miles Per Gallon")
2、小提琴图
小提琴图(violin plot)是箱线图的一个变种。小提琴图是箱线图与核密度图的结合。可以使用vioplot包中的vioplot()函数进行绘制。第一次使用之前需要安装vioplot包。
注意,vioplot()函数需要将绘制的不同组分离到不同的变量中。
install.packages("vioplot")
library(vioplot)
x1<-mtcars$mpg[mtcars$cyl==4]
x2<-mtcars$mpg[mtcars$cyl==6]
x3<-mtcars$mpg[mtcars$cyl==8]
vioplot(x1,x2,x3,
names=c("4 cyl","6 cyl","8 cyl"),
col="gold")
title("Vilon Plots of Miles Per Gallon",
xlab="Number of cylinders",
ylab="Miles Per Gallon")
小提琴图基本上是核密度图以镜像方式在箱线图上的叠加。在上图中:白点是中位数,黑色盒型的方位是下四分位数到上四分位数,细黑线表示须。外部形状即为和密度估计。