matlab核密度,核密度图的绘制
原标题:核密度图的绘制
我们先看⼀下别⼈家⽂章中的核密度图。
那么,怎么做出这样的图呢?这种核密度图到底想表达或表现什么呢?
核密度图的绘制
所谓“眼过千遍不如⼿过⼀遍”,数据我们这⾥⽤Wikipedia⽂中的这6个数: −2.1, −1.3,−0.4,1.9,5.1,6.2。我们⽤ggplot2绘制这6个数的核密度图(两种⽅法,代码对应下图的p1和p2)、直⽅图和密度图的组合⽐较(下图p3),与其“镜像翻转”数列“相加”后新数列的密度图(下图p4,橙⾊)。代码如下:
> library("ggplot2", lib.loc="~/R/win-library/3.4")
> x
> x
[1] -2.1 -1.3 -0.4 1.9 5.1 6.2
# 载⼊数据
> p
> p1
> p1
# 第⼀种画法,利⽤geom_density()画的核密度图,“⾯积”可填充颜⾊(见下图,p1)。这⾥的adjust⽤来调整bw(带宽),数值为默认值的倍数。这⾥geom_density()默认的核函数为Gaussian,关于带宽的解释见下⽂。
> p2
> p2
# 第⼆种画法,⽅法相类似,最后的结果与p1⼀致,只是不能填充颜⾊(下图p2)。
> p3
+geom_line(stat ="density",adjust=0.55,color="red",size=1)+xlim(-5,10)
> p3
# 同样的数据,⽤geom_histogram()画直⽅图作⽐较,某种意义上可为bw的调整做参考。
> m
> z
> n
> data
> data
m n
1 1 -8.3
2 1 -6.4
3 1 -2.3
4 1 2.3
5 1 6.4
6 1 8.3
7 2 -2.1
8 2 -1.3
9 2 -0.4
10 2 1.9
11 2 5.1
12 2 6.2
> p1
> w1
> p4
# 将x这列数据乘以负1,从顺序颠倒后与x相加,⽣成z,z和x组成数据框,绘制分组核密度图,见p4。本⽂对图表主题,⽂字不做调整,调整⽅法见上⼀篇⽂章《ggplot2绘图学习笔记分享》,这⾥不再赘述。
matlab直方图KDE 简介
核密度估计(kernel density estimation,KDE)是根据已知的⼀列数据(x1,x2,…xn)估计其密度函数的过程,即寻这些数的概率分布曲线。我们最常见的密度函数莫过于正态分布(也称⾼斯分布)的密度函数:
⽽密度估计就是给定⼀列数据,分布未知的情况下估计其密度函数。
例如上⽂的6个数据:c(x1 = −2.1,x2 = −1.3, x3 = −0.4, x4 = 1.9, x5 = 5.1, x6= 6.2),我们看下这列数据的“密度”如何。
画频率直⽅图就是⼀种密度估计的⽅法(如下图,组距为2),这⾥的“密度”(density)可以感性得理解为⼀个区间(直⽅图的组距)内数据数量的多少,右图即为这6个数据的密度曲线(这⾥简称为密度图),它是左图的外轮廓化,数据量越多,直⽅图的顶点也越接近⼀条线。
⽰,“峰”越⾼,表⽰此处数据越“密集”。“密度”越⾼,如下图。
“核”与“带宽”
核密度估计是⽤⽤下⾯的函数去估计⼀个分部未知的独⽴样本的分布:
其中K,也就是“核”(kernel)表⽰核函数,部分常见的核函数如下图(看到Gaussian的函数是不是觉得很眼熟?另为,R中的kernel
有"gaussian","epanechnikov","rectangular","triangular","biweight","cosine","optcosine")。
公式⾥的“h”,被称为“带宽” (bandwidth,也写作bw),为平滑参数,可简单理解为直⽅图的“组距”,带宽越⼤曲线越平滑,见下图。
⼩结

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。