核密度估计是用于估计随机变量概率密度函数的一种非参数方法,是一种用来观察连续型变量分布的有效方法
density()
用法
density(x, bw = "nrd0", adjust = 1,kernel = c("gaussian", "epanechnikov", "rectangular", "triangular", "biweight", "cosine", "optcosine"),weights = NULL, window = kernel, width,give.Rkern = FALSE,n = 512, from, to, cut = 3, na.rm = FALSE, ...)
- density()函数通常和plot()函数结合使用,用来画数据的密度图,如
plot(density(x))
,其中x中的实际值为横坐标,对应的密度为纵坐标,例如
par(mfrow=c(2,1))
d <- density(mtcars$mpg)
plot(d)
d <- density(mtcars$mpg)
plot(d,main="Kernel Density of Miles Per Gallon")
## polygon()根据顶点的x和y坐标,绘制多边形
polygon(d,col="red",border="blue")
## 轴须图rug plot是实际数据的一维呈现方式,数据点多的地方较粗,而jitter函数可以给数据点添加一个小的随机值,避免因太多重合数据点产生影响
rug(mtcars$mpg,col="brown")
image.png
- 如果需要向一幅已经存在的图形上叠加一条密度曲线,可以使用lines()
可比较的核密度图
使用sm包中的sm.density.compare()函数可以想图形叠加两组或者更多的核密度图,使用格式为:sm.density.compare(x,factor)
,其中x为一个数值型变量,factor为一个分组变量
## 安装sm包
install.packages("sm")
## 加载sm包
library(sm)
## 调用mtcars数据集
attach(mtcars)
## 将cyl转换为cyl.f因子
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")
## 创建颜色向量
colfill <- c(2:(1+length(levels(cyl.f))))
## 添加图例,locator(1)表示需要用鼠标在图片中单击想让图例出现的位置来放置图例
legend(locator(1),levels(cyl.f), fill=colfill)
detach(mtcars)
image.png
网友评论