BLOQUE 1 DISTRIBUCIONES DE PROBABILIDAD COMUNES EN ECONOMÍA Manipular y trabajar con las distribuciones más comunes que encontramos en la investigación o trabajos con variables económicas son los principales objetivos de este bloque. Para ello la forma de trabajar será directamente desde el propio interface de MATLAB o de OCTAVE. Ambos tienen unas funciones construidas que nos permiten obtener para cada distribución de interés su correspondiente CDF (función de distribución acumulada), PDF (función de distribución de probabilidad), rnd (genererador de número aleatrios), y la inversa de la correspondiente CDF, invCDF. Un listado completo de las distribuciones de probabilidad construidas se puede encontrar en los manuales de ayuda del software. Nosotros nos centraremos específicamente en las siguientes: Binomial Poisson Uniforme Normal Lognormal t-student F-Snedecor Gamma Chi-square Beta Para recordar en qué consisten se recomienda usar cualquier manual de grado (o equivalente). También en el manual del software podemos encontrar una descripción de la distribución. Para nosotros será importante también saber la sintaxis de cada una de ellas, a tal efecto haremos uso del comando de ayuda: help name Así, por ejemplo, si escribimos help binocdf help binopdf help binornd help binoinv obtendremos ayuda relativa a las cuatro respectivas facilidades previstas para una binomial. Por otra parte, y para afianzar la interacción con el software, en los ejercicios proponemos trabajar con cada una de estas distribuciones. Será útil poder representar gráficamente distintos aspectos. A tal efecto es necesario familiarizarse con los comandos plot y subplot, a los que accedemos a su sintaxis a través de la ayuda: help plot help subplot EJERCICIOS 1.- Para cada una de las distribuciones comentadas realizar un gráfico ilustrativo de la PDF y la CDF. Elije valores comunes para los parámetros que definen a cada distribución: Por ejemplo, en el caso de la Normal, lo habitual es tomar N(0,1). A continuación está el código necesario para generar una uniforme: Si alguna orden no te resulta conocida, simplemente usa el comando help. %% First get the domain over which we will % evaluate the functions. x = -1:.1:11; % Now get the probability density function % values at x. pdf = unifpdf(x,0,10); % Now get the cdf. cdf = unifcdf(x,0,10); % Do the plots. subplot(1,2,1),plot(x,pdf) title('PDF') xlabel('X'),ylabel('f(X)') axis([-1 11 0 0.2]) axis square subplot(1,2,2),plot(x,cdf) title('CDF') xlabel('X'),ylabel('F(X)') axis([-1 11 0 1.1]) axis square 2.- Encuentra la altura de la una función de probabilidad de distribución de una Normal para mu, con las siguientes desviaciones típicas: 0.5, 1.0, 2.0. ¿Qué sucede con la altura a medida que aumenta la desviación típica? ¿Qué sucede si ahora variamos la media, mu? ** Utiliza las normas establecidas para la correcta entrega de ejercicios. Para que los ejercicios sean evaluados y formen parte de la calificación final deben entregarse en tiempo y forma. MUESTREO COMPUTACIONAL En este apartado vamos a trabajar sobre conceptos muestrales y poblacionales que, en caso de que el lector no esté familiarizado con ellos, deberían ser repasados de cualquier manual. La inferencia estadística es una colección de técnicas y métodos que nos ayudan a medir y controlar el grado de incertidumbre cuando el investigador pretende arrojar una información sobre una característica de una población objetivo (por ejemplo, la desviación típica del nivel de ingresos en una zona geográfica determinada). Cuando no es realista observar a ‘toda’ la población (tal vez la población es desmesuradamente grande; tal vez hay elementos de la población que todavía no existen), pero sí parte de la misma, el investigador puede obtener información sobre el objetivo poblacional a partir de la información muestral. Esto se suele hacer realizando un muestreo aleatorio en el que todos los elementos de la población tienen la misma posibilidad de ser seleccionados para formar parte de la muestra. En no pocas ocasiones la inferencia estadística usa la muestra para estimar o hacer juicios sobre parámetros poblacionales (una medida descriptiva de una población o distribución de variables aleatorias). Por ejemplo, la media aritmética, la desviación estándar, cuantiles, coeficientes de correlación, etc. Un estadístico es una función de variables aleatorias observadas en el muestreo que no contiene información desconocida. Los estadísticos (estas funciones) nos sirven para dar estimaciones puntuales de parámetros poblacional, para obtener un intervalo de confianza para dicho parámetro, y también como test (contraste) en los contrastes de hipótesis. Tanto MATLAB como OCTAVE tienen unas librerías de estadísticos que suelen aparecer con mucha frecuencia. Son los siguientes (utiliza el comando help para aprender exactamente el contenido de los argumentos y las posibilidades de su utilización): Media muestral Varianza muestral Apuntamiento y curtosis Covarianza Coeficiente de correlación mean(x,dim) var(x) skewness, kurtosis (ver help) cov(x,y) corrcoef(x,y) Hemos comentando anteriormente que en ocasiones los estadísticos de una muestra aleatoria son utilizados como estimadores puntuales de un parámetro poblacional (por ejemplo, la media muestral se utiliza para estimar la media poblacional). Obviamente al estar usando una muestra no es realista considerar que el estadístico obtenido de la misma coincida con el valor del parámetro poblacional. Es decir, hay incertidumbre y error en torno a la estimación del parámetro. La distribución muestral es la distribución de probabilidad subyacente para el estadístico en cuestión, y entonces debemos entender el estadístico como una variable aleatoria. Conocer la distribución muestral de un estadístico nos permite realizar tests de hipótesis y calcular intervalos de confianza. Para algunos estadísticos la distribución muestral (del estadístico) es conocida (por ejemplo, la distribución de la media muestral cuando la variable se distribuye como una normal. En otros muchos casos no conocemos la distribución de nuestro estadístico de interés, en tales casos los métodos de simulación de Monte Carlo o métodos de bootstrap son necesario para obtener (aproximar) la distribución muestral. Los Teoremas Centrales del Límite y las Leyes de los Grandes Números juegan un papel decisivo en el análisis y uso de las distribuciones muestrales. Los ejercicios de este apartado están orientados a comprender ambos resultados. Para ello utilizaremos por técnicas de Monte Carlo. Ahora es el momento de hacer el primer ejercicio de este bloque. Cuando queremos conocer algún parámetro de la función de distribución de probabilidad poblacional, lo que hacemos es realizar una estimación del mismo utilizando un estadístico al que llamamos estimador. Luego el estimador es una variable aleatoria que dependiendo de la muestra arrojará distintos valores. Existen varias técnicas de estimación (método de los momentos, máxima verosimilitud, entre otras), e igualmente hay criterios que nos permiten evaluar los posibles estimadores: sesgo, error cuadrático medio, eficiencia, el error estándar, etc. Estos cuatro conceptos es necesario que se manejen con soltura. En estas notas sólo comentaré brevemente el error estándar de un estimador (los restante 3 deben ser revisado en un manual adecuado). El error estándar asociado a un estimador T es una medida de precisión de nuestro estimador de interés T. Se define como la desviación estándar de su distribución muestral: Por ejemplo, el estimador de la media poblacional es la media muestral. La varianza del estimador de la media es Si la desviación estándar de la población de interés es desconocida, podemos sustituirla por un estimador de la misma, S, en ese caso tendríamos entonces el error estándar estimado. Los estimadores máximo verosímiles (MV) son bastante habituales. Por este motivo el ejercicio 4 (segundo de este bloque) nos va a permitir trabajar con ellos computacionalmente. Para ello recordemos que un estimador MV es aquél valor del parámetro(s) que maximiza la función de verosimilitud de la muestra. La función de verosimilitud de una muestra aleatoria de tamaño n de una función de densidad es la función de probabilidad conjunta: Es decir, nos proporciona la probabilidad de que las variables aleatorias tomen los valores particulares Es función de un parámetro (o vector de parámetros) desconocido. En caso de tener una muestra de variable aleatorias independientes, idénticamente distribuidas (iid), la función de verosimilitud se puede escribir: que es el producto de funciones de densidad individuales evaluadas en cada punto muestral. La técnica MV consiste en encontrar el valor que maximiza la función de verosimilitud, lo cual implica (en bastantes ocasiones) igualar la derivada de o o bien el logaritmo de dicha función a 0, Cuando se trata de un vector de parámetros, lo que hacemos es toma derivadas parciales e igualarlas cero y resolver las ecuaciones pertinentes. Su resolución nos llevaría a soluciones cerradas. EJERCICIOS 3.- En la práctica econométrica el investigador se suele encontrar con estimadores que no tienen una distribución exacta y por lo tanto el análisis asintótico es el marco natural para hacer inferencia estadística. La teoría asintótica solo proporciona aproximaciones a la distribución real cuando el número de observaciones es finito, y por tanto es fundamental saber si las LGN y los TCL son aplicables para un estimador determinado. Este ejercicio nos permite simular ambos términos. 3.1 Computa la media n = 5 variables aleatoria normales estándar. Repite esto 1000 veces, y guarda la media de cada iteración 3.2 Repite el paso 1 para n = 10, 25, 50, 100 y 500. 3.3 Utilizando las 1000 medias estimadas de cada uno de los 6 tamaños muestrales, dibújalos en una sola figura usando el comando subplot en una maya de 3 por 2; usa también title para poner una etiqueta a cada gráfico. Deberías observar que la distribución colapsa y que las medias calculadas usando 1000 iteraciones están muy próximas a 0. 3.4 Recuerda que el TCL se construye con y por tanto para verificar que se cumple el TCL en las medias simuladas es necesario escalarlas por raíz de n para cada tamaño muestral. Dibuja las medias adecuadamente escaladas en un gráfico de 3 por 2 (usa de nuevo subplot). 3.5 Observa que hasta ahora hemos realizado el ejercicio a partir de una distribución exactamente normal dado que la media aritmética es una combinación lineal de variables normales y por tanto también la media tiene una distribución normal. El TCL y la LGN son mucho más generales. Repite los pasos 1 a 4 reemplazando las distribuciones normales por variables aleatorias cuya media y varianza son 1 y 2, respectivamente. 4.- Las expresiones cerradas de estimadores máximo verosímiles son más la excepción que la regla, en muchas aplicaciones son necesarios métodos numéricos como la optimización no lineal que deben usarse. Este ejercicio nos permite trabajar algunos aspecto de la estimación MV. 4.1 Descarga el archivo de datos FTSE100. 4.2 ¿Cuáles son los estimadores MV de la media y la varianza (expresión-cerrada) si asumimos que los datos son iid normales. 4.3 Supongamos que no sabemos cuáles son los estimadores MV de la normal, pero sabemos que la función de verosimilitud para n observaciones iid es Escribe la función log-MV para n observaciones, y escribe una función de MATLAB u OCTAVE que tenga las siguientes líneas principales: function [LL] = normal_loglikelihood(parameters, y) mu = parameters(1); sigma2 = exp(parameters(2)); y que arroje el negative del logaritmo de la MV. Dicha función no es más que la el logMV multiplicada por -1, por tanto lo que haremos será minimizar –f. 4.4 Utiliza normal_loglikelihood(parameters, y) para calcular el estimador MV utilizando fminunc. Comienza la optimización usando la solución analítica y al menos alguna otra distinta. 4.5 No todos los estimadores ML nos conducen a formas cerradas. Un ejemplo muy básico es la t-Student, el cual tiene la siguiente PDF Escribe el logaritmo de la verosimilitud para n observaciones, considerando que la letra griega gamma es relativa a dicha función de distribución. Utiliza para ello una función que comience del siguiente modo function [LL] = standarized_t_loglikelihood(parameters, y) mu = parameters(1); sigma2 = exp(parameters(2)); nu = exp(parameters(3))+2.01; y que arroje el valor negativo del log-MV. 4.6 Utiliza esta última función para estimar los parámetros de una t-Student usando fminunc. ANÁLISIS GRÁFICO Las posibilidades gráficas de OCTAVE o MATLAB son muy extensas. Nos vamos a concentrar en algunas utilidades interesantes a los efectos de este curso. A tal efecto, el comando help será la herramienta a utilizar para conocer las posibilidades de los comandos, y la destreza en su uso la alcanzaremos en la realización práctica de los ejercicios propuestos al efecto. HIST La instrucción hist nos permite generar histogramas. El comando help nos ayuda a comprender su alcance. El siguiente ejemplo es ilustrativo de su utilización para un vector de datos que puedes encontrar en el directorio de datos de curso: load forearm subplot(1,2,1) % The hist function optionally returns the % bin centers and frequencies. [n,x] = hist(forearm); % Plot and use the argument of width=1 % to produce bars that touch. bar(x,n,1); axis square title('Frequency Histogram') % Now create a relative frequency histogram. % Divide each box by the total number of points. subplot(1,2,2) bar(x,n/140,1) title('Relative Frequency Histogram') axis square Los comandos básicos son hist y bar. También se usan otras utilidades como axis, title y subplot. QQ-PLOTS También puede ser interesante comparar dos distribuciones, dos muestras, o una muestra y una distribución, etc. Básicamente consiste en considerar como punto a los cuantiles muestrales, y dibujar los puntos (cuantiles) de un conjunto frente a otro. Son especialmente útiles porque cuando comparamos ambos conjuntos de datos no es necesario que tengan ni la misma escala ni la misma localización. De este modo si dos conjuntos de datos de interés provienen de la misma distribución, entonces esperaríamos que todos los puntos (cuantiles) se alinearan sobre una línea recta. La instrucción qqplot nos permite comparar, en términos de cuantiles, un vector de datos con una distribución predeterminada. Si lo que queremos es comparar dos vectores de datos entonces simplemente tenemos que seguir los pasos del ejercicio 5.2. BOX-PLOT El último tipo de gráfico unidimensional que consideramos es el gráfico de cajas. Se necesitan para su construcción de 5 valores obtenidos del conjunto de datos disponibles. Los cuartiles muestrales (q0.25, q0.5, q0.75), el mínimo valor muestral y el máximo. El recorrido intercuartílico lo obtenemos IQR = q0.75 – q0.25. A partir de IQR calculamos dos extremos o límites: LL = q0.25 – 1.5 IQR, UL = q0.75 + 1.5 IQR. Por construcción podemos intuir que las observaciones que caigan fuera de estos límites son posible outliers (valores, por algún motivo, extraños). También podría intuirse que estos puntos extremos provienen naturalmente de la distribución generadora del proceso. En cualquiera de los casos, pueden ser motivo de estudio detallado posteriormente. Los valores adyacentes son los extremos (superior e inferior) que están entre los límites máximo y mínimo. En caso de que no existan potenciales outliers, serían el máximo y el mínimo, respectivamente. Con estos datos el gráfico de cajas se configura dibujando 3 líneas horizontales en cada uno de los tres cuartiles, y se completa la caja dibujando las dos líneas verticales paralelas que determinan la caja. Entonces se extiende una línea desde el primer cuartil al valor adyacente mínimo y se hace lo mismo para el tercer cuartil y el mayor valor adyacente. Finalmente cualquier posible outlier se presenta con un asterisco. El siguiente gráfico lo ilustra La instrucción en OCTAVE y MATLAB es boxplot. Acude a la ayuda para ver cómo utilizarla. El ejercicio 3 de este bloque requiere su correcto manejo. SCATTER PLOTS Utilizamos este tipo de gráficos cuando queremos visualizar datos bivariantes que posiblemente guarden cierta relación. Un gráfico scatter representa las parejas ordenas como puntos. Suele servir para ver, en una fase muy inicial, cómo están relacionadas dos variables (por ejemplo, si la relación es aparentemente directa o inversa, y/o si es lineal o no-lineal). Hay dos formas de acceder a la misma. Podemos acceder por el comando plot o bien por el comando scatter, que nos permitirá con argumentos de función opcionales modificar los marcadores de la parejas. El ejercicio 5.4 nos permite usar ambas funciones, a la vez que introducimos cómo trabajar con funciones normales multivariantes. GRÁFICOS DE SUPERFICIES En ocasiones conocemos una determinada función bivariante z = f(x,y), en tales casos podemos generarla, y luego dibujar los valores de z como una superficie. Las funciones mesh y surf se encargan de ello. El ejercicio 5.5 trabaja con surf comandos. Acude a la ayuda para ver la sintaxis de los mismos. EJERCICIOS 5.1 Comprobar cómo se ajustan –visualmente- los datos ‘forearm’ a una normal con media y varianzas desconocidas. Para ello seguimos los siguientes pasos: Obtener la estimación de la media y varianza Obtener la función de densidad de probabilidad basada en dichos parámetros (ayuda: usar linspace y norm) Obtener la información necesaria para el histograma (comando hist) Obtener la anchura de los bins del histograma Dibujar el histograma de densidad con la expresión f = v(k)/nh, donde v(k) indica el número de puntos que caen en el bin k-ésimo, y h representa la anchura de los bin(s). (usa la función bar y plot). El resultado final debe ser este: 5.2 Sigue lo siguientes pasos para construir un gráfico de cuantiles-cuantiles para dos vectores de datos x,y utilizando la función sort. % Consideramos dos tamaños muestrales distintos, por ejemplo x = randn(1,n); y = randn(1,m); % Obtener el estadístico de orden para y, usando sort. ys = sort(y); % Hayar los cuantiles asociados usando x. % Probabilidades para los cuantiles: p = ((1:m) - 0.5)/m; xs = quantile(x,p); % Construye el gráfico de x sys. % Pon una línea de referencia usando para ello el primer y el tercer cuartil de cada conjunto de datos. Usa para ello la instrucción quantile. Después utiliza la función polyfit para localizar la recta que pasa por dichos puntos. Mira cómo se utiliza dicha función con el comando help. % Añade una línea de referencia a la figura usando polyval para evaluar el polinomio de orden 1 (recta obtenida con polyfit) para los valores de xs. yhat = polyval(pol,xs); %explica en comentario qué significa yhat? hold on plot(xs,yhat,'k') xlabel('Sample Quantiles - X'), ylabel('Sorted Y Values') hold off El resultado esperado debe ser algo parecido a esto. 5.3 Genera una muestra de 100 datos para cada una de las distribuciones siguientes: uniforme, normal estándar, y exponencial. Haz un gráfico de cajas para las tres muestras. ¿Qué diferencia hay entre los valores adyacentes de una muestra proveniente de una distribución simétrica y de no-simétrica? ¿Cómo serán los lados de las cajas?. Si el recorrido intercuartílico es pequeño, significa que los datos están concentrados entorno a la mediana. ¿Cómo se aprecia este comentario en el gráfico representado? 5.4 El objetivo de este ejercicio es generar una muestra de una función de distribución normal bivariante. Necesitamos tener una matriz de varianzas y covarianzas, y un vector de medias. % Crear una matriz de covarianzas. vmat = [2, 1.5; 1.5, 9]; % Vector de Medias (2,3). mu = [2 3]; % Obtener 2 variables normales estándar. td = randn(250,2); % Usamos la transformación x=z*R+mu que nos permite obtener % una Normal de medias mu, y covarianzas sigma. Para ello %necesitamos factorizar sigma a fin de que R’R = sigma. Cholesky %es una solución: help chol. R = chol(vmat); data = td*R+ones(250,1)*mu; % Hacer el scatterplot con la function plot. plot(data(:,1),data(:,2),'x') axis equal % Ahora con scatter. % Usamos marcadores rellenos. scatter(data(:,1),data(:,2),'filled') axis equal box on El resultado es el siguiente 5.5 Vamos a generar la superficie de una normal bivariante estándar, es decir con vector de medias cero, y varianzas 1, y covarianzas cero. % Creamos el dominio sobre el que vamos a dibujar (hacer un help % con meshgrid. [x,y] = meshgrid(-3:.1:3,-3:.1:3); % Evaluamos z para f(x,y) bivariante normal estándar. z = (1/(2*pi))*exp(-0.5*(x.^2+y.^2)); % Dibujamos la superficie. surf(x,y,z) El resultado debería ser la habitual campana gausiana