R可视化之美之科研绘图-24.QQ图/PP图
本内容为【科研私家菜】R可视化之美之科研绘图系列课程
快来收藏关注【科研私家菜】
关于统计分布的检验方法有很多种,例如K-S检验、卡方检验等,从图形的角度来说,我们也可以使用Q-Q图或P-P图来检查数据是否服从某种分布。P-P图(或Q-Q图)可检验的分布包括:贝塔分布 ( beta distribution )、t分布 ( t-distribution )、卡方分布(chi-square )、伽马分布(gammadistribution )、正态分布(normal distribution)、均匀分布( uniform distribution )、帕累托分布( Paretodistribution)、逻辑斯谛分布( logistic distribution)等。
01 QQ图(Quantile-Quantile plot)
Q-Q图(Quantile-Quantile plot)是一种通过画出分位数来比较两个概率分布的图形方法。首先选定区间长度,点(x,y)对应于第一个分布(X轴)的分位数和第二个分布(Y轴)相同的分位数。因此画出的是一条含参数的曲线,参数为区间个数。对应于正态分布的Q-Q图,就是以标准正态分布的分位数为横坐标、样本值为纵坐标的散点图。要利用Q-Q图鉴别样本数据是否近似于正态分布,只需看Q-Q图上的点是否近似地在一条直线附近,而且该直线的斜率为标准差,截距为均值。
Q-Q图的用途不仅在于检查数据是否服从某种特定理论分布,它也可以推广到检查数据是否来自某个位置参数分布族。如果被比较的两个分布比较相似,则其Q-Q图近似地位于y =x上。如果两个分布线性相关,则Q-Q图上的点近似地落在一条直线上,但并不一定是y =x这条线。Q-Q图可以比较概率分布的形状,从图形上显示两个分布的位置、尺度和偏度等性质是否相似或不同。一般来说,当比较两组样本时,Q-Q图是一种比直方图更加有效的方法,但是理解Q-Q图则需要更多的背景知识。
set.seed(183)
x <- rnorm(250 , mean=10 , sd=1)
# # Compare the numbers sampled with rnorm() against normal distribution
qqnorm(x)
qqline(x)
abline(h = c(7:13)*1/2,col = "gray100",lty =1) # boe cpi target
abline(v = c(-3:3)*1/2,col = "gray100", lty = 1) # 2 year line
abline(h = c(7:13)*1,col = "gray100",lty =1) # boe cpi target
abline(v = c(-3:3),col = "gray100", lty = 1) # 2 year line
box(col="white")
效果如下:
02 PP图( Probability-Probability plot或 Percent-Percent plot )
·P-P图( Probability-Probability plot或 Percent-Percent plot )是根据变量的累积比例与指定分布的累积比例之间的关系所绘制的图形。通过P-P图可以检验数据是否符合指定的分布。当数据符合指定分布时,P-P图中各点近似地呈一条直线。如果P-P图中各点不呈直线,但有一定规律,则可以对变量数据进行转换,使转换后的数据更接近指定分布。P-P图和Q-Q图的用途完全相同,只是检验方法存在差异。
library(CircStats)
pp.plot(x)
abline(h = c(0:10)*1/10,col = "gray100",lty =1) # boe cpi target
abline(v = c(0:10)*1/10,col = "gray100", lty = 1) # 2 year line
abline(h = c(0:10)*2/10,col = "gray100",lty =1) # boe cpi target
abline(v = c(0:10)*2/10,col = "gray100", lty = 1) # 2 year line
box(col="white")
效果如下:
03 QQ图的其它画法
ggplot
library(ggplot2)
df <-data.frame(x=rnorm(250 , mean=10 , sd=1))
ggplot(df, aes(sample = x))+
geom_qq()
#geom_qq_line(fill = "#00AFBB",size=3)
效果如下:
3.2 ggpubr
library(ggpubr)
x <- rnorm(250 , mean=10 , sd=1)
ggqqplot(x,shape=21,fill="white",colour="black",
add = "none",
ggtheme = ggplot2::theme_grey())
效果如下:
参考资料
《R语言数据可视化之美》
关注R小盐,关注科研私家菜(溦❤工众號: SciPrivate),有问题请联系R小盐。让我们一起来学习 R可视化之美之科研绘图