matlab中表示拉普拉斯分布_分布拟合——正态/拉普拉斯/对数高斯/瑞利 分布_weixin_39949506的博客-程序员秘密

技术标签: matlab中表示拉普拉斯分布  

作者:桂。

时间:2017-03-16  20:30:20

声明:欢迎被转载,记得注明出处~

前言

本文为曲线与分布拟合的一部分,主要介绍正态分布、拉普拉斯分布等常用分布拟合的理论推导以及代码实现。

一、理论推导

假设数据独立同分布。对于任意数据点$x_i$,对应概率密度为$f(x_i)$,最大似然函数:

$J = \mathop \prod \limits_{i = 1}^N f({x_i})$

表示成参数,并写成对数形式:

$L\left( \theta  \right) = \ln J\left( \theta  \right) = \sum\limits_{i = 1}^N {f({x_i};\theta )} $

A-正态分布

对于正态分布:

$f(x) = \frac{1}{ {\sqrt {2\pi } \sigma }}{e^{ - \frac{ { { {(x - \mu )}^2}}}{ {2{\sigma ^2}}}}}$

求偏导得参数估计:

$\hat \mu  = \frac{ {\sum\limits_{i = 1}^N { {x_i}} }}{N}$

${\hat \sigma ^2} = \frac{ {\sum\limits_{i = 1}^N { { {\left( { {x_i} - \mu } \right)}^2}} }}{N} = \frac{ { { {\left( { {\bf{x}} - \mu } \right)}^T}\left( { {\bf{x}} - \mu } \right)}}{N}$

B-拉普拉斯分布

对于拉普拉斯分布:

$f(x) = \frac{1}{ {2b}}{e^{ - \frac{ {\left| {x - \mu } \right|}}{b}}}$

由于其概率密度曲线为对称分布,因此均值估计可用统计均值直接表示:

$\hat \mu  = \frac{ {\sum\limits_{i = 1}^N { {x_i}} }}{N}$

最大似然函数求偏导,得出$b$的估计:

$\hat b = \frac{ {\sum\limits_{i = 1}^N {\left| { {x_i} - \mu } \right|} }}{N}$

C-对数正态分布

对数正态分布:

$f(x) = \frac{1}{ {x\sqrt {2\pi } \sigma }}{e^{ - \frac{ { { {(\ln x - \mu )}^2}}}{ {2{\sigma ^2}}}}}$

事实上,令$t = lnx$,则参数求解与正态分布完全一致。

$\hat \mu  = \frac{ {\sum\limits_{i = 1}^N { {t_i}} }}{N}$

${\hat \sigma ^2} = \frac{ {\sum\limits_{i = 1}^N { { {\left( { {t_i} - \mu } \right)}^2}} }}{N} = \frac{ { { {\left( { {\bf{t}} - \mu } \right)}^T}\left( { {\bf{t}} - \mu } \right)}}{N}$

D-瑞利分布

瑞利分布:

$f(x) = \frac{x}{ { {\sigma ^2}}}{e^{ - \frac{ { {x^2}}}{ {2{\sigma ^2}}}}}$

最大似然求导,得出参数估计:

${\hat \sigma ^2} = \frac{ {\sum\limits_{i = 1}^N {x_i^2} }}{ {2N}}$

二、代码实现

A-正态分布

x = x(:); % should be column vectors !

N = length(x);

u = sum(x)/N;

sig2 = (x-u)'*(x-u)/N;

B-拉普拉斯分布

x = x(:); % should be column vectors !

N = length(x);

u = sum( x )/N;

b = sum(abs(x-u))/N;

C-对数正态分布

t = log(x(:)); % should be column vectors !

N = length(x);

m = sum( t )/N;

sig2 = (t-m)'*(t-m)/N;

D-瑞利分布

x = real(x(:)); % should be column vectors !

N = length(x);

s = sum(x.^2)/(2*N);

三、应用举例

以正态分布为例:

rng('default') % for reproducibility

x = 3*randn(100000,1)-2;

%fitting

x = x(:); % should be column vectors !

N = length(x);

u = sum(x)/N;

sig2 = (x-u)'*(x-u)/N;

%Plot

figure;

%Bar

subplot 311

numter = [-15:.2:10];

[histFreq, histXout] = hist(x, numter);

binWidth = histXout(2)-histXout(1);

bar(histXout, histFreq/binWidth/sum(histFreq)); hold on;grid on;

%Fitting plot

subplot 312

y = 1/sqrt(2*pi*sig2)*exp(-(numter-u).^2/2/sig2);

plot(numter,y,'r','linewidth',2);grid on;

%Fitting result

subplot 313

bar(histXout, histFreq/binWidth/sum(histFreq)); hold on;grid on;

plot(numter,y,'r','linewidth',2);

结果图:

单个分布以本文为例。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39949506/article/details/111757216

智能推荐

camera 高动态范围(High-Dynamic Range,简称HDR)_camera的动态范围_angle_birds的博客-程序员秘密

高动态范围图像(High-Dynamic Range,简称HDR),相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range)图像,利用每个曝光时间相对应最佳细节的LDR图像来合成合成最终HDR图像[1],能够更好的反映人真实环境中的视觉效果。HDRI是High-Dynamic Range (HDR)image的缩写,也就是高动态

使用PE镜像修改VMware中Windows镜像的方法_vmware替换原本的镜像系统_邪三一的博客-程序员秘密

前言有没有遇到忘记VMware中Windows镜像密码的情况?有没有遇到Vmware中Windows启动项损坏的情况?有没有想在VMware中测试pe的工具?。。。这些情况都可以通过使用PE镜像修改VMware中Windows镜像的方法去解决。修改VMware的BIOS延迟时长找到对应的.vmx文件,添加下面一行配置即可。bios.bootDelay = “5000”修改VMware启动设置找到虚拟机–>点击设置–>找到CD/DVD(IDE)选项–>勾选启动时连接–

golang进阶(三)——后台进程的启动和停止_吴冬冬的博客-程序员秘密

+++ title=”golang进阶(三)——后台进程的启动和停止” date=”2017-10-12” tags=[“golang”,”cobra”] categories=[“资源管理”] description=”不想再像java或者其他语言那样为了操作后台程序写各种脚本的话,这篇文章值得你一看” featured=true image=”img/201710/fengjing

C#中用HttpWebRequest/HttpWebResponse来发送/接收数据_weixin_34013044的博客-程序员秘密

//获取方法httPost请求URL发送过来的数据public ActionResult ToUrl() { string result = ""; string jsonStr = "", line; try { Stream st...

linux下安装opencv_linux中pip安装opencv_qq_42527685的博客-程序员秘密

到http://www.opencv.org.cn/下载opencv似乎opencv的新版本下载很快,旧版本根本下载不了,可能因为被墙下载的如果是zip文件cd 到压缩包所在目录 unzip XXX—解压到当前文件夹unzip XXX -d PATH用pip装opencv我们的pip版本过低升级:打开终端输入python -m pip install --upgrade pip...

python日历小程序_python小程序-日历查询器|python基础教程|python入门|python教程_weixin_39641334的博客-程序员秘密

程序目的:输入年份和月份,查询当月的日历。弄着玩。程序界面:代码如下:# coding:utf8from tkinter import *from calendar import *from time import *class APP:def __init__(self, master):frame = Frame(master)frame.pack()l1 = Label(frame, tex...

随便推点

ArrayList,HashMap,LinkedList 初始化大小和 扩容机制_weixin_33755847的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

Python标准模块--asyncio_weixin_34362991的博客-程序员秘密

1 模块简介asyncio模块作为一个临时的库,在Python 3.4版本中加入。这意味着,asyncio模块可能做不到向后兼容甚至在后续的Python版本中被删除。根据Python官方文档,asyncio通过coroutines、sockets和其它资源上的多路复用IO访问、运行网络客户端和服务端以及其它相关的原始服务等提供了一种单线程并发应用的架构。本文并不能覆盖所有关于...

elasticsearch忽略大小写搜索_weixin_33898876的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

成绩查询小项目笔记_小胖儿emmm的博客-程序员秘密

成绩查询小项目笔记0、前言前几天大哥通过抓包“西科大官方APP”get到了它的查询成绩的接口,甩给我玩。既然有接口了就好好利用一下,给它做成一个简易的小程序。 用什么做呢?MFC不熟悉,Qt需要的动态链接库太多,Java不会,最初想到的两种解决方案就是微信小程序和JavaScript(虽然JS也不会)。 说做就做,结果微信小程序要配置服务器才能去访问接口,我的域名还没有下来,因此微...

C#多个泛型约束问题_孙瑞宇的博客-程序员秘密

多个约束之间使用逗号隔开,但不重复T约束。1. private void AddControl<T>(TabPage tabPage, T userControl) where T: UserControl,new()转载于:https://www.cnblogs.com/zst-blogs/p/9628500.html...

九宫格——用html+css制作一个网页_九宫格网页代码_kivet.whx的博客-程序员秘密

不废话,直接上代码 HTML代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>task1</title> <link rel="stylesheet&

推荐文章

热门文章

相关标签