Vous êtes sur la page 1sur 12

Apuntes de Analisis de Datos Experimentales

Conrado Mart nez


3 de Octubre de 1995

1. Introduccion

Mediante un ejemplo concreto |el estudio emp rico de la altura de arboles binarios de busqueda|, es nuestra intencion hacer una introduccion a la herramientas para el dise~o de experimentos cuidadosos y el analisis riguroso n de los datos obtenidos. Se trataran brevemente las herramientas estad sticas que fundamentan el dise~o de experimentos y que nos permitiran deducir el grado de exactitud n de los datos obtenidos. Tambien discutiremos las tecnicas mas habituales para la extraccion de informacion sobre el orden de magnitud de la funcion representada por un conjunto de datos experimentales y para ajustar una curva que describa dichos datos (curve tting ).
~ 2. Diseno experimental

Nuestro objetivo en este ejemplo es estudiar la altura de los arboles binarios de busqueda (BSTs). Sea Hn la variable aleatoria que denota la altura de los BSTs de tama~o n. Nos interesa particularmente la esperanza n p hn = E(Hn ) y la desviacion estandar n = Var(Hn ). En nuestro experimento, consideramos varios tama~os posibles y para n cada uno ellos generamos una muestra aleatoria de N arboles de dicho tama~o (Programa 1). A continuacion, calculamos las alturas respectivas de n los elementos de la muestra, digamos hn ; hn ; : : : ; hnN . Cada una de las hni es una realizacion independente de la variable aleatoria Hn . De hecho, no es necesario ni tan solo generar los arboles aleatorios: generamos sus alturas de manera directa, combinando las de niciones recursivas de la generacion y calculo de la altura (vease el Programa 2).
(1) (2) ( ) ( )

Departament de Llenguatges i Sistemes Informatics.Universitat Politecnica de Catalunya.Pau Gargallo 5, E-08028 Barcelona.E-mail: conrado@goliat.upc.es

Programa 1 Generacion de BSTs aleatorios

#define NIL 0 #define NUEVO_NODO ((bst) malloc(sizeof(nodo))) typedef struct nodo *pnodo; typedef struct nodo { int clave; pnodo izq, der; } typedef pnodo bst; /* bst equivale a un apuntador a un nodo, la raiz */ /* genera un BST aleatorio de talla n */ bst gen_bst_aleatorio(int n) { int i; bst t1, t2, t; if (n == 0) return NIL; i = random(0, n - 1); /* retorna el arbol vacio */

/* obtenemos un numero entre 0 y n - 1 al azar */ t1 = gen_bst_aleatorio(i); t2 = gen_bst_aleatorio(n - 1 - i); t = NUEVO_NODO; /* crea la raiz */ t -> izq = t1; t-> der = t2; return t; }

Programa 2 Generacion de alturas de BSTs aleatorios

/* genera la altura de un BST aleatorio de talla n */ int gen_bst_height(int n) { int i; int h1, h2; if (n == 0) return 0; i = random(0, n - 1); /* obtenemos un numero entre 0 y n - 1 al azar */

h1 = gen_bst_height(i); h2 = gen_bst_height(n - 1 - i); return ((h1 > h2) ? h1 : h2) + 1; /* retorna max(h1,h2) + 1 */ }

Una vez generada una muestra de N alturas de arboles BST aleatorios de un cierto tama~o n se calcula la media aritmetica de la muestra y la varianza n de la muestra (estad sticos muestrales):
hn = sn =
2

P
1

( i) i N hn

P
1

( i) i N (hn

; hn )2
2

i N

Estas dos cantidades son estimadores no sesgados de la esperanza poblacional hn y la varianza poblacional n , respectivamente: E(hn ) = E(Hn ) = hn ; E(sn ) = Var(Hn ) = n: El programa completo (Programa 3) para realizar la generacion de las experiencias elementales, obteniendo las medidas (las alturas, en este caso) y calcular los estad sticos muestrales es muy simple, y no hara falta aplicar tecnicas de dise~o modular. n El programa genera un chero de texto en el que aparece en cada l nea: 1) un tama~o n; 2) la media muestral hn para el tama~o considerado; y 3) n n
2 2 2

h ( i) n N 1

Nhn
2

Programa 3 Generacion de muestras y recogida de datos


#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv ]) { int n, i; /* tama~no en curso, elemento de la muestra en curso */ int N, max_size, step_size; /* tama~no de las muestras, maximo tama~no considerado */ int h; /* altura de un elemento de la muestra */ long sh, s2h; /* acumulado de las alturas, acumulado de los cuadrados de las alturas */ double mean, var; /* media muestral, varianza muestral */ if (argc != 3 && argc != 4) { fprintf(stderr, "Uso: test-altura <tama~no_muestra>"); fprintf(stderr, " <max_tama~no> <paso_tama~no>]\n"); exit(-1); } N = atoi(argv 1]); max_size = atoi(argv 2]); step_size = (argc == 4) ? atoi(argv 3]) : 1; for (n = 1; n <= max_size; n += step_size) { sh = 0; s2h = 0; for (i = 1; i <= N; i++) { h = gen_bst_height(n); sh += h; s2h += h * h; } mean = (double) sh / N; var = (double) (s2h - mean * mean * N) / (N - 1); printf("%d\t%g\t%g\n", n, mean, var); } exit(0); }

5 10 20 30 40 50 60 70 80 90 100
n

5.775 7.625 9.075 9.575 10.35 11.425 11.7 12.375 12.6 13.5

hn

0.742949 2.24038 1.91731 1.07115 1.77179 2.09679 1.54872 3.31731 2.4 2.30769

s2 n

Tabla 1: Medias y varianzas muestrales la varianza muestral sn . Un ejemplo t pico de salida del programa anterior (ejecutando test-altura 40 100) se recoge en la Tabla 1 (solo se dan los resultados para tama~os multiplo de 10). n
2

3. Analisis de los resultados

El Teorema Central del L mite nos proporciona el fundamento basico para inferir informacion util sobre la \poblacion" (la variable aleatoria Hn) a partir de los datos experimentales obtenidos. Si N ! 1 |a efectos practicos, basta que N > 30| la variable aleatoria hn converge en ley hacia una normal cuya p media es hn y cuya varianza es n= N . Teorema 3.1 Sea hn = E(Hn ), n = Var(Hn ) y sea hn la media muestral para muestras con N elementos. Entonces,
2

hn

n=

phn N (0; 1); para N ! 1.


N

(1)

Como hn pertenece al intervalo hn si y solo si hn pertenece al intervalo hn , cualquiera que sea , podemos calcular intervalos de con anza para hn = E(Hn ) aplocando el Teorema Central anteriormente enunciado. Supongamos que queremos calcular un intervalo al que E(Hn) pertenece con probabilidad 0:95 (en el argot, un intervalo de con anza al 95%). Consultando las tablas estad sticas encontramos que el area de la distribucion normal entre z = 1:96 y z = 1:96 es 0:95, y por lo tanto: Pr 1:96 < hn phn < 1:96 = 0:95
n=

6 10 20 30 40 50 60 70 80 90 100
n

5.63871, 5.91129] 7.38834, 7.86166] 8.85606, 9.29394] 9.41136, 9.73864] 10.1395, 10.5605] 11.196, 11.654] 11.5032, 11.8968] 12.087, 12.663] 12.3551, 12.8449] 13.2598, 13.7402]

hn

Tabla 2: Intervalos de con anza al 95% para hn Luego, Pr hn 1:96 p n < hn < hn + 1:96 p n
N N

= 0:95

El intervalo de con anza al 95% es, por lo tanto, hn 1:96 n = N . Un peque~o programa nos permite calcular los intervalos de con anza a n partir de la salida generada por test-altura. As obtendremos algo parecido a lo mostrado en la Tabla 2. Observese que en este caso concreto, y para n 40, la incertidumbre sobre los resultados obtenidos es inferior al 1%, donde la incertidumbre se de ne como el cociente entre la longitud del intervalo de con anza y el valor medio correspondiente. Esta misma informacion puede recogerse de manera gra ca, mas facil de comprender, aunque menos precisa. Con la representacion gra ca, resulta mucho mas sencillo derivar conclusiones (cuando menos cualitativas) sobre los experimentos realizados y lanzar entonces una hipotesis mas o menos acertada sobre el comportamiento de la variable estudiada. En la Figura 1 tenemos la representacion gra ca de hn como funcion de n. Para cada punto, una barra vertical muestra el intervalo de con anza entorno al valor obtenido experimentalmente. El tama~o de cada muestra es n N = 100 y solo se han representado los valores para n = 200; 400; : : : ; 10000. En la siguiente gura (Figura 2) se han unido los puntos mediante segmentos. En esta gura, N = 20 y n = 1000; 2000; : : : ; 10 . Con frecuencia, el analisis teorico nos proporciona pistas acerca del comportamiento investigado, de modo que lo que se pretende es realizar una veri cacion experimental de las predicciones teoricas. En otras ocasiones, sin
5

7
32

30

28

26

24

22

20

18

16

14 0 1000 2000 3000 4000 5000 6000 7000 8000 9000


4

10000

Figura 1: Gra ca de hn; N = 100, n = 200::10


42 40 38 36 34 32 30 28 26 24 22 20 0 10 20 30 40 50 60 70 80
3

90
5

100

Figura 2: Gra ca de hn ; N = 20, n = 10 ::10

8 embargo, solo tenemos a nuestra disposicion los resultados experimentales. La primera pregunta a responder es entonces cual es el orden de magnitud o crecimiento de la variable estudiada, en nuestro caso hn . El analisis teorico demuestra que hn = E(Hn ) = (log n), pero asumamos momentaneamente que este dato nos es desconocido. Puesto que para toda n, log n Hn n, se sigue que hn = O(n) y hn = (log n). No obstante, un examen super cial revela que probablemente hn = o(n). Una hipotesis razonable ser a que hn = (n ) con 0 < < 1. Digamos que hn = bna + o(na). Tomando logaritmos ,
2 1

log hn = a log n + log b + o(log n): Y dividiendo ambos lados de la ecuacion por log n log hn = a + o(1): log n En particular, si calculamos los cocientes log hn= log n para valores crecientes de n deber amos observar que su valor converge a un cierto valor a > 0. No parece ser as , por lo que en nuestro siguiente paso tratar amos de veri car si hn = (log n). Esta hipotesis que cuadra correctamente con los datos obtenidos y que resulta ser una eleccion mas obvia y razonable a priori que otras alternativas mas o menos exoticas (por ejemplo, (log n) = log log n). Si hn = a log n + o(log n), los cocientes hn = log n convergeran hacia el valor a. Y en efecto, este cociente converge en torno al valor 3:5. En la practica, la convergencia es muy lenta y a no es ni tan solo aproximadamente 3.5; pero la conclusion es que los cocientes hn= log n no crecen con n, tal como ocurrir a si hn = !(log n).
3

4. Ajuste de curvas

Nuestro ultimo paso va a consistir en hallar una curva que se ajuste razonablemente bien a los datos experimentales que hemos obtenido. De lo expuesto anteriormente se desprende que hn = a log n + o(log n) para alguna constante a > 0 (cosa por otra parte con rmada teoricamente). Postulemos que, de hecho, hn = a log n + b para ciertas constantes a y b. Es posible que hn contuviera terminos no constantes y de orden inferior al logar tmico (p.e. log log n), pero en la practica y para valores de n que no sean gigantescos, podemos asimilar dichos terminos a una constante sin cometer un error apreciable.
1

log n denota el logaritmo natural de n, i.e. log n = loge n.

9 Cuales son los valores de a y b, a partir de los datos obtenidos experimentalmente? Vamos a desviarnos del curso principal de la discusion y tratar de un modo general el problema del ajuste de curvas. Sea f(xi; yi)gi ;:::;M un conjunto de puntos en el plano . Proponemos que yi (xi) para una cierta funcion
2 =1

(x) = a + a (x) + + ak k (x); donde las funciones (x); (x); : : : ; k (x) forman una base; esto es, no podemos expresar j (x) como combinacion lineal de otras 0s. Por ejemplo, no tiene sentido de nir (x) = (x) = ax + b log x + c; por contra debemos proponer (x) = a (x) + b (x) + c, siendo (x) = x y (x) = log x. El problema es pues determinar los valores de las constantes a ; a ; : : : ; ak de manera que el ajuste entre la curva y los puntos f(xi; yi)g sea \bueno". Para cuanti car la \bondad" del ajuste, los coe cientes ai se elegiran de modo que se minimice el error cuadratico medio (ECM):
0 1 1 1 2 1 2 1 2 1 2 2 0 1

ECM =

i=M X i=1

(yi

(xi))

Es decir,
@ECM = 0; @aj
iX =M

j = 0; : : : ; k:
0

O lo que es lo mismo, y con el convenio (x) = 1 2


i=1 iX =M i=1

(yi (yi

@ (xi)) @a

j x=xi

=0

(xi)) j (xi) = 0
iX =M i=1

i=M X i=1

yi j (xi )

(xi) j (xi) = 0
i=M X i=1

Por lo tanto,
i=M X i=1
2

yi j (xi ) = a0

i=M X i=1

j (xi ) + a

i=M X i=1
1

(xi) j (xi) + : : : ak

k (xi ) j (xi );

j = 0; : : : ; k

En la mayor a de casos que nos encontraremos en el analisis de algoritmos y estructuras de datos tendremos xi = i.

10 Este sistema de ecuaciones |hay una ecuacion para cada valor de j | puede expresarse de manera compacta en notacion matricial. Sea = ( rs ) una matriz (k + 1) (k + 1) cuyos coe cientes vienen dados por
rs
0 1

iX =M i=1

r (xi ) s (xi );

0 r; s k:

Sea ~ = (a ; a ; : : : ; ak ), esto es, el vector de los coe cientes buscados. Finala mente, sea ~ = (b ; : : : ; bk ) un vector (k + 1)-dimensional donde cada bj se b de ne
0

bj =

i=M X i=1

yi j (xi ):

Entonces, ~ es la solucion del sistema ~ = ~ . a a b Un caso particular importante es el de la regresion lineal. Tenemos (x) = a + a x y el sistema de ecuaciones es entonces P P P a Pi xi + a P i xi = Pi xi yi a i xi + a i 1 = i yi Las soluciones de este sencillo sistema 2 2 son
0 1 1 2 0 1 0

a1 = a0 =

M
P

P
1

yi M

( xiP )
2

xi

yi

a1

xi : M

xiyi ; x2 i

Para el caso de la altura, tenemos (x) = a log x + b (i.e. a = b; a = a, (x) = log x). Por otra parte, xn = n y yn = hn . Por lo tanto, P P P a Pn log n + bP n log n = Pn hn log n a n log n + b n 1 = n hn Resolviendo el sistema para los datos mostrados en la Figura 2 obtenemos a = 4:063959913 y b = 6:226863673. La Figura 3 muestra nuevamente los datos (l nea continua) y la curva ajustada (l nea discontinua). El ajuste es efectivamente razonable. Y todo ello a su vez concuerda hasta cierto punto con las predicciones teoricas, que por n revelamos:
0 1 1 2

La Figura 4 incluye los datos experimentales, la curva ajustada y el valor teorico hn 4:311 log n. Aunque aparentemente la discrepancia entre la prediccion teorica y la experimental es grande, hay que tener presente:

h lim lognn = 4:311 : : : n!1

11
42 40 38 36 34 32 30 28 26 24 22 20 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000

Figura 3: Gra ca de la curva ajustada hn 4:06 log n 6:23


50

45

40

35

30

25

20 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000

Figura 4: Gra ca de la curva ajustada y curva teorica

12 que los valores de n muestreados no han sido extremadamente altos (n 10 ); que no se conoce una estimacion precisa para el rango de validez de la prediccion teorica; que el tama~o de las muestras era relativamente peque~o (N = 20, n n frente a los 4n arboles binarios diferentes de tama~o n); n que hay errores de experimentacion (debidos en principio al tama~o n muestral) y de precision de calculo; y que el error relativo entre la curva ajustada y la prediccion teorica esta de todos modos por debajo del 6% (notese que (4:311 4:06)=4:311 = 0:05822 : : : )
5

Vous aimerez peut-être aussi