当前位置:   article > 正文

R语言核密度图_r语言和核密度图

r语言和核密度图

核密度图

给定一个数据集,需要观察这些样本的分布情况,往往我们会采用直方图的方法来进行直观的展现。该方法简单,容易计算,但是直方图存在着如下的两大问题:

  • 绘制直方图时,需要确定分组问题,如果分组不同,那么最后的直方图会产生很大的差别。
  • 直方图展示的分布曲线并不平滑,即在一个分组中的样本具有相等的概率密度。

针对直方图的问题,这里提到了核密度图。核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen (1962)提出,又名Parzen窗(Parzen window)。Ruppert和Cline基于数据集密度函数聚类算法提出修订的核密度估计方法。

核密度估计的思想原理并不是那么复杂,在我们对每一事物的出现概率进行分析时,如果现实中出现了某个数字,则会认为该数字出现的概率比较大,和这个数比较近的数的概率密度也会比较大,而那些离这个数远的数的概率密度会比较小。基于这种想法,针对观察中的第一个数,我们都可以f(x-xi)去拟合我们想象中的那个远小近大概率密度,当然也可以使用其他的方式,但是思类似。

在R语言中,核密度图可以单独绘制也可以绘制在其他图形中。

#直接绘制核密度图
plot(density(mtcars$mpg))
polygon(density(mtcars$mpg),col = "red") #填充为红色

hist(mtcars$mpg,freq=FALSE) #必须设置freq参数为显示频率
lines(density(mtcars$mpg)) #在已有图形上加核密度图
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

核密度函数的一个重要功能是可以比较不同数据之间的差异性,需要安装sm包,即可以比较。

library(sm)
attach(mtcars)
cyl.f <- factor(cyl, levels= c(4,6,8),  #创建分组因子
                labels = c("4 cylinder", "6 cylinder",
                "8 cylinder"))
sm.density.compare(mpg, cyl, xlab="Miles Per Gallon")
title(main="MPG Distribution by Car Cylinders")
detach(mtcars)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号