pruebas de hipótesis -...

11
Simulación 75.26 – 95.19 Pruebas de hipótesis Test Generales Chi cuadrado Se utiliza en situaciones en donde las observaciones se pueden ubicar en categorías. Supongamos que tenemos k categorías posibles y realizamos n observaciones independientes del evento que estamos estudiando. Sea ps la probabilidad que cada observación caiga dentro de la categoría s e Ys la cantidad de observaciones que cayeron dentro de la categoría s. Definamos el estadístico: = ∑ ( ) 2 1≤≤ La idea general es que cuanto más chico sea este estadístico habrá más concordancia entre los número generados con la distribución esperada. Para saber si v es suficientemente bueno, se debe comparar el valor obtenido con el valor de la tabla de chi cuadrado para un nivel de significación determinado, si el valor obtenido es menor o igual que el valor de tabla entonces podemos aceptar la hipótesis para ese nivel de significación. Ejemplo Simulamos el lanzamiento de 2 dados y comprobamos si los mismos no están cargados. Las probabilidades que se esperan para la suma de los dos números obtenidos son: Valor 2 3 4 5 6 7 8 9 10 11 12 Prob 1/36 1/18 1/12 1/9 5/36 1/6 5/36 1/9 1/12 1/18 1/36 Nuestra hipótesis nula H0 será que los dados no están cargados. Simulamos 100000 lanzamientos:

Upload: others

Post on 13-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Pruebas de hipótesis

Test Generales

Chi cuadrado

Se utiliza en situaciones en donde las observaciones se pueden ubicar en categorías.

Supongamos que tenemos k categorías posibles y realizamos n observaciones independientes del evento

que estamos estudiando.

Sea ps la probabilidad que cada observación caiga dentro de la categoría s e Ys la cantidad de observaciones

que cayeron dentro de la categoría s.

Definamos el estadístico:

𝑣 = ∑(𝑌𝑠 − 𝑛𝑝𝑠)2

𝑛𝑝𝑠1≤𝑠≤𝑘

La idea general es que cuanto más chico sea este estadístico habrá más concordancia entre los número

generados con la distribución esperada.

Para saber si v es suficientemente bueno, se debe comparar el valor obtenido con el valor de la tabla de chi

cuadrado para un nivel de significación determinado, si el valor obtenido es menor o igual que el valor de

tabla entonces podemos aceptar la hipótesis para ese nivel de significación.

Ejemplo

Simulamos el lanzamiento de 2 dados y comprobamos si los mismos no están cargados.

Las probabilidades que se esperan para la suma de los dos números obtenidos son:

Valor 2 3 4 5 6 7 8 9 10 11 12

Prob 1/36 1/18 1/12 1/9 5/36 1/6 5/36 1/9 1/12 1/18 1/36

Nuestra hipótesis nula H0 será que los dados no están cargados.

Simulamos 100000 lanzamientos:

Page 2: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Realizamos el test para un nivel de significación del 1% (La probabilidad de rechazar la hipótesis siendo esta

cierta es del 1%).

Para este primer ejemplo utilizaremos el generador de número al azar provisto por Matlab.

Código Matlab

cant=100000;

d1=floor(rand(1,cant)*6+1);

d2=floor(rand(1,cant)*6+1);

suma=d1+d2;

p=[1/36; 1/18; 1/12; 1/9; 5/36; 1/6; 5/36; 1/9; 1/12; 1/18; 1/36;];

expected=p*cant;

[h,pValor] = chi2gof(suma,'Expected',expected,'Alpha',0.01);

En h obtenemos el resultado del test. En este caso h=0 por lo cual, cómo esperábamos, no se puede

rechazar la hipótesis.

Page 3: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Ejemplo 2

Repitamos el ejemplo anterior pero utilizando un generador congruencial lineal con parámetros provistos

por Numerical Recipes.

cant=100000;

c=1013904223; m=2^32; a=1664525;

d1(1)=12345; d2(1)=12347; for i=1:cant d1(i+1)=mod(a*d1(i)+c,m); d2(i+1)=mod(a*d2(i)+c,m); end

d1=floor(d1/m*6+1); d2=floor(d2/m*6+1);

suma=d1+d2;

p=[1/36; 1/18; 1/12; 1/9; 5/36; 1/6; 5/36; 1/9; 1/12; 1/18; 1/36;];

expected=p*cant; [h,pValor] = chi2gof(suma,'Expected',expected,'Alpha',0.01);

Nuevamente para un nivel de significación del 1% obtenemos h=0 por lo cual, no se puede rechazar la

hipótesis nula.

Test de Kolmogorov Smirnov

El test de Chi cuadrado se utiliza en situaciones en donde las observaciones se pueden ubicar en categorías,

pero es muy común observar variables aleatorias que tienen infinitos valores posibles, por ejemplo un

número aleatorio real entre 0 y 1.

Este método puede ser utilizado cuando F(x) no tiene saltos.

Supongamos que realizamos n observaciones al evento que nos interesa estudiar y obtenemos los valores

X1, X2, X3,…,Xn podemos plantear la distribución empírica:

𝐹𝑛(𝑥) =𝑐𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑋𝑖 ≤ 𝑥

𝑛

Este test se basa en la diferencia entre la distribución de probabilidad acumulada F(x), a la que suponemos

perteneces nuestra muestra (hipótesis a probar con nuestro test), y la distribución empírica Fn(x). Si la

función de distribución empírica no se aproxima lo suficientemente bien a la función de distribución

hipótesis significa que debemos rechazar nuestra hipótesis.

Para realizar el test debemos generar los siguientes estadísticos:

Page 4: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

𝑘𝑛+ = √𝑛 max

−∞<𝑥<∞(𝐹𝑛(𝑥) − 𝐹(𝑥))

𝑘𝑛− = √𝑛 max

−∞<𝑥<∞(𝐹(𝑥) − 𝐹𝑛(𝑥))

𝑘𝑛+: Mide la máxima desviación de F(x) cuando Fn(x) es mayor

𝑘𝑛−: Mide la máxima desviación de F(x) cuando Fn(x) es menor

Si ordenamos las observaciones de forma ascendente los estadísticos se pueden generar como:

𝑘𝑛+ = √𝑛 max

1<𝑥<𝑛(

𝑗

𝑛− 𝐹(𝑥𝑗))

𝑘𝑛− = √𝑛 max

1<𝑥<𝑛(𝐹(𝑥𝑗) −

𝑗 − 1

𝑛)

Luego elegimos el mayor de los dos estadísticos, la mayor diferencia entre las dos distribuciones:

𝐾 = max(𝑘𝑛+, 𝑘𝑛

−)

Como ocurre con Chi cuadrado debemos elegir un valor de significación α tal que:

𝑃 (𝑅𝑒𝑐ℎ𝑎𝑧𝑎𝑟 𝑙𝑎 ℎ𝑖𝑝ó𝑡𝑒𝑠𝑖𝑠

𝐿𝑎 𝐻𝑖𝑝ó𝑡𝑒𝑠𝑖𝑠 𝑒𝑠 𝑐𝑖𝑒𝑟𝑡𝑎⁄ ) = 𝛼 (Error de tipo I)

Con este valor vamos a la tabla de valores Kolmogorov Smirnov y dependiendo del tamaño de la

muestra tomamos el valor 𝑘∝ para el cual

𝑃 (𝑘 > 𝑘∝

𝐿𝑎 ℎ𝑖𝑝ó𝑡𝑒𝑠𝑖𝑠 𝑒𝑠 𝑐𝑖𝑟𝑡𝑎⁄ ) = 𝛼

𝑆𝑖 𝑘 ≤ 𝑘∝ ⇒ 𝑎𝑐𝑒𝑝𝑡𝑜 𝑙𝑎 𝐻𝑖𝑝ó𝑡𝑒𝑠𝑖𝑠

Sino la rechazo.

Para poder evaluar la hipótesis con más seguridad nos va a convenir tomar una cantidad grande de

muestras. Sin embargo esto podría ocultar algún comportamiento no aleatorio en alguna parte de

nuestra función, por lo cual es conveniente realizar este método tomando intervalos de nuestras

muestras y aplicando el test en ellos, por ejemplo aplicamos el test en intervalos de 1000

muestras.

Un método alternativo es utilizar el valor-p

𝑣𝑎𝑙𝑜𝑟_𝑝 = 𝑃 (𝑂𝑏𝑡𝑒𝑛𝑒𝑟 𝑢𝑛 𝑟𝑒𝑠𝑢𝑙𝑡𝑎𝑑𝑜 tan 𝑒𝑥𝑡𝑟𝑒𝑚𝑜 𝑜 𝑚á𝑠

𝐿𝑎 ℎ𝑖𝑝ó𝑡𝑒𝑠𝑖𝑠 𝑒𝑠 𝑐𝑖𝑒𝑟𝑡𝑎)

Page 5: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Si obtenemos un valor alto del valor-p entonces estamos en condiciones de aceptar la hipótesis

nula ya que la serie de números generados tiene una alta probabilidad de ocurrir siendo cierta la

hipótesis nula, caso contrario la deberíamos rechazar.

Dicho de otra manera:

Si 𝐾𝑜𝑏𝑡𝑒𝑛𝑖𝑑𝑜 = max(𝑘𝑛+, 𝑘𝑛

−) ⇒ 𝑣𝑎𝑙𝑜𝑟_𝑝 = 𝑃 (𝑘≥𝐾𝑜𝑏𝑡𝑒𝑛𝑖𝑑𝑜

𝐻𝑖𝑝ó𝑡𝑒𝑠𝑖𝑠 𝑐𝑖𝑒𝑟𝑡𝑎)

Ejemplo

Realizamos el test con la distribución uniforme creada utilizando el generador congruencial lineal con

parámetros provistos por Numerical Recipes.

cant=500;

c=1013904223; m=2^32; a=1664525;

z(1)=12345;

for i=1:cant z(i+1)=mod(a*z(i)+c,m); end z=z/m;

[f,x_values] = ecdf(z); F = plot(x_values,f,'r-'); hold on; G = plot((0:1),(0:1));

legend([F G],... 'Prob acumulada empírica','Prob acumulada uniforme',... 'Location','SE');

[h,p,k,c] = kstest(z,[0,0;1,1],0.01,0)

Page 6: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

El test nos devuelve h=0, por lo cual no podemos rechazar la hipótesis nula con un nivel de

significación del 1%.

Test Empíricos

Test de frecuencia

Busca comprobar que la secuencia de números generados se distribuyan siguiendo la función de

probabilidad esperada.

Una forma de realizar este test para una distribución uniforme es:

1) En lugar de trabajar con una distribución uniforme [0,1) usemos una distribución uniforme [0,m)

2) Para cada entero r tal que 0 ≤ r ≤ m contar la cantidad de ocurrencias.

3) Realizar el Test de Chi cuadrado suponiendo m clases, y 𝑝𝑖 =1

𝑚

Ejemplo

Probaremos que el generador congruencial lineal con parámetros propuestos en http://numerical.recipes/

realmente tiene una distribución uniforme (Esta será nuestra hipótesis nula).

Trabajaremos con el intervalo 0,8.

Page 7: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Código Matlab

cant=100000;

c=1013904223; m=2^32; a=1664525; z(1)=a;

for i=1:cant z(i+1)=mod(a*z(i)+c,m); end z=floor(z/m*8); p=ones(1,8)*1/8; expected=p*cant; [h,pValor] = chi2gof(z,'Expected',expected,'Alpha',0.01);

Para un nivel de significación del 1%, obtenemos que no podemos rechazar la hipótesis nula (h=0).

Test Serial

En una secuencia de números al azar busca comprobar que los pares de números consecutivos estén

distribuidos uniformemente.

Para esto:

1) Contamos la cantidad de ocurrencia de cada par de números consecutivos

(𝑛0, 𝑛1), (𝑛2, 𝑛3) … (𝑛𝑚−1, 𝑛𝑚)

2) Realizamos el Test de Chi cuadrado para las m2 categorías y 𝑝𝑖 =1

𝑚2

(Este test puede también realizarse tomando los números de a 3, 4, etc. pero hay que reducir el valor de m

para que generar muchas categorías).

Page 8: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Run Test

Este test permite detectar secuencias monótonas de números al azar.

Una secuencia es monótona si todos los elementos de la secuencia son generados en orden creciente, o

decreciente.

Por ejemplo, si queremos analizar las secuencias de números consecutivos ascendentes de la serie:

1,5,9,8,7,4,6,8,9

Tenemos:

Una secuencia de longitud 3: 1,5 y 9

Dos secuencias de longitud 1 , 8 y 7 son menores que el número anterior generado por lo cual se le asigna

la longitud de período de números ascendentes igual a 1.

Una secuencia de longitud 4: 4,6,8 y 9

Estos intervalos no son independientes entre si, por lo cual no podemos utilizar un test de Chi cuadrado

sobre las longitudes de los intervalos.

Knuth en “The art of computer programming” Volumen 2 provee otro estadístico.

No profundizaremos en el estudio de este test, sólo se busca conocer la idea general del mismo.

Gap Test

Siendo Ui un número aleatorio con distribución uniforme en un rango [0,1] y 0 ≤ 𝛼 < 𝛽 ≤ 1

este test consiste en contar la cantidad de números aleatorios generados de forma consecutiva entre la

generación de un número que pertenece al intervalo [α,β] y el próximo número generado que vuelve a

pertenecer al intervalo.

Ejemplo:

Si tenemos la secuencia 𝑈𝑖 , 𝑈𝑖+1, 𝑈𝑖+2, … , 𝑈𝑖+𝑔+1

Donde 𝑈𝑖 𝑦 𝑈𝑖+𝑔+1 pertenecen al intervalo [α,β] pero 𝑈𝑖+1, 𝑈𝑖+2, … , 𝑈𝑖+𝑔 no pertencen al intervalo,

entonces g es lo longitud de nuestro “gap”.

Una vez calculados gaps les aplicamos un test Chi cuadrado donde la probabilidad esperada para cada

longitud de intervalo la consideramos como:

𝑝 = 𝛽 − 𝛼 (Probabilidad de un número en caer dentro del intervalo α,β)

𝑝0 = 𝑝

𝑝1 = (1 − 𝑝)𝑝

𝑝2 = (1 − 𝑝)2𝑝

𝑝𝑘 = (1 − 𝑝)𝑘𝑝

Ejemplo

Realizaremos un gap test al generador congruencial lineal con parámetros propuestos en

http://numerical.recipes/.

Page 9: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Código Matlab

cant=100000;

c=1013904223; m=2^32; a=1664525; n1=12345;

alfa=.15; beta=.3;

gaps=zeros(1,10); i=1; gap=0; n1=mod(a*n1+c,m); n1Unif=n1/m; while (i<=cant) if((n1Unif<alfa)|| (n1Unif>=beta)) gap=gap+1; else gaps(1,i)=gap+1; i=i+1; gap=0; end n1=mod(a*n1+c,m); n1Unif=n1/m; end

%Genero las probabilidades esperadas p=beta-alfa; gapMax=max(gaps); expected=zeros(1,gapMax);

for i=1:1:gapMax expected(1,i)=p*((1-p)^(i-1))*cant; end

xlabel('Gaps','FontSize',9,'FontName','Arial'); ylabel('Cantidad de gaps','FontSize',9,'FontName','Arial'); hold on;

[counts,centers]=hist(gaps,gapMax); bar((0:1:gapMax-1),counts); hold on;

[h,pValor] = chi2gof(gaps,'Expected',expected,'Alpha',0.01);

Page 10: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Histograma de la distribución de las longitudes de gaps para 100.000 gaps generados

Para un nivel de significación del 1%, obtenemos que no podemos rechazar la hipótesis nula (h=0).

Test Espectrales

Los generadores congruenciales lineales tienen la particularidad que al utilizar números consecutivos

generados como coordinadas y graficar estos puntos en 2 dimensiones o más, forman líneas, planos e

hiperplanos.

Knuth afirma que generadores que pasan los test estadísticos pueden fallar en este tipo de test.

Realizamos un test gráfico, utilizando los números aleatorios, utilizando el GCL que venimos

utilizando, como coordenadas en un gráfico 2D y 3D y veremos cómo se distribuyen los números

generados.

Page 11: Pruebas de hipótesis - materias.fi.uba.armaterias.fi.uba.ar/7526/apuntes/test_estadisticos.pdfSimulación 75.26 – 95.19 Ejemplo 2 Repitamos el ejemplo anterior pero utilizando un

Simulación 75.26 – 95.19

Modifiquemos sólo el módulo del generador congruencial anterior y volvemos a evaluar su

comportamiento.

Fuentes

The art of computer programming Volumen 2 – Donal E. Knuth

COLUMBIA_sheldon-ross-simulation-4th-editionestadistica-manual