R QQplot的demo和理解

需要的library

library("car")
library(fGarch)

正态分布样例 (Samples for 𝑁(0,1))

set.seed(0)
x <- rnorm(1000, mean = 0, sd = 1)
par(mfrow = c(1, 2), pty = "s")
qqPlot(x, main="QQ Plot")
hist(x, n = 50, freq=FALSE, main="Distribution of Residuals", border = "white", col = "steelblue")
#xfit<-seq(min(x),max(x),length=50) 
#yfit<-dnorm(xfit) 
#lines(xfit, yfit, col = 'red', lwd = 3)

正态分布qqplot可以看到上图qqplot图(左图)的点基本都躺在红色拟合线上,这种图像表明数据分布是近似正态分布。
右图为同数据生成的分布图,下同。

右偏分布样例 (Samples for right skewed distribution)

set.seed(0)
par(mfrow = c(1, 2), pty = "s")
snorm = rsnorm(1000, mean = 0, sd = 1, xi = 3)
qqPlot(snorm, main="QQ Plot")
#hist(snorm, Probability=True, main="Distribution of Residuals")
hist(snorm, n = 25, probability = TRUE, border = "white", col = "steelblue")
#xfit<-seq(min(snorm),max(snorm),length=50) 
#yfit<-dnorm(xfit) 
#lines(xfit, yfit, col = 'red', lwd = 3)

右偏分布qqplot
上图qqplot图红色拟合线的起点和终点都位于对角线(y=x)下方,或者说右方,则这种qqplot图像表示数据分布为右偏分布。

左偏分布样例(Samples for left skewed distribution)

set.seed(0)
par(mfrow = c(1, 2), pty = "s")
snorm = rsnorm(1000, mean = 0, sd = 1, xi = -3)
qqPlot(snorm, main="QQ Plot")
hist(snorm, n=50, freq=FALSE, main="Distribution of Residuals",  border = "white", col = "steelblue")
#xfit<-seq(min(snorm),max(snorm),length=50) 
#yfit<-dnorm(xfit) 
#lines(xfit, yfit, col = 'red', lwd = 3)

左偏分布qqplot
上图qqplot图红色拟合线的起点和终点都位于对角线(y=x)上方,或者说左方,则这种qqplot图像表示数据分布为左偏分布。

短尾分布样例 (Samples for shot tailed distribution)

set.seed(0)
par(mfrow = c(1, 2), pty = "s")
short = runif(1000,min=0,max=2)
qqPlot(short, main="QQ Plot")
hist(short, n=100, freq=FALSE, main="Distribution of Residuals",  border = "white", col = "steelblue")

短尾分布1

set.seed(0)
par(mfrow = c(1, 2), pty = "s")
long <- rcauchy(1000, location = 0, scale=1)
qqPlot(long, main="QQ Plot")
hist(long, n=100, freq=FALSE, main="Distribution of Residuals",  border = "white", col = "steelblue")
#xfit<-seq(min(long),max(long),length=100) 
#yfit<-dcauchy(xfit) 
#lines(xfit, yfit, col = 'red', lwd = 3)

短尾分布2
由以上2个样例可以看出, 当qqplot图的拟合线与对角线(y=x)有交叉时,且该拟合线比较接近水平或竖直时,则这种qqplot图像表明数据是分布是短尾分布。

总结

qqplot 是一种较为便捷的方法来判断数据分布是怎么样的。
那么就会有人问,直接拿hist()看分布不香吗?
我是同意上面这种想法的。
我理解qqplot核心是用来比较两组数据分布是否类似。
什么意思?
将上面的例子换个方式思考,你就会明白。
前面举的例子都是用我们创造的一组数据跟正态分布的数据进行比较。
换句话说,就是我们创造的这组数据的分布跟正态分布数据的分布是不是一样的。
如果把正态分布的数据换成其他的数据,不就成了比较A,B两组数据的分布是否是一样的了嘛~

par(mfrow = c(5, 2))
set.seed(0)

x <- rnorm(1000, mean = 0, sd = 1)
qqPlot(x, main="QQ Plot")
hist(x, n = 25, freq=FALSE, main="Distribution of Residuals", border = "white", col = "steelblue")

snorm = rsnorm(1000, mean = 0, sd = 1, xi = 3)
qqPlot(snorm, main="QQ Plot")
hist(snorm, n = 25, probability = TRUE, border = "white", col = "steelblue")

snorm = rsnorm(1000, mean = 0, sd = 1, xi = -3)
qqPlot(snorm, main="QQ Plot")
hist(snorm, n = 25, probability = TRUE, border = "white", col = "steelblue")

short = runif(1000,min=0,max=2)
qqPlot(short, main="QQ Plot")
hist(short, n=25, freq=FALSE, main="Distribution of Residuals",  border = "white", col = "steelblue")

long <- rcauchy(1000, location = 0, scale=0.5)
qqPlot(long, main="QQ Plot")
hist(long, n=100, freq=FALSE, main="Distribution of Residuals",  border = "white", col = "steelblue")

summary

写在最后

如果您有疑问或其他的思考,欢迎给我留言或评论,如果以上表述有错误的地方,也欢迎并感谢指出。

### 回答1: qqnorm是R语言中用于绘制正态分布的函数,它可以将数据的分布情况与正态分布进行比较,从而判断数据是否符合正态分布。 qqline是在qq中绘制一条直线,用于表示正态分布的理论分位数和实际数据的分位数之间的关系。如果数据符合正态分布,则这条直线应该与数据点大致重合。 qqplot是一种用于比较两个数据集分布情况的形方法,它将两个数据集的分位数进行比较,从而判断它们是否来自同一分布。如果两个数据集来自同一分布,则它们的qq应该呈现出一条直线。 ### 回答2: qqnorm、qqline和qqplot统计学中常用于检验数据是否符合某种分布假设的工具,其中qqplot即quantile-quantile plot(分位数-分位数),是最核心的工具。以下将逐一进行解释。 qqnorm是用于绘制正态分布的Q-Q的内置函数。其作用是将一组数据与正态分布进行比较。对于一个给定数据集,首先会计算出其各个观测值的标准化(以均值为中心,以标准差为单位),然后将这些标准化的值按照从小到大排序,并在上以横轴为标准正态分布的分位数(称为“理论分位数”),纵轴为标准化后的数据的值(称为“观测分位数”),将这些点进行绘制。如果这些点与一条直线大致呈现出一致性,就说明数据集的分布形态与正态分布极其接近,符合正态分布的假设。 qqline是作为qqnorm的辅助函数,用于绘制一条理论上的正态分布线,表示正态分布的期望值和标准差。在进行正态分布检验的时候,将这条直线与观测值的分布情况对比可以帮助我们更好地判断其是否符合正态分布。 最后,我们来看下最核心的qqplot,也就是分位数-分位数。它是通过比较两个数据的分布来判断它们是否呈线性关系的工具。与qqnorm和qqline不同的是,它不限于对正态分布进行检验,而是通过按序排列的观测数据和按分位数排列的理论分布之间的比较来验证在数据分布与某个假定分布相同的情况下,观察数据是否符合本来的假定分布,从而通过形来帮助我们判断数据的分布形态。如果数据符合某种假设分布,则在二维平面上的点呈现线性分布的趋势;反之,如果出现偏离情况,就可能需要针对数据的分布情况进行调整或者重新制定假设。 ### 回答3: qqnorm、qqline和qqplot是在统计学中经常用到的常规形检验工具。它们被广泛地应用于数据分析过程,用来确定数据是否符合正态分布的假设以及检查数据中的异常值。 qqplot,即量与量,其主要作用是检验某一变量是否符合正态分布。当数据符合正态分布时,qqplot呈现为一条近似地直线;反之,当数据不符合正态分布时,qqplot呈现为弯曲的曲线。因此,qqplot可以通过视觉方法判断数据分布类型,从而判断使用哪种模型对数据进行处理。 qqnorm,即标准量与正态分布,用于绘制数据的标准化结果。在数据分析中,往往会使用Z-score将变量标准化,qqnorm绘制的形代表了标准化后数据的分布情况。当一组数据完全符合正态分布时,qqnorm呈现为一条直线,且点分布在直线两侧对称位置。当数据不符合正态分布时,qqnorm呈现为弯曲曲线。 最后,qqline是用于在qqplot中绘制直线的函数。它可用于比较qqplot中的数据点与正态分布曲线的相似程度。如果点分布较为均匀且分布在直线上,说明数据分布符合正态分布,否则需要进一步检查数据。 在进行统计推断时,对数据分布的检验十分关键。利用qqnorm、qqline和qqplot可以直观有效地检查和判断数据是否符合正态分布假设,为后续的统计分析提供依据。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值