这是三参数威布尔分布参数估计的程序,但不知道怎么把寿命数据写入。
7 views (last 30 days)
Show older comments
华纳公司在线开户【微8785092】
on 19 May 2023
Answered: 华纳公司游戏网址【微8785092】
on 19 May 2023
x=[3956.42,4004.18,4091.61,4355.05,4355.40,4376.01,4391.79,4487.68,4487.68,4736.67,4736.67,4939.85,4963.62,5220.19,5353.41,5372.72,5418.04,5444.11,5603.17,5698.10,5746.17,5843.52,6175.14,6197.41,6249.69,6279.76,6279.76,6572.74,6740.48,6887.65,7183.09,7209,7209,7209,7209,7366.4,7581.64,7581.64,7581.64,7645.59,8246,8599.7,8713.97,8936.34,9044.22,9197.45,9511.73,9754.47,9967.45,10136.31,10172.88,10172.88,10308.04,10395,10609.23,10609.23,10788.97,10879.97,10971.75,11594.41,11990.59,12237.31,12400.31,12400.31,12550.01,13198.73,13947.78,15557.12,17646.12,19848.23,23199.07];
不知道怎么用下面的程序把上面的寿命数据按照三参数威布尔分布模型,把三个参数估计出来,一个MATLAB小白,希望路过的大神帮帮忙
x12 = handles.yb(:,1);
% x13 = x12;
n1=size(x12);%查看读取的excel数据矩阵的行*列数
n=sort(x12);%数组元素从小到大排列
m = size(n);%查看排列之后的行列数
n22=n1(1);%行数 此处就是样本个数
n2 = single(n22);%将行数值装换成单精度
clear n22 n1;
x1 = single(x12);%将这组数据装换成单精度
x1=sort(x1); %从小到大排列
zd=x1(1,1) ; %选出这一组数里面最小的数,这里就是第一个
clear x12;
for i =1:n2
% y(i) = (i-0.35)/n2;
y(i) = (i/(n2-i+1))/((i/(n2-i+1))+finv(0.05,2*(n2-i+1),2*i));
end
y1 = y';%y1为分布函数
clear y;
y = single(y1);%y为分布函数
clear y1;
Y1=log(-log(1-y));%Y1为纵坐标
clear y;
z1=sum(Y1);%求和
syms x;
X1 = log(x1-x);%x值为伽马值
s3=sum(X1);%求和
s4=z1;%Y1的和值赋值给s4
s5=(s4-n2*Y1)./(x1-x);
s5=sum(s5);
s1=sum(X1.^2);
s2=sum(Y1.*X1);
s6=(s3-n2*X1)./(x1-x);
s6=sum(s6);
f=(n2*s1-s3^2)*s5-(n2*s2-s3*s4)*s6;
r= HalfInterval(f,0,zd); %此处取样本中的最小值,但是这里可能是精度问题,得稍大一点才能出来(20样本不对,50样本对)
set(handles.edit38,'string',num2str(r));%位置参数
x=log(x1-r);
y=Y1;
[a,b] = LZXEC (x,y);
a=real(a);
b=real(b);
b=nthroot(exp(-b),a);
set(handles.edit39,'string',num2str(a));%形状参数
set(handles.edit40,'string',num2str(b));%尺度参数
p1=1-exp(-((n-r)./b).^a);
[B,BINT,R,RINT,STATS] = regress(p1,[ones(size(n'));n']');
set(handles.edit37,'string',num2str(STATS(1)));
% xda1=81.7458:0.001:(n(m)+20);
% xda1=str2num(r):0.001:(n(m)+20);
xda1=r:0.001:(n(end)+20);
% x = size(xda1)
yda1 = 1-exp(-((xda1-r)./b).^a);
% y = size(yda1)
plot( handles.axes1,n,p1,'p',xda1,yda1,'b','linewidth',1,'markersize',4);
legend(handles.axes1,'数据点','概率分布曲线','location','SouthEast');
hold on
0 Comments
Accepted Answer
华纳公司游戏网址【微8785092】
on 19 May 2023
三参数威布尔分布:
alpha 1.1306401899099
beta 4647.85132070355
gamma 3941.74829811037
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!