Professional Documents
Culture Documents
CUSCO
ALUMNO: CODIGO:
DISTRIBUCION DE WEIBULL
Esta función de probabilidad de fallo o función de fiabilidad R (t), viene dada por:
𝑡−Υ 𝛽
−( )
𝑅(𝑡) = 𝑒 𝜂
𝑡−Υ 𝛽
−( )
𝐹(𝑡) = 1 − 𝑒 𝜂
Debido a que se desconoce los valores β, η e γ, se debe linealizar las curvas, es decir usar
el método de regresión lineal, este método permitirá obtener un polinomio que linealizará la
distribución de Weibull y permitirá estimar los parámetros β, η e γ, y tenemos los siguientes
pasos:
𝑦 = 𝑎𝑥 − 𝑏
Donde comparando tenemos:
1
ln ln
.ln t .ln( )
1 F ( t ) a x b
y
1
𝑦 = 𝑙𝑛 [𝑙𝑛 ( )] 𝑎 = 𝛽 𝑥 = ln(𝑡 − 𝛾) 𝑏 = −𝛽 ∗ ln(𝜂)
1 − 𝐹(𝑡)
De donde despejamos “ ”:
b
b
b .ln( ) ln( ) e
3. CALCULO DE LOS PARAMETROS DE WEIBULL
Se tiene la siguiente tabla de recopilación de Tiempos entre Fallas obtenida por personal
de la Compañía Minera Antapaccay de el CARGADOR FRONTAL CAT MODELO 994F (5029)
A continuación se explica un método (no el único, aunque sí uno de los más utilizados) que
permite obtener estimaciones puntuales de la función de distribución empírica, F (ti), a partir
de las observaciones, ti .
Considerando que t1< t2<…tn son los “n” tiempos de fallo observados. Para i = 1,2,…,n se
puede obtener la segunda componente del punto (t,F(ti)) tomando para tiempos de fallo
mayor a 20:
𝑖 − 0.3
𝐹(𝑡) =
𝑛 + 0.4
Para el caso del CARGADOR FRONTAL CAT MODELO 994F (5029) se tiene los
siguientes valores:
n = 43
Abscisas(X) = Ln(t)
Una vez calculado los valores de las constantes “a” y “b” podemos calcular los siguientes
valores:
β=a
η = exp(-b/ β)
Paso numero 1
Colocamos en primer lugar las funciones clc y clear para que cada vez que se
ejecute el edit en primer lugar borre los resultados que podrían haber en el
Command Windows (clc) y también que limpie el Workspace (clear)
clc, clear;
Paso numero 2
Paso numero 3
t=[9.22,19.67,19.90,21.49,22.15,22.19,22.24,22.81,23.08,23.78,23.91,24.47,25.46,2
5.85,26.67,26.69,30.71,35.57,46.33,48.71,50.45,50.66,51.01,63.93,68.09,71.15,7
2.15,73.72,76.68,77.21,92.87,110.18,166.38,168.00,173.29,316.76,401.18,416.0
4,572.26,581.71,664.93,672.68];
Paso numero 4
Usamos la función sort para ordenar nuestros datos de menor a mayor, es decir
creamos otra matriz con los datos iniciales pero ahora ordenados de forma
ascendente.
t = sort (t);
Paso numero 5
Creamos una matriz para los valores de la fórmula de Bernard, para ello usamos la
función length (t). Length, hace el conteo del número de elementos de una matriz.
Paso numero 6
x=log (t);
Paso numero 7
% Linealización de la curva
Pol=polyfit (x, y, 1); %Se obtiene los valores pol= [pol(1) pol(2)]
coeficientes de la recta(y=pol(1)x + pol(2))
Para determinar los valores de beta y eta se quieren de los valores que nos da la
función polyfit(x, y, 1) anteriormente hallados como se mencionó [a b] para ello “a”
será pol (1) y “b” será pol (2).
yy = polyval(Pol,x);
Paso numero 9
Paso numero 10
fprintf ('Y =\t'); en este caso el texto que se verá en el Comman Windows es “Y =”
y la parte “\t” hace que lo escrito debajo de esta función lo lleve en la misma línea.
También se puede escribir “\n” en este caso estará separado en la siguiente fila de
texto.
fprintf('%0.4f\t',Pol(1)); es este caso la función fprintf nos permite hacer que
aparezca un valor ya calculado, para ello se debe tener en cuenta lo que está dentro
de los paréntesis “'%0.4f\t',Pol(1)”
%0.4f; el “0” indica la separación, el “4” en número de decimales y “f” nos permite
llamar un dato que queremos que aparezca, para nuestro caso sería Pol(1).
fprintf('Y =\t');
fprintf('%0.4f\t',Pol(1));
fprintf('X\t');
fprintf('%0.4f\t',Pol(2));
disp('(Para Gamma = 0)')
fprintf('Beta (B) =\t');
fprintf('%0.4f\n',beta);
fprintf('Eta (n) =\t');
fprintf('%0.4f\t',eta);
Plot (): nos permite generar gráficos colocando. Entre comas se colocan los valores
del eje de abscisas y luego el valor de las ordenadas, además presenta otras
herramientas que pueden ayudar a nuestra graficas un presentación más estética.
Por ejemplo tenemos las funciones siguientes:
hold on; esa función nos permite capturar un plot para ello se escribe siempre
después de la gráfica que se quiere capturar.
title; una vez generado la figura podemos ponerle el titulo para ello esta función nos
permite hacer eso y otras cosas más que se detallaran a continuación.
(['Ajuste de Weibull con ','\gamma',' = 0 ']; la primera parte viene a ser el texto
del título “'Ajuste de Weibull con '” la segunda “'\gamma'” nos permite introducir
el símbolo y la última parte “' = 0 '” que también forma parte del texto que estará en
el título.
'Color','w'; nos permite colocarle color al texto.
'FontSize',12; tamaño del fondo.
'HorizontalAlignment','center'; alinear y centrar texto.
'BackgroundColor',[.55 .100 .0]; no permite elegir el color de fondo, para este caso
podemos colocar el color mediante [.55 .100 .0] que viene a ser como una paleta
de combinación de los colores primarios.
'EdgeColor','b'; color del marco.
'LineWidth',1; ancho de la línea.
min(yy); escoge el mínimo valor de la matriz seleccionada.
median(x); escoge el valor medio de la matriz seleccionada.
set(gca,'yGrid','on','yColor','k','LineStyleOrder', '-'); permite colocar líneas
auxiliares para mejorar la visualización de las gráficas.
Xlabel; permite colocar texto en eje x de la gráfica.
Ylabel; permite colocar texto en eje y de la gráfica.
Text; permite colocar texto adicional o leyenda en el gráfico.
num2str(); permite colocar datos en el texto.
R2=(sum((x-(sum(x)/length(x))).*(y-(sum(y)/length(y))))/((sum((x-
(sum(x)/length(x))).^2)*sum((y-(sum(y)/length(y))).^2))^.5))^2;
text(posx,posy,['y = ',num2str(Pol(1)),'x ',num2str(Pol(2)),' \wedge ','r^{2} =
',num2str(R2)],'FontSize',10,'HorizontalAlignment','center','BackgroundColor'
,[.8 .8 .8],'Margin',6,'EdgeColor','k','LineWidth',2)
disp(' ');
fprintf('R2 =\t')
fprintf('%0.4f\n',R2);
Para esta parte se pretende realizar cálculos para gamma mayores que cero, para
ello usamos la función for.
for; nos permite hacer iteraciones
%Usamos FOR para evaluar el valor de r^2 en j=1:n
n=(t(1,1)-1); %donde n < t(min)
for j=1:n; % "j" representa los posibles valores de gamma
yyy=1:n;
t2=[t-j]; % los nuevos tiempos entre fallas afectado por gamma
x=log(t2);
r2(1,j)=(sum((x-(sum(x)/length(x))).*(y-(sum(y)/length(y))))/((sum((x-
(sum(x)/length(x))).^2)*sum((y-(sum(y)/length(y))).^2))^.5))^2;% R2 para
cada "j"
end
r=r2;
disp(' ');
disp('3°.-Hallando el valor máximo de r^2 que ajuste a la recta')
disp('con la observación de que se han tomado Gammas positivos y
menores que el valor minimo de t')
%La siguiente linea calcula el parametro r^2 maximo y Gamma
disp(' ');
%Escribimos "Gama" porque el´programa MATLAB ya posee una funcion
interna Gamma
[R2,Gama] = max(r);
disp('El valor de r^2 que maximiza el ajuste es: ')
fprintf('R2 =\t')
fprintf('%0.4f\n',R2);
plot(r,yyy)
set(gca,'YGrid','on','YColor','k','LineStyleOrder', '-')
title('Sensibilidad y Error
cuadrático','Color','w','FontSize',12,'HorizontalAlignment','center','Backgroun
dColor',[.55 .100 .0],'Margin',5,'EdgeColor','k','LineWidth',1)
set(gca,'YGrid','on','YColor','k','LineStyleOrder', '-')
posx = min(r);
posy= median(yyy);
text(posx,posy,['Max. aproximación en: ',' (r^{2}) max = ',num2str(R2),'
\wedge ',' \gamma =
',num2str(Gama)],'FontSize',10,'HorizontalAlignment','left','BackgroundColor'
,[.8 .8 .8],'Margin',6,'EdgeColor','k','LineWidth',1)
ylim([0 max(Gama)+1]);
xlabel(['Coeficiente de determinacion',' (r^{2})'],'Color','k')
ylabel(['Gamma','(\gamma)',' en [Horas]'],'Color','k')
hold on
plot(R2,Gama,'+','LineWidth',8,'MarkerEdgeColor',[.55 .100
.0],'MarkerSize',2)
disp(' ');
if; nos evalúa una condición a la cual podemos decir que puede ser verdadera o
falsa.
else; ejecutado si la primera condicional es falsa.
Dmax=max(Dni);
disp(' ');
DAlfa=0.2417;% La máxima discrepancia que se puede aceptar para un
determinado nivel de confianza (saca de la tabla de Kolmogorov Smirnov)
disp(' ');
if (DAlfa>Dmax);
fprintf('El modelo es WEIBULL se ACEPTA (DAlfa>Dmax)\n');
else
fprintf('El modelo no es WEIBULL se RECHAZA (DAlfa<Dmax)\n');
end
disp(' ');
fprintf('DAlfa =\t');
fprintf('%0.4f\n',DAlfa);
fprintf('Dmax =\t');
fprintf('%0.4f\n',Dmax);
Rt=exp(-((t-Gama)./Eta).^(Beta));
plot(t,Rt,'bo','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','r','Marker
Size',2)
title('Confiabilidad','Color','w','FontSize',12,'HorizontalAlignment','center','Bac
kgroundColor',[.55 .100 .0],'Margin',5,'EdgeColor','b','LineWidth',1)
set(gca,'YGrid','on','YColor','k','LineStyleOrder', '-')
posx = 2*median(t);
posy= median(Rt);
text(posx,posy,['R(t) = e ','^{-((\gamma-t)/\eta)}',' ^
','^{\beta}'],'FontSize',10,'HorizontalAlignment','left','BackgroundColor',[.8
.8.8],'Margin',6,'EdgeColor','k','LineWidth',1)
xlabel('Tiempo (t) en [Horas]','Color','k')
ylabel('Confiabilidad R(t)','Color','k')
disp(' ');
rot90(rot90(t)); esta función nos permite rotar la matriz en 180, se usó para tener
datos ordenados de forma descendente, es decir de la mayor a menor. Pero antes
se tuvo que ordenar con ayuda de la función sort(t).
disp(' ');
disp('8°.-Evaluamos los parámetro estadístico mediante Test de Anderson
Darling')
disp('comprobar que ADe>ADx para alfa=0.05')
Finv=rot90(rot90(F));
n=length(t);
j=1:n;
coef=(2*j-1)/n;
A=log(F);
B=log(1-Finv);
Res=coef.*(A+B);
S=sum(Res);
ADx =-n-S;
ADe=0.757;% de tabla para un ajuste del 95%
disp(' ');
if (ADe>ADx);
fprintf('El modelo es WEIBULL se ACEPTA (ADe>ADx)\n');
else
fprintf('El modelo no es WEIBULL se RECHAZA (ADe<ADx)\n');
end
disp(' ');
fprintf('ADe =\t');
fprintf('%0.4f\n',ADe);
fprintf('ADx =\t');
fprintf('%0.4f\n',ADx);
disp(' ');
disp(' ');
disp('9°.-Encontramos el Tiempo Promedio Entre Fallas "MTBF" en Horas')
MTBF=Eta*gamma(1+(1/Beta))+Gama
disp(' ');
disp('10°.-Resultados')
TF=(((t-Gama)./Eta).^(Beta-1)).*(Beta/Eta);
disp(' ');
disp(' n t R(t)% F(t)% ');
disp([(1:length(t))',t',Rt'*100,Ft'*100]);
0.5
0
ln(ln(1/(1-F(i))))
-0.5
-1
-1.5
-2
-2.5
-3.5
1 1.5 2 2.5 3 3.5 4
ln t
Sensibilidad y Error cuadrático
2
1.9
1.8
1.7
Gamma() en [Horas]
1.6
1.4
1.3
1.2
1.1
1
0.9845 0.985 0.9855 0.986 0.9865 0.987 0.9875 0.988 0.9885 0.989
Coeficiente de DETERMINACION (r2)
0.5
0
ln(ln(1/(1-F(i))))
-0.5
-1
-1.5
-2
-2.5
-3.5
0.5 1 1.5 2 2.5 3 3.5 4
ln (t-)
Confiabilidad
1
0.9
0.8
0.7
Confiabilidad R(t)
0.6
0.5
R(t) = e -((-t)/)
0.4
0.3
0.2
0.1
0
0 5 10 15 20 25 30 35 40
Tiempo (t) en [Horas]
0.1
Tasa de Fallas: (t) [Fallas/Hora]
0.09
0.08
0.07
0.06
0.05
0.04
0.03
0 10 20 30 40 50 60
Tiempo (t) en [Horas]