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

提纲:

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

代码

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.hqwc.cn/news/640305.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双线性插值计算手动实现以及原理

双线性插值计算手动实现以及原理 代码原理 代码 先贴代码吧&#xff0c;原理其实也比较简单&#xff0c;看代码基本也就理解了&#xff0c;时间太晚了&#xff0c;原理后续再补吧。 import torch from torch.nn import functional as F import numpy as np from itertools im…

嵌入式linux学习之arm开发板移植ssh

1.下载源码 &#xff08;1&#xff09;zlib 下载网址&#xff1a;http://www.zlib.net/fossils/ 教程中版本选择的是: zlib-1.2.11.tar.gz &#xff08;2&#xff09;openssl下载网址&#xff1a;https://www.openssl.org/source/mirror.html 教程中版本选择的是: openssl-1.1…

仿真数据和实测数据的时频变换

目录 1.仿真数据2.实测数据3.地震信号数据4.语音数据 1.仿真数据 2.实测数据 3.地震信号数据 4.语音数据

嵌入式Linux开发实操(十九):Nand Flash驱动的实现

前言: nand flash从硬件连接上看,如下图,有专用接口,数据线有8或16根。 Nand Flash按每个存储单元Cell内存储比特个数不同可分为 SLC(Single-Level Cell存储1个比特)、MLC(Multi-Level Cell存储2个比特) 、 TLC(Triple-Level Cell存储3个比特)、QLC(Quad-Level C…

vue3【详解】选项式 API 实现逻辑复用

抽离逻辑代码到一个函数函数命名约定为 useXxxx格式 ( React Hooks 也是 )在 setup 中引用 useXxx 函数 演示代码&#xff1a;实时获取鼠标的坐标 逻辑封装 useMousePosition.js // 导入 ref, onMounted, onUnmounted import { ref, onMounted, onUnmounted } from "vue…

HarmonyOS开发案例:【视频播放器】

介绍 基于video、swiper和slider组件&#xff0c;实现简单的视频播放器&#xff0c;可支持海报轮播、视频播放等功能。 相关概念 [video组件]&#xff1a;视频播放组件。[swiper组件]&#xff1a;滑动容器&#xff0c;提供切换子组件显示的能力。[slider组件]&#xff1a;滑…

代码随想录算法训练营第五十九天 | 503. 下一个更大元素 II、42. 接雨水

代码随想录算法训练营第五十九天 | 503. 下一个更大元素 II、42. 接雨水 503. 下一个更大元素 II题目解法 42. 接雨水题目解法 感悟 503. 下一个更大元素 II 题目 解法 题解链接 使用两个size class Solution { public:vector<int> nextGreaterElements(vector<in…

电磁兼容(EMC):静电放电(ESD)抗扰度试验深度解读(五)

静电放电过程是一个很复杂的过程&#xff0c;下面比对人体持金属对产品放电和静电发生器对产品进行接触放电过程的详细分解说明。 1. 人持金属对产品放电过程 人对产品所产生的静电放电&#xff0c;会发生下面一系列的事件&#xff1a; 1&#xff09;当手持金属片接近产品的…

面试十八、容器适配器

容器适配器是一种特殊类型的容器&#xff0c;它们提供了一种不同于常规容器的接口和行为。容器适配器通常是建立在其他容器之上&#xff0c;通过改变接口或添加限制来满足特定的需求或解决特定的问题。 在 C 中&#xff0c;标准库提供了三种常见的容器适配器&#xff1a; 栈&am…

fastgpt、dify功能分析比较

目录 前言 一、dify、fastgpt是什么&#xff1f; 二、同场pk 1.大模型接入 2.chat&#xff08;最简应用&#xff09; 3.发布应用 4.知识库 5.workflow 6.其他 三、一些point记录 总结 前言 现在都开始AI应用开发&#xff0c;何谓AI应用&#xff0c;起码要和AI大模型…

Robbins-Monro(RM)算法【随机近似】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实践—GridWorld 第…

一招下载transformers真不用网上那些教程(我试了1*mol多次才知道)

pip很多是2 然而&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;…