R语言箱线图小结~~

何为箱线图~通过绘制一组数据的“最大值,最小值,中位数,上四分位数及下四分位”这五个指标来显示该数据的分散情况。作用是可以识别数据中的异常值,看看数据的偏态分布。

1:以数据集mtcars中的mpg数据为例

> boxplot(mpg, main = "Box plot", ylab = "Miles per Gallon")

boxplot()函数可以画出箱线图,具体的各个值则可以通过boxpolt.stats()清楚的显示出来,其中参数coef指定了“须”的长度的极限值,默认值是1.5,表示两条须的眼神极限不会超过盒型各端加1.5倍四分位距的范围,如果被置为0,那么两条须的延长极限就会一直打到数据集中的元素的极限位置哦,图中就不会有任何离群点。

> boxplot.stats(mpg, coef = 1.5, do.conf = T, do.out = TRUE)
$stats
[1] 10.40 15.35 19.20 22.80 33.90

$n
[1] 32

$conf
[1] 17.11916 21.28084

$out
numeric(0)

另外还有其他可以获得这5个指标,与fivenum()和boxplot.stats()都是以中位数计算为基础的,summary()和quantile()。

> fivenum(mpg)
[1] 10.40 15.35 19.20 22.80 33.90
> summary(mpg)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  10.40   15.42   19.20   20.09   22.80   33.90 
> quantile(mpg)
    0%    25%    50%    75%   100% 
10.400 15.425 19.200 22.800 33.900 

2:使用并列箱线图

> boxplot(mpg~cyl, data = mtcars, main = "Car Mileage Data", xlab = "Number of Cylinders", ylab = "Miles/Gallon")

从图中可以看出不同组间友好的区别非常明显,且6缸车型的每加仑汽车行驶的英里数分布较其他两类车型更为均匀,4缸车型的每加仑汽油行驶的英里数散布最广,而且是偏正的。将参数notch设置为TRUE可以获得凹槽箱线图, 对于数值类的标签,对默认的横轴刻度标签进行替换。修改参数col可以进行着色,对两组变量可以进行区分等。

> axis(side = 1, at = c(1,2,3), labels = c("4 cylinders", "6 cylinders", "6 cylinders"))
> cyl.f <- factor(cyl,levels = c(4,6,8), labels = c("4 cyls", "6 cyls", "8 cyls"))
> am.f <- factor(am, levels = c(0,1), labels = c("auto", "std"))
> boxplot(mpg~am.f*cyl.f, data = mtcars, varwith = T, col = c("wheat", "orange"), xlab = "Types",main = "Car Mileage Data",  ylab = "Miles/Gallon", xaxt = "n", notch =T)

3.分位数和QQ

3:分位数和QQ图

0.25分位数被称为下四分位数,记 Q1,0.75分位数被称为上四分位数,记Q3。R中分布的函数名为func,形如qfunc的函数提供了相应的分位数函数。

对于连续型随机变量的分布时,我们看中的是在某个区间上的概率取值,需要用到累积分布函数。

QQ图用于直观地验证一组数据是否来自某个分布(常见的是检验数据是否来自正态分布),或者某两组数据是否来自同一个分布。

> q.dset <- seq(0.05, 0.95, by = 0.1)
> q.dset
 [1] 0.05 0.15 0.25 0.35 0.45 0.55 0.65 0.75 0.85 0.95
> q.norm <- qnorm(q.dset)
> round(q.norm,2)
 [1] -1.64 -1.04 -0.67 -0.39 -0.13  0.13  0.39  0.67  1.04  1.64
> par(mfrow = c(1,2))

> plot(q.dset~q.norm, main = "Normal Q-Q Plot(Manually)", col = "red")

> qqnorm(q.dset, main = "Normal Q-Q Plot(By R)", col = "blue")
There were 12 warnings (use warnings() to see them)
> qqline(q.dset)

两种方法自动绘制的QQ图,效果一致。

(dnorm的返回值是正态分布概率密度函数,pnorm返回值是正态分布的分布函数。函数qnorm的返回值是给定概率p后的下分位点,rnorm的返回值是n个正态分布随机数构成的向量,qqnorm的作用是生成一个正态分布的QQ图)

exp.pop <- rexp(100, rate = 1)
> par(mfrow = c(1,2))
> qqplot(exp.pop, rexp(100, rate = 1))
> qqplot(exp.pop, exp.pop)

rexp函数是指随机产生呈现为指数分布的函数,从图可以看出,两组数据是来自同一分布的,因为图中的数据点近似在一条直线上,虽然左边的不怎么完美。




猜你喜欢

转载自blog.csdn.net/xiuxiu179/article/details/80797399
今日推荐