Está en la página 1de 15

E.P.

DE INGENIERA METALURGICA

PROGRAMACIN Y SIMULACIN DE PROCESOS METALRGICOS

GENERACIN DE VARIABLES ALEATORIAS


PRUEBAS DE BONDAD DE AJUSTE

INTRODUCCIN
Las pruebas de bondad de ajuste consisten en comprobar grficamente y
estadsticamente si la frecuencia emprica de la serie analizada se ajusta a una
determinada funcin de probabilidad terica seleccionada a priori, con los parmetros
estimados en base a los valores muestrales.
Las pruebas estadsticas, tienen por objeto medir la certidumbre que se obtiene al hacer
una hiptesis estadstica sobre una poblacin, es decir, califica el hecho de suponer que
una variable aleatoria se distribuya segn una cierta funcin de probabilidades.
Las pruebas que se consideran son:

Ajuste grfico
Ajuste estadstico:
Ji-cuadrado de K. Pearson
Kolmogorov Smirnov.

La prueba Ji cuadrado conviene tanto para distribuciones continuas como para discretas,
mientras que la prueba Kolmogorov-Smirnov slo sirve para distribuciones continuas.
1.1. Ajuste Grfico
El ajuste grfico se puede realizar comparando grficamente el histograma o
funcin de densidad emprica de la serie de datos, con funcin densidad terica y
decidir visualmente, si hay o no ajuste de acuerdo a la similitud o diferencia de
ambos; as mismo, podemos comparar la funcin acumulada con la funcin
acumulada terica seleccionada.
Ejemplo 1:
Da la serie histrica de caudales medios anuales en m3/s, que corresponde a un
registro de 38 aos.
Ing. Alcides Ramos Calcina

121,3
144,9
142,4
205,8
114,5
72,5

26,7
92,8
58,8
57,4
79,0
76,9

110,1
95,6
48,8
148,3
67,5
70,0

63,4
76,3
52,3
36,3
88,0
122,4

162,1
97,2
52,5
165,6
64,2
110,2

144,7
109,2
48,5
59,6
40,3
112,2

137,1
32,9

Realice la prueba de bondad de ajuste grafico para ver si los datos se ajustan a una
distribucin normal.
Matlab
Primeramente, ingresamos la serie de datos en Excel (en una columna, solamente
datos sin rotulo) y almacnela con formato tipo texto delimitado con tabulaciones.
Elija algn nombre. Por ejemplo datos.txt
En la ventana de comandos de Matlab cargue el archivo datos.txt y sela como un
vector:
>> load datos.txt

Realizamos el histograma (grfico 1) para la serie histrica de caudales:


>> hist(datos)
>> title('HISTOGRAMA DE LA SERIE HISTRICA')
HISTOGRAMA DE LA SERIE HISTRICA

8
7
6
5
4
3
2
1
0

Ing. Alcides Ramos Calcina

50

100

150

200

Grfico 1: Histograma.

250

Por lo cual establecemos la siguiente hiptesis:


Ho: La serie se ajusta a una distribucin Normal
H1: Otra distribucin
Ahora ejecutamos el m-fichero que grafica la funcin de densidad y acumulada.
>> ajus_g(datos)

ajus_g.m
%AJUSTE GRAFICO A UNA NORMAL
function ajus_g(y)
mu=mean(y);
sig=sqrt(var(y));
xord=sort(y);
%Funcion de probabilidad PDF
x=[-4:0.211:4];
y2=normpdf(x); %PDF terico
z=(xord-mu)/sig; %Estadarizacin de la serie
y1=(1/sqrt(2*pi))*exp(-(z.^2)/2); %PDF empirico
subplot(2,1,1); plot(x,y2,'-.',z,y1,'-+');
legend({'Distr. Terica' 'Distr. Emprica'},1)
title('DISTRIBUCIN DENSIDAD NORMAL TEORICA VS EMPIRICA')
xlabel('X')
ylabel('f(x)')
%Funcion de distribucin CDF
y3=normcdf(x); % CDF terico
y4=normcdf(z); % CDF empirico
subplot(2,1,2); plot(x,y3,'-.',z,y4,'-+');
legend({'Distr. Terica' 'Distr. Emprica'},2)
title('DISTRIBUCIN ACUMULADA NORMAL TEORICA VS
EMPIRICA')
xlabel('X')
ylabel('F(x)')
Nos muestra los siguientes grficos:

Ing. Alcides Ramos Calcina

DISTRIBUCIN DENSIDAD NORMAL TEORICA VS EMPIRICA

0.4

Distr. Terica
Distr. Emprica

f(x)

0.3
0.2
0.1
0
-4

-3

-1

0
X

0
X

DISTRIBUCIN ACUMULADA NORMAL TEORICA VS EMPIRICA

Distr. Terica
Distr. Emprica

0.8
F(x)

-2

0.6
0.4
0.2
0
-4

-3

-2

-1

Grfico 2: Ajuste grfico de la funcion densidad y distribucin.


Tambin podemos realizar directamente un grfico de normalidad a la serie de
datos con la siguiente funcin en MatLab:
>> normplot(datos);

Ing. Alcides Ramos Calcina

Normal Probability Plot

0.99
0.98
0.95

Probability

0.90
0.75
0.50
0.25
0.10
0.05
0.02
0.01

50

100

Data

150

200

Grfico 3: Ajuste de probabilidad normal.


Finalmente realizaremos un grfico de un histograma con campana de Gauss para
la serie de datos.
>> histfit(datos);
>> title('HISTOGRAMA CON CURVA NORMAL');
HISTOGRAMA CON CURVA NORMAL

12
10
8
6
4
2
0
-50

Ing. Alcides Ramos Calcina

50

100

Grfico 4.

150

200

250

Evidentemente se puede observar que los grficos de distribucin densidad y


acumulada empricos se ajustan a los grficos de las distribuciones tericas; al
igual que en el grfico de normalidad los datos se ajustan a la diagonal y por ltimo
en la grfica del histograma con la curva normal, tambin se observa un ajuste a
la normal, por lo tanto, podemos concluir que la serie de datos se ajusta a una
distribucin normal.
1.2. Ajuste Estadstico

Prueba Chi-cuadrado ( )

a)

La prueba de ji-cuadrado es la ms comnmente utilizada para verificar la bondad


de ajuste de la distribucin emprica a una distribucin terica conocida y se basa
en el clculo de las frecuencias, tanto de valores observados, como valores
esperados, para un nmero determinado de intervalos. Esta prueba fue propuesta
por Kart Pearson en 1900.
La expresin general de la prueba Ji-cuadrado se escribe como:

x c2
k

i 1

( i e i ) 2
ei

(1)

Donde:

i ei n
k

i 1

i 1

x c2

i
ei
n
k

, i = 1, 2, 3, , k

: valor calculado de ji-cuadrado de los datos


: nmero de valores observados en el intervalo de clase i
: nmero de valores esperados del intervalo i
: nmero total de observaciones de la muestra
: nmero de intervalos de clase en que ha sido agrupada la muestra

Asignando probabilidades a la ecuacin (1); vale decir, asignando igual


probabilidad de ocurrencia a cada intervalo de clase, se tiene que:

Ing. Alcides Ramos Calcina

x c2
k

i 1

(n i npi ) 2
npi

(2)

Donde:
ni : nmero de observaciones que caen dentro de los lmites de clases ajustados
de intervalo i.
n : tamao de muestra
pi : probabilidad igual para todos los intervalos de clase

pi

1
,
k

ei n.pi

Procedimiento de clculo
El procedimiento seguido para comprobar la bondad de ajuste mediante la prueba
Ji-cuadrado es:
a)

b)

Planteamiento de Hiptesis

H0: i = ei (frecuencia observada es igual a las esperadas)


Ha: i ei (frecuencia observada es diferente a las esperadas)
Seleccionar el nivel de significancia:
= 0.05.

c) Calcular el valor de Ji-cuadrado calculado ( x c ) utilizando las ecuaciones (1)


2

(2), las cuales estn implementadas en una funcin de Matlab del siguiente
modo:

La funcin CHI2GOF realiza la prueba chi-cuadrado de bondad de ajuste para


distribuciones discretas o continuas.
Si en el resultado H = 0, nos indica que la hiptesis nula (que X es una muestra
aleatoria de una distribucin normal) no puede ser rechazada al nivel de
significacin del 5%, y si H = 1, nos indica que la hiptesis nula puede ser
rechazada al nivel del 5%.
Tambin devuelve el valor de P. Que es el valor de probabilidad (p-value)
asociado al estadstico.
Y la estructura STATS devuelve los siguientes campos:
Ing. Alcides Ramos Calcina

chi2stat:
df:
edges:
O:
E:

Estadstico Chi-cuadrado
Grados de libertad
Vector de intervalos
Valores observados en cada intervalo
Valores esperados en cada intervalo

d) Determinar el valor de Ji-cuadrado de la tabla ( x t ) con:

g.l.

: 0.05
: k-1-h

donde:
g.l.
k
h

: grados de libertad
: nmero de intervalos de clase
: nmero de parmetros a estimar
as h = 2, para distribucin normal
h = 3, para la distribucin log-normal de 3 parmetros

e) Criterio de decisin
El criterio de decisin se fundamenta en la compasin del valor calculado de
ji-cuadrado con el valor tabular encontrado, esto es:
-

Si x c x t , se acepta la hiptesis de que los datos se ajustan a la

Si x c > x t , se rechaza la hiptesis de que los datos se ajustan a la

distribucin elegida.
2

distribucin elegida, por lo tanto, es necesario probar con otra distribucin


terica.

Ventajas y Limitaciones
a)

Es aplicable slo para ajustes a la distribucin normal, puesto que ha sido


desarrollado en base a datos normales e independientes.
b) Es realizada en la funcin densidad de datos agrupados en intervalos de
clases.
c) Requiere un conocimiento a priori de la funcin de distribucin terica
utilizada en el ajuste.
d) En la prctica se usa para cualquier modelo de ajuste, pero estrictamente
es vlido solo para la normal.
e) Es de fcil aplicacin
Ing. Alcides Ramos Calcina

Ejemplo 2:
Vamos a generar un vector X de 100 variables uniformes independientemente
distribuidas al azar en el intervalo [0, 1].
>> X=rand(100,1);
El parmetro (100, 1) significa que generamos una matriz 1001 de variables
aleatorias uniformes.
Vamos a probar si el vector X proviene de la distribucin U[0,1] usando la prueba
de bondad de ajuste implementada en Matlab:
>>
[H,P,STATS]=chi2gof(X,'cdf',@(z)unifcdf(z,0,1),'edges',
0:0.2:1)
H =
P =

0
0.8614

STATS =
chi2stat:
df:
edges:
O:
E:

1.3000
4
[0 0.2000 0.4000 0.6000 0.8000 1]
[20 18 17 22 23]
[20 20 20.0000 20.0000 20.0000]

De acuerdo a los resultados, aceptamos la hiptesis nula H0: X = U[0,1] teniendo


por defecto el nivel de significancia = 0.05 ya que el valor de p = 0.8614 es
mayor que . El Parmetro 'cdf' hace uso de @ especificando completamente a
c.d.f.
Por ejemplo, para comprobar si los datos provienen de N(3, 5) usaramos:
@(z)normcdf(z,3,5)

o para probar la distribucin de Poisson Poi(=4) se usara:


Ing. Alcides Ramos Calcina

@(z)poisscdf(z,4)

Ejemplo 3:
Un estudio del comportamiento del tiempo entre roturas de cierto filamento,
medido en minutos/rotura, se muestra a continuacin:
4.33
9.97
2.81
4.34
1.36

1.61
7.86
14.39
1.76
3.53

2.16
5.49
3.44
2.30
6.58

2.88
0.98
9.92
5.24
1.45

0.70
4.52
4.38
11.65
8.42

0.44
2.12
8.04
10.92
3.69

1.59
4.44
2.18
12.16
2.44

2.15
0.82
6.19
6.60
0.28

8.59
6.69
4.48
0.85
1.90

7.36
3.04
9.66
4.82
2.89

Haciendo uso de la funcin chi2gof, realice la prueba de chi-cuadradocon un nivel


de significancia del 5% ( = 0.05) para saber si los datos se ajustan a una
distribucin normal.
Planteamos la siguiente hiptesis para la variable X: tiempo entre roturas.
Ho: XN(, 2)
Ha: X no es normal

Antes de realizar la prueba, se procede los siguientes clculos:


>> load tiempo.txt
>> R=max(tiempo)-min(tiempo)
R =

14.1100

>> K=1+3.3*log10(length(tiempo))
K =

6.6066

>> C=R/7
C =

2.0157

Ahora realizamos la prueba, sabiendo que el valor mximo y mnimos son 14.39
y 0.28 respectivamente con un ancho de clase C = 2.016.
Ing. Alcides Ramos Calcina

>>
[H,P,STATS]=chi2gof(tiempo,'cdf',@(z)normcdf(z,mu,sig),
'edges', 0.28:2.016:14.4)
H =
P =

0
0.6125

STATS =
chi2stat:
df:
edges:
O:
E:

2.6810
4
[0.2800 2.2960 4.3120 6.3280 8.3440 14.3920]
[16 9 10 6 9]
[12.1447 10.4817 11.2082 8.6628 7.5025]

De los resultados observamos que el valor de probabilidad asociado al estadstico


Chi-cuadrado P = 0.6125 > = 0.05, por tanto, se acepta la hiptesis nula Ho. Es
decir, los datos se ajustan a la distribucin normal, con un nivel de significancia
de 5% de probabilidad.
b) Prueba De Kolmogorov-Smirnov (Ks)
La prueba de ajuste de Kolmogorov-Smirnov consiste en comparar las diferencias
existentes entre la probabilidad de los datos agrupados y la probabilidad ajustada,
tomando la distancia ms grande entre el valor observado y la recta del modelo,
vale decir:
Donde:

mx F(x) P(x)

(3)

: es el estadstico de Kolmogorov-Smirnov, cuyo valor es igual a la


diferencia mxima existente entre la probabilidad ajustada y la
probabilidad emprica.
F(x) : probabilidad de la distribucin de ajuste.
P(x) : probabilidad de los datos no agrupados, denominado tambin
frecuencia acumulada.

El estadstico tiene una distribucin muestral. Si 0 es un valor crtico para un


valor seleccionado, se tiene que:
Ing. Alcides Ramos Calcina

P mx F(x) P(x) 0 P( 0 )
Tambin:

P( 0 ) 1

(4)

(5)

Ventajas y limitaciones
a) No requiere un conocimiento a priori de la funcin de distribucin terica.
b) Es aplicable a distribuciones de datos no agrupados, vale decir no se requiere
hacer intervalos de clase.
c) Es aplicable a cualquier distribucin terica.
d) Se aplica en la funcin de distribucin acumulada y no en la funcin de
densidad.
e) Comparndola con la prueba Ji-cuadrado, no requiere que la frecuencia
absoluta de cada clase, sea igual o mayor que 5.
f)
No es una prueba exacta, sino una prueba aproximada.
Ajuste con Matlab
H = kstest (x) lleva a cabo la prueba de Kolmogorov-Smirnov para comparar

si los valores en el vector de datos X tienen distribucin normal estndar u otra


distribucin.
Ejemplo 5:

Se tiene el comportamiento del tiempo entre roturas de cierto filamento del Ejemplo
3. Realice la prueba de bondad de ajuste de Kolmogorov-Smirnov, para ver si la
serie se ajusta a una distribucin normal.
Planteamos la siguiente hiptesis:
Ho: XN(, 2)
Ha: X no es normal

Haciendo uso de la funcin kstest, realice la prueba de bondad de ajuste de los


datos del ejercicio 3.28.
Previamente debe cargarse el archivo tiempo.txt.
>> load tiempo.txt
>> mu=mean(tiempo);
>> sig=std(tiempo);

Ing. Alcides Ramos Calcina

>> CDFt=normcdf(tiempo,mu,sig);

A continuacin, realizamos la prueba KS, para lo cual en la ventana de comandos


escribimos:
>> [H,P,KSSTAT,CV]=kstest(tiempo,[tiempo,CDFt],0.05)
H =
P =

0
0.2294

KSSTAT =
0.1438
CV =

0.1884

Aceptamos H0 ya que el valor de probabilidad asociado al estadstico KS (p-value)


P = 0.2294 > = 0.05. CV es el valor crtico, de tal manera que se rechaza H0 si
KSSTAT > CV; en nuestro caso KSSTAT < CV, es decir, los datos distribuyen
normalmente.
Ejemplo 6:
Dada la serie histrica de caudales medios anuales en m3/s, que corresponden a un
registro de 50 aos para el ro Santa (Per).
95,05
98,13
100,18
101,66
101,76
105,21
105,81
106,4
107,43
107,62

Ing. Alcides Ramos Calcina

108,75
110,77
114,31
116,69
119,52
123
123,22
124,31
127,82
128,15

132,49
134,1
136,22
144,22
145,79
146,08
153,64
153,97
154,8
156,8

158,48
162,29
164,35
169,18
169,64
177
182,53
183,11
183,49
184,98

193,78
193,88
197,58
207,78
208,18
212,48
217,52
239,07
256,62
266,54

Averiguar si los datos se ajustan a una distribucin log-normal de 2 parmetros,


haciendo uso del comando kstest
Creamos el archivo archivo caudal.txt, como se hizo anteriormente y lo cargamos
a travs de:
>> load caudal.txt
>> y=caudal;

Ahora realizamos la prueba KS, para lo cual, en la ventana de comandos


previamente calculamos:
>>
>>
>>
>>

ly=log(y);
mu=mean(ly);
sig=std(ly);
CDFly=logncdf(y,mu,sig);

Luego,
>> [H,P,KSSTAT,CV]=kstest(y,[y,CDFly],0.05)
H =
P =

0.8248
KSSTAT =
0.0858
CV =
0.1884

Para graficar, la distribucin terica F(x) frente a la emperica P(x), realizamos lo


siguiente:
>>
>>
>>
>>
>>
>>

m=[1:n]';
Px=(m./(n+1)); %Distribucin emprica
h=plot(m,Px,m,CDFly,'-+');
legend({'P(x)' 'CDFly'},2)
title('AJUSTE K-S: LOG-NORMAL 2P')
grid on

Ing. Alcides Ramos Calcina

AJUSTE K-S: LOG-NORMAL 2P

P(x)
CDFly

0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

10

15

20

25

Grfico 5.

30

35

40

45

50

El valor del estadstico Dt = 0.1884 (Valor critico o Delta tabulado, para un valor
de N = 50 y nivel de significancia 0.05.
Como Dc = 0.0858 < Dt = 0.1884, se acepta la hiptesis nula Ho. Por lo tanto, los
datos se ajustan a la distribucin log normal de 2 parmetros, con un nivel de
significancia del 5%, lo que se puede corroborar con el grafico 4.9.

Ing. Alcides Ramos Calcina

También podría gustarte