IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> MATLAB编程实现P-Ⅲ分布:拟合+密度+分布函数 -> 正文阅读

[数据结构与算法]MATLAB编程实现P-Ⅲ分布:拟合+密度+分布函数

1 概述

1.1 皮尔逊Ⅲ型分布(P-Ⅲ型分布)

皮尔逊Ⅲ型曲线是一条一端有限、一端无限的不对成单峰曲线,数学上称Gamma分布。
在这里插入图片描述
在这里插入图片描述

1.2 参数估计

1.2.1 矩法

在这里插入图片描述

1.2.2 三点法

在这里插入图片描述
在这里插入图片描述

1.2.3 权函数法

在这里插入图片描述

1.2.4 概率权重法

在这里插入图片描述

1.3 重点问题

Gamma分布取值必须大于0,但对于P-Ⅲ型分布而言,取值可以为负。

2 MATLAB代码实现

2.1 参数拟合

根据矩法求得皮尔逊Ⅲ型分布的三个参数。
MATLAB代码如下:

% 函数1:fitP3函数用于拟合得到皮尔逊Ⅲ型分布的三个参数
% ------------------------------------------------------------------
function [alpha , beta , a0] = fitP3( X )
% alpha     形状参数
% beta      尺度参数
% a0         位置参数

if isvector(X)
    n = length(X);
else
    error("输入数据并非向量!")
end

Xmean = mean(X);                                         % 计算样本X的均值
K = X/Xmean;                                                % 计算模比系数K
Cv = sqrt((1/(n-1)).*sum((K-1).^2));                % 计算变差系数Cv
Cs = (sum((K-1).^3))/(Cv^3)/(n-3);                 % 计算偏态系数Cs
alpha = 4/(Cs^2);                                           % P3分布参数:形状参数计算>0
beta = 2/(Xmean*Cv*abs(Cs));                        % P3分布参数:尺度参数计算>0
a0 = Xmean-2*Cv*Xmean/Cs;                        % P3分布参数:位置参数计算

end

2.2 密度函数

MATLAB代码如下:

% 函数2:P3pdf函数用于得到相应密度函数
% ------------------------------------------------------------------
function P = P3pdf( X , alpha , beta , a0 )
% 利用P3分布得到相应密度函数

if isvector(X)
    n = length(X);
else
    error("输入数据并非向量!")
end

X=X(:);
Xmean = mean(X);                                         % 计算样本X的均值
K = X/Xmean;                                                % 计算模比系数K
Cv = sqrt((1/(n-1)).*sum((K-1).^2));                % 计算变差系数Cv
Cs = (sum((K-1).^3))/(Cv^3)/(n-3);                 % 计算偏态系数Cs
Y =zeros(n,1);
if Cs>0
    Y = X-a0;
else
    Y = a0-X;
end

P =zeros(n,1);
for in=1:n
    P(in,1) = beta^alpha/gamma(alpha)*Y(in,1)^(alpha-1)*exp( -beta* Y(in,1) );
    % P(in,1) = gampdf( X(in,1)-a0 ,alpha,1/beta);
end
% 与Gamma分布进行比较
% PP = gampdf(X-a0 ,alpha , 1/beta );
end

2.3 分布函数

MATLAB代码如下:

% 函数3:P3cdf函数用于得到相应分布函数(三变量Gamma分布)
% ------------------------------------------------------------------
function P = P3cdf( X , alpha , beta , a0 )
% 利用P3分布得到相应分布函数

if isvector(X)
    n = length(X);
else
    error("输入数据并非向量!")
end

X=X(:);
Xmean = mean(X);                                         % 计算样本X的均值
K = X/Xmean;                                                % 计算模比系数K
Cv = sqrt((1/(n-1)).*sum((K-1).^2));                % 计算变差系数Cv
Cs = (sum((K-1).^3))/(Cv^3)/(n-3);                 % 计算偏态系数Cs
if Cs>0
    Y = X-a0;
else
    Y = a0-X;
end
Y = max(Y,0);          % Y<0则取值为0

if Cs>0
    P= gammainc(Y*beta,alpha,'lower');
else
    P= 1- gammainc(Y*beta,alpha,'lower');
end
% 与Gamma分布进行比较
% PP = gamcdf(X-a0 ,alpha , 1/beta );
end

3 示例

MATLAB代码如下:

clc
close all
clear
%% 
load('X.mat');
[alpha , beta , a0] = fitP3( X );
Xpdf = P3pdf( X , alpha , beta , a0 );
Xcdf = P3cdf( X , alpha , beta , a0 );

4 参考

4.1 代码

1.gammainc-不完全 gamma 函数

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:31:56  更:2022-04-27 11:32:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:28:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码