MATLAB核密度估计 matlab核密度估计函数代码二维
bigegpt 2024-10-28 12:45 5 浏览
核密度估计
在很多统计问题中,需要由样本去估计总体的概率分布密度,常用的估计方法由参数法和非常数法。参数法是假定总体服从某种已知的分布,即密度函数的形式是已知的,需要由样本估计其中的参数,这种方法依赖于实现对总体分布的假设,而做出这种假设往往是非常困难的。非参数法则不存在这样的“假设”困难,这里介绍的就是一种非参数密度估计法--核密度估计。
核密度估计需要指定核函数和窗宽,但是取不同的核函数对核密度估计影响不大。
(1)常用的核函数
Uniform(或Box)、Triangle、Epanechnikov、Quaritic、Triweight、Gaussian、Cosinus
(2)窗宽对核密度估计的影响
窗宽会影响光滑程度,如果窗宽h去较大的值,图形较为光滑,但同时也丢失了数据所包含的一些信息;如果窗宽取值较小,则图像是不光滑的曲线,但它能反映出每个数据所包含的信息。
(4)核密度估计的MATLAB实现
MATLAB统计工具箱中提供了ksdensity函数,用来求核密度估计,其调用格式如下:
<1>[f,xi]=ksdensity(x)
求样本观测向量x的核密度估计,xi是在x取值范围内等间隔选取的100个点构成的向量,f是与xi相对应的核密度估计值向量。在在所用的核函数是Gaussian核函数,窗宽也是默认值。
<2>f=ksdensity(x,xi)
根据样本观测向量x计算xi出的核密度估计值f,xi和f是等长的向量。
<3>ksdensity(.......)
不返回任何输出,此时在当前坐标系中绘制出核密度函数图。
<4>ksdensity(ax,.......)
不返回任何输出,此时在句柄在ax对应的坐标系中绘制出核函密度函数图。
<5>[f,xi,u]=ksdensity(.......)
返回窗宽u
<6>[......]=ksdensity(.....,param1,val1,param2,val2,....)
通过可选的成对出现的参数名与参数值来控制核密度估计,可用的参数名与参数值如下表
参数名 参数值 说明
‘censoring’ 与x等长的逻辑向量 指定哪些项是截尾观测,默认是没有截尾
‘normal’ 指定用Gaussian(高斯或正态)核函数,默认情况
‘box’ 指定用Uniform核函数
‘bernel’ ‘triangle’ 指定用Triangle核函数
‘epanechnikov’ 指定用Epanechnikov核函数
函数句柄或函数名 自定义核函数
‘npoints’ 正整数 指定xi中包含的等间隔点的个数,默认100
‘unbounded’ 指定密度函数的支撑集合为全体实数集,默认情况
‘support’ ‘positive’ 指定密度函数的支撑集为正实数集
包含两个元素的向量 指定密度函数的支撑集的上下限
‘weights’ 与x等长的向量 指定x中元素的权重
‘pdf’ 指定对密度函数进行估计
‘cdf’ 指定对累积分布函数估计
’function’ ‘icdf’ 指定对逆概率分布函数估计
‘survior’ 指定对生存函数进行估计
‘cumhazard’ 指定对累积危险函数进行估计
(5)核密度估计的例子
调用ksdensity函数对总成绩数据进行密度函数估计,并通过改变窗宽和核函数类型,来观察窗宽参数对函数平滑程度的影响和观察核函数类型对估计结果的影响。
<1>总成绩数据的核密度估计
采用默认的最佳窗宽和默认的Gaussian核函数,调用ksdensity函数进行核密度估计,并将核密度估计图、频率直方图和前面章节中求出的总成绩的正态分布的密度函数图放在一起对比。
%读取文件中的第一个工作表中的总成绩数据,即G2:G52
score=xlsread('成绩.xls','G2:G52');
score=score(score>0);
%调用ecdf函数计算xc处的经验分布函数值f_ecdf
[f_ecdf,xc]=ecdf(score);
%新建图形窗口,然后绘制评论直方图,直方图对应7个小区间
figure;
ecdfhist(f_ecdf,xc,7);
hold on;
xlabel('考试成绩');
ylabel('f(x)');
%调用ksdensity函数进行核密度估计
[f_ks1,xi1,u1]=ksdensity(score);
%绘制核密度估计图,并设置线条为黑色实线,宽度为3
plot(xi1,f_ks1,'k','linewidth',3);
%计算正态分布的密度函数图
ms=mean(score); %均值
ss=std(score); %方差
%计算xi1处的正态分布密度函数值,正态分布的均值是ms,方差是ss
f_norm=normpdf(xi1,ms,ss);
%绘制正态分布密度函数图,并设置线条颜色为红色点画线,宽3
plot(xi1,f_norm,'r-.','linewidth',3);
%给图形加入标注框
legend('频率直方图','核密度估计图','正态分布密度图');
%查看默认的窗宽u1
u1
u1 =
5.0474
可以看到,在默认窗宽下,利用Gaussian核函数求出的密度曲线与N(ms,ss)分布的密度曲线非常接近,与总成绩的频率直方图附和的也很好。
<2>固定核函数为Gaussian和函数,让窗宽进行变动,观察不同的窗宽对核密度估计的影响。
%读取文件中的第一个工作表中的总成绩数据,即G2:G52
score=xlsread('成绩.xls','G2:G52');
score=score(score>0);
%设置窗宽分别为0.1,1,5,9,调用ksdensity函数进行核密度估计
[f_ks1,xi1]=ksdensity(score,'width',0.1);
[f_ks2,xi2]=ksdensity(score,'width',1);
[f_ks3,xi3]=ksdensity(score,'width',5);
[f_ks4,xi4]=ksdensity(score,'width',9);
figure;
%分别绘制不同窗对应的核密度估计图,他们对应不同的线型和颜色
plot(xi1,f_ks1,'c-.','linewidth',2);
hold on;
xlabel('考试成绩');
ylabel('核密度估计');
plot(xi2,f_ks2,'r:','linewidth',2);
plot(xi3,f_ks3,'k','linewidth',2);
plot(xi4,f_ks4,'b--','linewidth',2);
%加标注
legend('窗宽为0.1','窗宽为1','窗宽为5','窗宽为9');
由图可以发现,不同的窗宽下,核密度估计曲线形状差距比较大,对于比较小的窗宽值,核密度估计曲线比较曲折,光滑性很差,但是反映了较多的细节;对于比较大的窗宽值,核密度估计曲线比较光滑,但是掩盖了许多细节。
<3>固定窗宽为默认的最佳窗宽,让核函数变动,观察不同核函数对核密度曲线估计的影响。
%读取文件中的第一个工作表中的总成绩数据,即G2:G52
score=xlsread('成绩.xls','G2:G52');
score=score(score>0);
%设置核函数分别为Gaussian,Uniform,Triangle和Epanechnikov
%调用ksdensity函数进行核密度检验
[f_ks1,xi1]=ksdensity(score,'kernel','normal');
[f_ks2,xi2]=ksdensity(score,'kernel','box');
[f_ks3,xi3]=ksdensity(score,'kernel','triangle');
[f_ks4,xi4]=ksdensity(score,'kernel','epanechnikov');
figure;
%分布绘制不同核函数所对应的核密度估计图
plot(xi1,f_ks1,'k','linewidth',2);
hold on;
plot(xi2,f_ks2,'r:','linewidth',2);
plot(xi3,f_ks3,'b-.','linewidth',2);
plot(xi4,f_ks4,'c--','linewidth',2);
xlabel('考试成绩');
ylabel('核密度估计');
legend('Gaussian','Uniform','Triangle','Epanechnikov');
通过上图可以看出,不同的核函数对核密度估计的影响不大,就光滑性而言,Gaussian和Epanechnikov核函数对应的光滑性较好,Triangle次之,Uniform最差,在应用中,一般用Gaussian核函数。
相关推荐
- AI「自我复制」能力曝光,RepliBench警示:大模型正在学会伪造身份
-
科幻中AI自我复制失控场景,正成为现实世界严肃的研究课题。英国AISI推出RepliBench基准,分解并评估AI自主复制所需的四大核心能力。测试显示,当前AI尚不具备完全自主复制能力,但在获取资源...
- 【Python第三方库安装】介绍8种情况,这里最全看这里就够了!
-
**本图文作品主要解决CMD或pycharm终端下载安装第三方库可能出错的问题**本作品介绍了8种安装方法,这里最全的python第三方库安装教程,简单易上手,满满干货!希望大家能愉快地写代码,而不要...
- pyvips,一个神奇的 Python 库!(pythonvip视频)
-
大家好,今天为大家分享一个神奇的Python库-pyvips。在图像处理领域,高效和快速的图像处理工具对于开发者来说至关重要。pyvips是一个强大的Python库,基于libvips...
- mac 安装tesseract、pytesseract以及简单使用
-
一.tesseract-OCR的介绍1.tesseract-OCR是一个开源的OCR引擎,能识别100多种语言,专门用于对图片文字进行识别,并获取文本。但是它的缺点是对手写的识别能力比较差。2.用te...
- 实测o3/o4-mini:3分钟解决欧拉问题,OpenAI最强模型名副其实!
-
号称“OpenAI迄今为止最强模型”,o3/o4-mini真实能力究竟如何?就在发布后的几小时内,网友们的第一波实测已新鲜出炉。最强推理模型o3,即使遇上首位全职提示词工程师RileyGoodsid...
- 使用Python将图片转换为字符画并保存到文件
-
字符画(ASCIIArt)是将图片转换为由字符组成的艺术作品。利用Python,我们可以轻松实现图片转字符画的功能。本教程将带你一步步实现这个功能,并详细解释每一步的代码和实现原理。环境准备首先,你...
- 5分钟-python包管理器pip安装(python pip安装包)
-
pip是一个现代的,通用、普遍的Python包管理工具。提供了对Python包的查找、下载、安装、卸载的功能,是Python开发的基础。第一步:PC端打开网址:选择gz后缀的文件下载第二步:...
- 网络问题快速排查,你也能当好自己家的网络攻城狮
-
前面写了一篇关于网络基础和常见故障排查的,只列举了工具。没具体排查方式。这篇重点把几个常用工具的组合讲解一下。先有请今天的主角:nslookup及dig,traceroute,httping,teln...
- 终于把TCP/IP 协议讲的明明白白了,再也不怕被问三次握手了
-
文:涤生_Woo下周就开始和大家成体系的讲hadoop了,里面的每一个模块的技术细节我都会涉及到,希望大家会喜欢。当然了你也可以评论或者留言自己喜欢的技术,还是那句话,希望咱们一起进步。今天周五,讲讲...
- 记一次工控触摸屏故障的处理(工控触摸屏维修)
-
先说明一下,虽然我是自动化专业毕业,但已经很多年不从事现场一线的工控工作了。但自己在单位做的工作也牵涉到信息化与自动化的整合,所以平时也略有关注。上一周一个朋友接到一个活,一家光伏企业用于启动机组的触...
- 19、90秒快速“读懂”路由、交换命令行基础
-
命令行视图VRP分层的命令结构定义了很多命令行视图,每条命令只能在特定的视图中执行。本例介绍了常见的命令行视图。每个命令都注册在一个或多个命令视图下,用户只有先进入这个命令所在的视图,才能运行相应的命...
- 摄像头没图像的几个检查方法(摄像头没图像怎么修复)
-
背景描述:安防监控项目上,用户的摄像头运行了一段时间有部分摄像头不能进行预览,需要针对不能预览的摄像头进行排查,下面列出几个常见的排查方法。问题解决:一般情况为网络、供电、设备配置等情况。一,网络检查...
- 小谈:必需脂肪酸(必需脂肪酸主要包括)
-
必需脂肪酸是指机体生命活动必不可少,但机体自身又不能合成,必需由食物供给的多不饱和脂肪酸(PUFA)。必需脂肪酸主要包括两种,一种是ω-3系列的α-亚麻酸(18:3),一种是ω-6系列的亚油酸(18:...
- 期刊推荐:15本sci四区易发表的机械类期刊
-
虽然,Sci四区期刊相比收录在sci一区、二区、三区的期刊来说要求不是那么高,投稿起来也相对容易一些。但,sci四区所收录的期刊中每本期刊的投稿难易程度也是不一样的。为方便大家投稿,本文给大家推荐...
- be sick of 用法考察(be in lack of的用法)
-
besick表示病了,做谓语.本身是形容词,有多种意思.最通常的是:生病,恶心,呕吐,不适,晕,厌烦,无法忍受asickchild生病的孩子Hermother'sverysi...
- 一周热门
- 最近发表
-
- AI「自我复制」能力曝光,RepliBench警示:大模型正在学会伪造身份
- 【Python第三方库安装】介绍8种情况,这里最全看这里就够了!
- pyvips,一个神奇的 Python 库!(pythonvip视频)
- mac 安装tesseract、pytesseract以及简单使用
- 实测o3/o4-mini:3分钟解决欧拉问题,OpenAI最强模型名副其实!
- 使用Python将图片转换为字符画并保存到文件
- 5分钟-python包管理器pip安装(python pip安装包)
- 网络问题快速排查,你也能当好自己家的网络攻城狮
- 终于把TCP/IP 协议讲的明明白白了,再也不怕被问三次握手了
- 记一次工控触摸屏故障的处理(工控触摸屏维修)
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)