No BSD License  

Highlights from
Weibull fit tests

from Weibull fit tests by Javier Amezcua
3 goodnes of fit tests for thw Weibull: Anderson-Darling, Chi-squared and graphic

weibgf(v)
function diagnostico = weibgf(v)

%obtenemos los parametros y dimensiones
param=weibmle(v);
theta=param(1);
beta=param(2);
n=length(v);


% A) el Anderson Darling
v2=sort(v);
Fv=1-exp(-(v2./theta).^beta);
Fvinv=flipud(Fv);
ind=[1:1:n]; ind=ind';

S=(2.*ind-1).*(log(Fv)+log(1-Fvinv));
a2=-sum(S)/n-n;


% B) la Ji2

%los intervalos, queremos ~K datos esperados en cada intervalo
ninterv=10;
K=round(n/10);
p=1/ninterv;

probs=[p:p:1-p];
probs=probs';
m=length(probs);
lims=theta*(log(1./(1-probs))).^(1/beta);

%la tabla
% liminf | limsup | esperado | observado | ji^2
tabla=zeros(m+1,5);
tabla(:,1)=[0;lims];
tabla(:,2)=[lims;1000];
tabla(:,3)=K;

for i=1:m+1
 tabla(i,4)=length(v((v>tabla(i,1))&(v<=tabla(i,2))));
end

tabla(:,5)=((tabla(:,4)-tabla(:,3)).^2)./tabla(:,3);

%calculamos las ji^2

ji2=sum(tabla(:,5));
pvalor=1-chi2cdf(ji2,m-3);


% C) diagnostico grafico
figure
subplot(2,2,1)
hist(v,round(n/K))
title('Histograma')

subplot(2,2,2)
r=0:.1:20;
plot(r,(beta/theta^beta).*(r.^(beta-1)).*exp(-(r./theta).^beta))
title(['f escala = ',num2str(theta),', f forma = ',num2str(beta),' ,AD = ',num2str(a2)])

subplot(2,2,3)
weibplot(v)

subplot(2,2,4)
stem(tabla(:,1),tabla(:,5));
title(['Residuales. Ji^2 = ',num2str(ji2),'. P-valor obtenido = ',num2str(pvalor)])

% D) lo que regresa 
diagnostico=[ji2,pvalor,a2];

Contact us at files@mathworks.com