“傻瓜”学计量——核密度估计KDE

ops/2024/9/23 5:59:34/

提纲:

什么是核密度估计,是干什么的

代码

1 前言

参数估计vs非参数估计
参数估计是样本数据来自一个具有明确概率密度函数的总体。
非参数估计是样本数据的概率分布未知,这时,为了对样本数据进行建模,需要估计样本数据的概率密度函数。

核密度估计Kernel Density Estimation即是非参数估计的一种方式。即,核密度估计的目的:就是估测所给样本数据的概率密度函数。在论文中的应用就是解读演化趋势。


KDE的数学公式推导请看核密度估计(KDE)原理及实现-CSDN博客


2 核密度估计是什么

用有限的样本推断总体数据的分布,因此,核密度估计的结果即为样本的概率密度函数估计。

1.1 从直方图理解核密度估计图

核密度估计其实是对直方图的一个自然拓展。

第一,我们看密度的时候会先画直方图,用以表示样本数据的分布,帮助分析样本数据的众数、中位数等性质,横轴表示变量的取值区间,纵轴表示在该区间内数据出现的频次与区间的长度的比例。

第二,一个很自然的想法是,如果我们想知道X=x处的密度函数值,可以像直方图一样,选一个x附近的小区间,数一下在这个区间里面的点的个数,除以总个数,应该是一个比较好的估计。用数学语言来描述,如果你还记得导数的定义,密度函数可以写为:

f(x)=\lim _{h\rightarrow 0}\frac{F\left ( x+h \right )-F\left ( x-h \right )}{2h}

那么一个很自然的问题来了,h该怎么选取呢?

这也就是非参数估计里面的bias-variance tradeoff:如果h太大,用于计算的点很多,可以减小方差,但是方法本质要求h→0,bias可能会比较大;如果h太小,bais小了,但是用于计算的点太少,方差又很大。

第三,所以理论上存在一个最小化mean square error的一个h。一般我们会把h叫做「窗宽(bandwidth)

此时的概率分布图将会比较光滑,如右:

2 核密度估计KDE代码

1 
ssc install kdens

安装指令

2twoway kdensity 变量名

画出这个变量的核密度曲线

twoway是一个二维坐标

kdensity是核密度函数图

3twoway kdensity 变量名 [aw=变量名2]

考虑权重

aw

4twoway kdensity 变量名1 [aw=变量名2] if 变量名1<=300000,bw(10000)

限制横坐标最大值

300000横坐标最大值300000

bw(10000)是设置带宽10000

5twoway kdensity 变量名1 [aw=变量名2] if 变量名1<=300000,bw(10000) lp(dash)

lp(dash) 线型是虚线

dash 虚线 

solid 实线

longdash 长虚线

longdash_dot 长虚线加点

shortdash 短虚线

6twoway kdensity 变量名1 [aw=变量名2] if 变量名1<=300000,bw(10000) lp(dash) color(black)color(black) 线是黑白色
7twoway kdensity 变量名1 [aw=变量名2] if 变量名1<=300000,bw(10000) lp(dash) color(black) xlabel(0(50000)300000) ylabel(0.0(0.00001)0.00002)

设置横纵坐标

xlabel(0(50000)300000)横坐标从1~300000,间隔50000

ylabel(0.0(0.00001)0.00002)纵坐标是从0-0.00002,间隔0.00001

8twoway kdensity 变量名1 [aw=变量名2] if 变量名1<=300000,bw(10000) lp(dash) color(black) xlabel(0(50000)300000) ylabel(0.0(0.00001)0.00002) xtitle() ytitle()

设置横纵坐标名称

xtitle()

ytitle()

9twoway kdensity 变量名1 [aw=变量名2] if 变量名1<=300000,bw(10000) lp(dash) color(black) xlabel(0(50000)300000) ylabel(0.0(0.00001)0.00002) xtitle() ytitle() graphregion(fcolor(white) lcolor(white))

底色变白,否则默认底色为蓝,打印出来就是灰色的

graphregion(fcolor(white) lcolor(white))

fcolor 底色/背景色

lcolor 外框线颜色

10twoway kdensity finc_20 [aw=fswt_20] if finc_20 <= 300000, bw(10000) lp(solid) color(black) || kdensity finc_18 [aw=fswt_18] if finc_18<= 300000, bw(10000) 1p(longdash) color(black) || kdensity finc_16 [aw=fswt_16] if finc_16 <= 300000, bw(10000) 1p(longdash_dot) color(black) ||  kdensity finc_14 [aw=fswt_14] if finc_14 <= 300000, bw(10000) 1p(dash) color(black) || kdensity finc_12 [aw=fswt_12] if finc_12 <= 300000, bw(10000) lp(shortdash) color(black) || kdensity finc_10 [aw=fswt_10] if finc_10 <= 300000, bw(10000) lp(dash_dot) color(black) xlabel(0(50000)300000)ylabel(0.0(0.00001)0.00002)xtitle(家庭收入(元))ytitle(核密度)graphregion(fcolor(white)
lcolor(white))

同一个图中画多条核密度曲线

|| 隔开

11twoway kdensity finc_20 [aw=fswt_20] if finc_20 <= 300000, bw(10000) 1p(solid) color(black) || kdensity finc_18 [aw=fswt_18] if finc_18<= 300000, bw(10000) lp(longdash) color(black) || kdensity finc_16 [aw=fswt_16] if finc_16 <= 300000, bw(10000) lp(longdash_dot) color(black) || kdensity finc_14 [aw=fswt_14] if finc_14 <= 300000, bw(10000) lp(dash) color(black) || kdensity finc_12 [aw=fswt_12] if
finc_12 <= 300000, bw(10000) 1p(shortdash) color(black) || kdensity finc_10 [aw=fswt_10] if finc_10 <= 300000, bw(10000) lp(dash_dot) color(black) xlabel(0(50000)300000) ylabel(0.0(0.00001)0.00002) legend(label(1 "202@)label(2 "2018")label(3 "2016")label(4 "2014") label(5"2012")label(6"2010"))xtitle(家庭收入(元))ytitle(核密度)graphregion(fcolor(white)lcolor(white))

设置图例

legend

12

twoway kdensity finc_20 [aw=fswt_20] if finc_20 <= 300000, bw(10000) 1p(solid) color(black) || kdensity finc_18 [aw=fswt_18] if finc_18<= 300000, bw(10000) lp(longdash) color(black) || kdensity finc_16 [aw=fswt_16] if finc_16 <= 300000, bw(10000) lp(longdash_dot) color(black) || kdensity finc_14 [aw=fswt_14] if finc_14 <= 300000, bw(10000) 1p(dash) color(black) | | kdensity finc_12 [aw=fswt_12] if
finc_12 <= 300000, bw(10000) lp(shortdash) color(black) || kdensity finc_10 [aw=fswt_10] if finc_10 <= 300000, bw(10000) lp(dash_dot) color(black)

xlabel(0(50000)300000) ylabel(0.0(0.00001)0.00002) legend(label(1 "2020")label(2 "2018")label(3 "2016")label(4 "2014") label(5"2012")1abel(6"2010")row(2))xtitle(家庭收入(元))ytitle(核密度)graphregion(fcolor(white)lcolor(white))

设置图例的行数

row(2)行数为2

13graph save 保存路径,replace

保存图片

上表中的代码有些空格没有敲到,大家注意改一下


什么是核密度估计?如何感性认识? - 知乎


http://www.ppmy.cn/ops/9253.html

相关文章

【JAVA】实现只有一个窗口弹出的底层逻辑——单身模式

目录 背景说明 代码实现 手写笔记 背景说明 有的时候&#xff0c;当你点击一个选项时会弹出来多个窗口&#xff0c;而有的时候只会弹出一个。 实际上&#xff0c;弹出多个窗口就是创建了多个相同的对象&#xff0c;而只弹出一个就是我们今天即将分享的单身模式——一个类只产生…

基于SpringBoot的健身房管理系统

一.前言 本系统用了 Sping Data JPA 这一不常用的数据库框架&#xff0c;是一个值得学习研究的点。 本项目用户名&#xff1a;admin 密码: admin123 方可进入。项目源码在文章开头&#xff0c;下载到本地导入IDEA&#xff0c;修改配置文件中数据库连接信息后&#xff0c;导入项…

I fumo 星(STL,数学)

登录—专业IT笔试面试备考平台_牛客网 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 假设平面上有 nnn 颗 fumo 星&#xff0c;编号分别为 1,2,…,n1,2,\dots,n1,2,…,n。求这样的直线的数量&#xff1a;直线经过这 nnn 颗 fumo…

设计模式—门面模式

定义: 门面模式,也称为外观模式&#xff0c;是一种结构型设计模式。它的主要目的是提供统一的接口来访问子系统中的多个接口&#xff0c;从而简化客户端与复杂子系统之间的交互。 在门面模式中&#xff0c;一个门面类充当中介&#xff0c;为客户端提供一个简化了的访问方式&…

Oracle EBS Interface/API(54)- GL日记账审批

背景: 客户化创建薪酬凭证或者银企付款入账日记账以后,用户希望自动提交审批流程,无需到系统标准功能点击审批,减少用户操作。 快速参考 参考点内容功能导航N: GL->日记账->输入并发请求None基表GL.GL_JE_BATCHESAPI参考下面介绍错误信息表None接口FormNone接口Reque…

【matlab 代码的python复现】 Matlab实现的滤波器设计实现与Python 的库函数相同实现Scipy

实现一个IIR滤波器的设计 背景 Matlab 设计的滤波器通常封装过于完整,虽然在DSP中能够实现更多功能的滤波器设计但是很难实现Python端口的实现。 我们以一段原始的生物电信号EEG信号进行处理。 EEG信号 1.信号获取 EEG信号通常通过头皮电极,经过多通道采样芯片采样,将获…

Vulnhub靶机 DC-6 打靶实战 详细渗透测试过程

Vulnhub靶机 DC-6 详细渗透流程 打靶实战 目录 Vulnhub靶机 DC-6 详细渗透流程 打靶实战一、将靶机导入到虚拟机当中二、渗透测试主机发现端口扫描信息探测web渗透目录爆破爆破后台密码反弹shell搜集有价值信息SSH远程登录提权反弹jens用户权限的shell 提权利用 一、将靶机导入…

Linux学习 - 管道、标准输入输出

Linux学习 - 管道、标准输入输出 Linux下的标准输入、输出、重定向、管道 在Linux系统中&#xff0c;有4个特殊的符号&#xff0c;<, ‘>’, ‘|’, ‘-‘&#xff0c;在我们处理输入和输出时存在重要但具有迷惑性的作用。 默认Linux的命令的结果都是输出到标准输出&a…