威布尔分布拟合/威布尔参数估计Matlab函数 您所在的位置:网站首页 MATLAB数据拟合后求最大值 威布尔分布拟合/威布尔参数估计Matlab函数

威布尔分布拟合/威布尔参数估计Matlab函数

2023-10-06 16:14| 来源: 网络整理| 查看: 265

背景

关于威布尔分布的介绍和最小二乘法拟合方法已在此博客介绍,此处不再赘述。

Matlab代码

使用方法为 [威布尔参数beta,威布尔参数eta]=Weibullfit(样本数组s,样本个数n)

%Project: 威布尔分布拟合/威布尔参数估计函数 %Author: Jace %Data: 2022/3/4 %====================原理==================== %s为威布尔分布的自变量,F(s)为威布尔分布的因变量: %F(s)=1-exp(-(s/eta)^beta) %将威布尔分布化为线性,假设 %x=log(s) %y=log(log(1/1-F(s))) %将s按大小顺序排列后,得 %F(s)=i/n+0.1 %n为样本总数 %====================函数==================== function [beta,eta]=Weibullfit(s,n) %初始化 x_Sum=0; y_Sum=0; xy_Sum=0; xx_Sum=0; %求平均值和累计和 for i=1:n%求样本累积和 x_Sum=x_Sum+log(s(i)); y_Sum=y_Sum+log(log(1/(1-(i/(n+0.1))))); xy_Sum=xy_Sum+log(s(i))*log(log(1/(1-(i/(n+0.1))))); xx_Sum=xx_Sum+log(s(i))^2; end %估计分布参数 beta=(n*xy_Sum-x_Sum*y_Sum)/(n*xx_Sum-(x_Sum^2)); eta=exp((x_Sum/n)-(y_Sum/n)/beta); end 测试用例 %Project: 威布尔分布拟合测试函数 %Author: Jace %Data: 2022/3/4 clear all; close all; N=100;%样本总数 %--------威布尔分布参数---------- eta=1; beta=3; X=wblrnd(eta,beta,N,1);%生成威布尔分布样本 Xs=sort(X);%排序 %---------初始化---------- F=zeros(1,41); Q=zeros(1,N); %---------拟合估计参数---------- % [WG]=wblfit(X,N);%matlab自带最大似然估计法拟合,估计参数 [Wbeta,Weta]=Weibullfit(Xs,N); %---------生成横纵坐标以用于绘制分布图像---------- for t=1:N Q(t)=t/(N+1); end for k=1:41 i=(k-1)/10; F(k)=Weibull(i,Wbeta,Weta); end %---------绘图---------- i=1:N; j=1:40; figure hold on; box on; plot(Xs(i),Q(i),'b.'); plot(j/10,F(j),'-r.'); legend('Sample','Weibull');

其中依赖的Weibull函数为,需添加在同路径为Weibull.m

%Project: 威布尔函数 %Author: Jace %Data: 2022/3/4 function [F]=Weibull(s,bata,eta) F=1-exp(-(s/eta)^bata); end 效果

在这里插入图片描述 蓝色点为样本点,红色曲线为拟合威布尔分布曲线



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有