2  Obtención de estimadores

En esta sección se hará una revisión de algunos temas relacionados con la estimación puntual de parámetros, específicamente los relacionados con la obtención de estimadores mediante el método de máxima verosimilitud y de otros métodos.

2.1 Preliminares

El objetivo de la estimación puntual de parámetros es obtener, a partir de la muestra, un valor que pueda ser una “buena aproximación” de un parámetro (o una función del mismo).

Estimador puntual: Un estimador puntual de un parámetro \theta es una función de una muestra aleatoria: \mathrm{T} \left( X_1, \dots, X_n \right) que es utilizada para estimar el parámetro \theta.

Estimación puntual: Una estimación puntual \hat{\theta} de un parámetro \theta es el valor que toma un estimador puntual dada una realización de la muestra aleatoria: \hat{\theta} = \mathrm{T} \left( x_1, \dots, x_n \right).

Definición 2.1 Una estadística T = \mathrm{T} \left( X_1, \dots, X_n \right) cuyos valores son utilizados para estimar una función del parámetro \mathrm{g}(\theta) es un estimador de \mathrm{g}(\theta) y las realizaciones del estimador se llaman estimaciones.

¿Cómo encuentro una función apropiada de la muestra aleatoria para que me sea de utilidad en la estimación de parámetros?

En esta sección se hará una revisión de algunos métodos para obtener estimadores puntuales.

2.2 Método de máxima verosimilitud

La función de verosimilitud es la función de densidad conjunta de la muestra aleatoria X_1, \dots, X_n (de las variables aleatorias X_1, \dots, X_n).

Sea X_1 \dots, X_n una muestra aleatoria de una población con función de densidad (o de masa de probabilidad) \mathrm{f}_X(x; \theta), con \theta \in \Theta, la función de verosimilitud de la muestra aleatoria se denota y corresponde a, \mathrm{f}_{X_1,\dots,X_n}(x_1,\dots,x_n;\theta) = \mathrm{L}\left(\theta; x_1, \dots, x_n \right), donde x_1, \dots, x_n son realizaciones de las variables aleatorias que constituyen la muestra aleatoria, es decir son los valores observados o los datos con que se cuenta, y por ende se asumen conocidos en la función de verosimilitud \mathrm{L}\left(\theta; x_1, \dots, x_n \right).

Ejemplo 2.1 (Función de verosimilitud, distribución Bernoulli) Supongamos que nuestra variable aleatoria de interés X toma únicamente dos valores, uno asociado a “acierto” x=1 y otro a “fracaso” x = 0. Esta variable tendrá una distribución Bernoulli de parámetro \theta = p \in (0,1), asociado a la probabilidad de “acierto”.

En este caso, el objetivo sería encontrar \hat{\theta}_{ML} = T(x_1, \dots, x_n) para una muestra aleatoria X_1, \dots, X_n de una población con X \sim Bern(p = \theta).

En este ejemplo, la función de verosimilitud es \mathrm{L}\left(\theta; x_1, \dots, x_n \right) = \prod_{i=1}^{n} \mathrm{f}_X(x_i; \theta), en donde \mathrm{f}_X \left(x; \theta\right) = \theta^x (1-\theta)^{1-x} \mathrm{I}_{\{0,1\}}(x).

Para poder observar gráficamente la función de verosimilitud, supongamos que tenemos la siguiente realización de la muestra aleatoria: x_1 = 0, x_2 = 1, x_3 = 1, x_4 = 1:

Código
x <- c(0, 1, 1, 1) # Realización de la muestra aleatoria
n <- length(x) # Tamaño de la muestra
### Gráfica funciones de densidad y funciones de verosimilitud
layout(matrix(c(1:(2*n)), 2, n)) # Malla para 2 x n gráficos
p <- seq(0.001, 0.999, by = 0.001) # valores que toma el parámetro p
l <- rep(1, length(p)) # inicializa la variable para la función de verosimilitud
for(i in 1:n){ 
    f <- p^(x[i]) * (1-p)^(1-x[i]) # valores que toma la función de densidad 
    plot(p, f, type="l", ylim=c(0,1), bty="none", yaxt="n", ylab="", 
         xlab=expression(theta), main=bquote(f(x[.(i)]==.(x[i]),theta)))
    l <- l * f # funciones de verosimilitud a medida que incluyo valores x_i
    plot(p, l, type="l", bty="none", yaxt="n", ylab="", xlab=expression(theta), 
         main=bquote(L(theta)==prod(f(x[i],theta),i==1,.(i))))
}

Se dice que el estimador \mathrm{T}(X_1 \dots, X_n) es el estimador máximo-verosímil de \theta (Maximum-Likelihood (ML) Estimator of \theta) si al tomar \theta = \mathrm{T}(x_1 \dots, x_n) \in \Theta se obtiene el supremo de la función de verosimilitud de la muestra aleatoria, es decir, \mathrm{L}\left(\hat{\theta}_{ML}; x_1, \dots, x_n \right) = \sup_{\theta \in \Theta} \mathrm{L}\left(\theta; x_1, \dots, x_n \right), o escrito de otra forma, \hat{\theta}_{ML} = \underset{\theta \in \Theta}{\arg \sup} \; \mathrm{L}\left(\theta; x_1, \dots, x_n \right), donde \hat{\theta}_{ML} = \mathrm{T}(x_1 \dots, x_n) es la estimación máximo-verosímil de \theta.

Por otra parte se tiene que, \begin{aligned} \hat{\theta}_{ML} &= \underset{\theta \in \Theta}{\arg \sup} \; \mathrm{L}\left(\theta; x_1, \dots, x_n \right) \\ &= \underset{\theta \in \Theta}{\arg \sup} \; \mathrm{g} \big( \mathrm{L}\left(\theta; x_1, \dots, x_n \right) \big) \end{aligned} para \mathrm{g}(.) una función monótona creciente.

En particular, \begin{aligned} \hat{\theta}_{ML} &= \underset{\theta \in \Theta}{\arg \sup} \; \mathrm{L}\left(\theta; x_1, \dots, x_n \right) \\ &= \underset{\theta \in \Theta}{\arg \sup} \; \log \big( \mathrm{L}\left(\theta; x_1, \dots, x_n \right) \big) \end{aligned} y teniendo en cuenta que para una muestra aleatoria se tiene que \mathrm{L}\left(\theta; x_1, \dots, x_n \right) = \prod_{i=1}^{n} \mathrm{f}_X \left( x_i, \theta \right), entonces, \begin{aligned} \hat{\theta}_{ML} &= \underset{\theta \in \Theta}{\arg \sup} \; \prod_{i=1}^{n} \mathrm{f}_X \left(x_i, \theta\right) \\ &= \underset{\theta \in \Theta}{\arg \sup} \; \sum_{i=1}^{n} \log \big( \mathrm{f}_X \left(x_i, \theta\right) \big). \end{aligned}

¿Qué hago para encontrar el o los valores de \theta que maximizan la función de verosimilitud (o su logaritmo)?

2.2.1 Una solución analítica

Bajo ciertas condiciones, los valores de \theta que maximizan la función de verosimilitud \mathrm{L}(\theta; x_1, \dots, x_n) son solución de la ecuación, \frac{\partial }{\partial \theta} \mathrm{L}(\theta; x_1, \dots, x_n) = 0. Ademas, esos mismos valores de \theta maximizan el logaritmo de la función de verosimilitud (función de log-verosimilitud) \log \mathrm{L}(\theta; x_1, \dots, x_n), y son solución de la ecuación, \frac{\partial }{\partial \theta} \log \mathrm{L}(\theta; x_1, \dots, x_n) = 0.

Manteniendo el mismo objetivo de encontrar \hat{\theta}_{ML} = \mathrm{T}(x_1 \dots, x_n) cuando X_1 \dots, X_n es una muestra aleatoria de una población con X \sim Bern(p = \theta) \left( \mathrm{f}_X \left(x, \theta\right) = \theta^x (1-\theta)^{1-x} \, \mathrm{I}_{\{0,1\}}(x); 0 < \theta < 1 \right).

La realización de la muestra aleatoria x_1, \dots, x_n es una secuencia de ceros y unos. La función de verosimilitud es, \begin{aligned} \mathrm{L}(\theta; x_1, \dots, x_n) &= \prod_{i=1}^{n} \mathrm{f}_X \left(x_i, \theta\right) \\ &= \prod_{i=1}^{n} \theta^{x_i} (1-\theta)^{1-x_i} \, \mathrm{I}_{\{0,1\}}(x_i) \\ &= \theta^{\sum_{i=1}^{n} x_i} (1-\theta)^{n - \sum_{i=1}^{n} x_i} \, \prod_{i=1}^{n} \mathrm{I}_{\{0,1\}}(x_i) \end{aligned}

La función de log-verosimilitud es, \begin{aligned} \log \mathrm{L}(\theta; x_1, \dots, x_n) &= \sum_{i=1}^{n} \log \left( \mathrm{f}_X \left(x_i, \theta\right) \right) \\ &= \left( \sum_{i=1}^{n} \log \left( \theta^{x_i} (1-\theta)^{1-x_i} \right) \right) \, \prod_{i=1}^{n} \mathrm{I}_{\{0,1\}}(x_i) \\ &= \left( \sum_{i=1}^{n} \left( x_i \log \left( \theta \right) + (1-x_i) \log (1-\theta) \right) \right) \, \prod_{i=1}^{n} \mathrm{I}_{\{0,1\}}(x_i) \\ &= \left( \sum_{i=1}^{n} x_i \log \left( \theta \right) + \left( n - \sum_{i=1}^{n} x_i \right) \log (1-\theta) \right) \, \prod_{i=1}^{n} \mathrm{I}_{\{0,1\}}(x_i) \end{aligned}

Para \prod_{i=1}^{n} \mathrm{I}_{\{0,1\}}(x_i) = 1, con la primera derivada tenemos que, \begin{aligned} \frac{\partial }{\partial \theta} \log \mathrm{L}(\theta; x_1, \dots, x_n) &= 0 \\ \frac{\sum_{i=1}^{n} x_i}{\theta} - \frac{n-\sum_{i=1}^{n} x_i}{1-\theta} &= 0 \\ \frac{\sum_{i=1}^{n} x_i}{\theta} &= \frac{n-\sum_{i=1}^{n} x_i}{1-\theta} \\ \frac{1-\theta}{\theta} &= \frac{n-\sum_{i=1}^{n} x_i}{\sum_{i=1}^{n} x_i} \\ \frac{1}{\theta} - 1 &= \frac{n}{\sum_{i=1}^{n} x_i} - 1 \\ \theta &= \frac{1}{n} \sum_{i=1}^{n} x_i = \bar{x} \\ \end{aligned}

Con la segunda derivada tenemos que, \begin{aligned} \frac{\partial^2 }{\partial \theta^2} \log \mathrm{L}(\theta; x_1, \dots, x_n) &= -\frac{\sum_{i=1}^{n} x_i}{\theta^2} - \frac{n-\sum_{i=1}^{n} x_i}{(1-\theta)^2} < 0 \end{aligned} con lo cual se garantiza que \bar{x} es un máximo del logaritmo de la función de log-verosimilitud (y también de la función de verosimilitud).

Concluimos que, \hat{\theta}_{ML} = \bar{x}.

Teniendo en cuenta que la realización de la muestra aleatoria x_1, \dots, x_n es una secuencia de ceros y unos, entonces \sum_{i=1}^{n} x_i es la cantidad de unos en la muestra y \bar{x} sería la proporción de unos. Es decir, para el caso de la distribución Bernoulli, el estimador máximo-verosímil de \theta es la media muestral \bar{X}, que coincide con la proporción muestral \hat{P}. Para X \sim Bern(p = \theta), \hat{\theta}_{ML} = \bar{x} = \hat{p}.

Finalmente, es bueno recordar que X_1, \dots, X_n es una muestra aleatoria únicamente si las observaciones o realizaciones de dichas variables aleatorias se obtuvieron mediante un adecuado muestreo (lo cual garantiza lo independiente identicamente distribuido de la muestra aleatoria).

Ejercicio 2.1 (Distribución binomial) Sabemos que \sum_{i=1}^{n} X_i \sim Bin(n,p=\theta). Por lo tanto, dada una muestra aleatoria Y_1 de tamaño 1 de una población con Y \sim Bin(n,p=\theta), entonces, suponiendo que n (“número de ensayos”) es conocido, verifique que el estimador máximo verosímil del parámetro \theta (“probabilidad de éxito”) es \frac{y_1}{n}.

Suponiendo que n es conocido, ¿cuál sería el estimador de máximo verosimilitud del parámetro \theta cuando Y_1, \dots, Y_m es una muestra aleatoria de tamaño m de una población con Y \sim Bin(n,p=\theta) \left( \mathrm{f}_Y \left(y, \theta\right) = \binom{n}{y} \theta^y (1-\theta)^{n-y} \, \mathrm{I}_{\{0,1,\dots,n\}}(y) \right)?

2.2.2 Otro tipo de solución analítica

Una variable aleatoria X con distribución hipergeométrica X \sim Hg(n, N, R) se puede visualizar o pensar como el número de individuos que tienen cierta característica de interés (“aciertos”), de n que fueron seleccionados simultáneamente o uno a uno sin reemplazamiento. Esta selección se realiza sobre una población finita de tamaño N, en donde R de los N individuos tienen la característica de interés (y por ende, N-R no la tienen). La función de densidad de X estaría dada por \mathrm{f}_X \left(x; n, N, R\right) = \frac{\binom{R}{x}\binom{N - R}{n - x}}{\binom{N}{n}} para x \in \mathbb{Z} tal que \max\{0, n - (N - R)\} \leq x \leq \min\{n, R\} (o lo que es lo mismo, para x \in \mathbb{Z} tal que \mathrm{I}_{\{\max\{0, n - (N - R)\},\dots,\min\{n, R\}\}}(x) = 1) y donde n, N, R \in \mathbb{Z}^+.

El que cada individuo seleccionado tenga o no la característica de interés se asocia a una variable aleatoria con distribución Bernoulli, pero en este caso la selección de los n individuos no cumple el criterio de independencia que se exige en el caso de una distribución Binomial. Si X_1, \dots, X_n son variables aleatorias idénticamente distribuidas con X_i \sim Bern\left( p=\frac{R}{N} \right) y sus realizaciones se tomaron simultáneamente, o uno a uno sin reemplazamiento, de una población finita de tamaño N, entonces \sum_{i=1}^{m} X_i = Y \sim Hg(n, N, R). De lo anterior, estimar alguno de los parámetros n, N o R a partir de las variables X_1, \dots, X_n mencionadas es equivalente a estimar dichos parámetros a partir de una muestra aleatoria Y_1 de tamaño 1 de una población con Y \sim Hg(n, N, R).

2.2.2.1 Estimación del parámetro N

Sea Y_1 (o los X_1, \dots, X_n equivalentes descritos anteriormente) y supongamos que n y R son conocidos, entonces el único parámetro a estimar sería \theta = N \left( \mathrm{f}_Y \left(y, \theta\right) = \frac{\binom{R}{y} \binom{\theta - R}{n - y}}{\binom{\theta}{n}} \mathrm{I}_{\{\max\{0, n - (\theta - R)\},\dots,\min\{n, R\}\}}(y) \right). Es decir que en este caso tendríamos conocimiento de que un cierto número de individuos tienen una característica de interés (y_1) dentro una muestra de cierto tamaño (n) (o sabemos que cierto número de individuos tiene la característica (y_1) y cierto número de individuos no la tienen n - y_1); ademas, sabemos que en toda la población hay un cierto número de individuos que tienen la característica (R). A partir de esto que conocemos, queremos inferir la cantidad total de individuos de la población (\theta = N), la cuál debe ser desconocida.

Ilustremos un poco más lo anterior a partir de la siguiente situación. Supongamos que queremos conocer la cantidad de peces de cierta especie en un lago. Para inferir dicha cantidad, introducimos al lago un cierto número de peces (R) de la misma especie pero marcados de alguna manera especial. Al día siguiente, capturamos simultáneamente (pesca con red) o sin reemplazamiento (uno a uno pero sin devolver los peces capturados) y contamos el número de peces con la marca especial (y_1) del total de los que capturamos (n) (o, el número de capturados con la marca especial (y_1) y el número de capturados sin la marca (n-y_1)). Ahora con la información que poseemos se debería poder estimar la cantidad total de peces que había en el lago en el instante previo a proceder con la captura (\hat{\theta} = N), y por ende también la cantidad de peces que había en el lago antes de introducir los marcados \hat{\theta} - R = N - R. Es así que se requiere establecer una fórmula o mecanismo que permita obtener estimaciones máximo verosímiles para \theta = N, a partir de lo observado mediante y_1, y bajo el supuesto de que R y n son conocidos.

Primero, determinemos cuáles podrían ser valores válidos para \theta = N:

A partir del valor que podría tomar y_1, es posible establecer los valores válidos que podría tomar \theta = N: \begin{aligned} \max\{0, n - (\theta - R)\} & \leq y_1 \leq \min\{n, R\} \\ n - (\theta - R) & \leq y_1 \\ - (\theta - R) & \leq y_1 - n \\ \theta - R & \geq n - y_1 \\ \theta & \geq R + (n - y_1) \end{aligned}

Es decir \theta = N tiene que ser un número entero positivo, mayor o igual que la suma del número de individuos con la característica dentro de toda la población (R) y el número de individuos sin la característica dentro de los n seleccionados (n-y_1).

Segundo, determinar cuándo crece, cuando permance constante y cuando decrece la función de verosimilitud:

La función de verosimilitud para el parámetro \theta = N no es una función continua, por tanto no es posible encontrar un máximo usando derivadas. Una alternativa es analizar el comportamiento de la función de verosimilitud, es decir, establecer cuándo crece, cuándo decrece o incluso cuándo permanece constante. Una forma de analizar dicho comportamiento es comparando el cambio que ocurre en los valores que toma la función de verosimilitud para un valor posible del parámetro (\theta^*) y su valor inmediatamente anterior (\theta^*). Es así que comparamos L(\theta^*) con respecto a L(\theta^*-1) y establecemos que, al pasar de (\theta^* - 1) a \theta^*,

  • L(.) crece si y sólo si L(\theta^*-1) < L(\theta^*), o equivalentemente si 1 < \frac{L(\theta^*)}{L(\theta^*-1)};
  • L(.) permanece constante si y sólo si L(\theta^*-1) = L(\theta^*), o equivalentemente si 1 = \frac{L(\theta^*)}{L(\theta^*-1)};
  • L(.) decrece si y sólo si L(\theta^*-1) > L(\theta^*), o equivalentemente si 1 > \frac{L(\theta^*)}{L(\theta^*-1)};

donde \begin{aligned} L(\theta) &= L(\theta; x_1, \dots, x_n) \\ &= L(\theta; y_1) \\ &= \frac{\binom{R}{y_1}\binom{\theta - R}{n - y_1}}{\binom{\theta}{n}} \, \mathrm{I}_{\{\max\{0, n - (\theta - R)\},\dots,\min\{n, R\}\}}(y_1). \end{aligned}

Dada y_1, la realización de la variable aleatoria Y_1 (o x_1, \dots, x_n una realización de X_1, \dots, X_n Bernoulli no independientes), y para \theta^* tal que L(\theta^*-1) \neq 0, es decir para \theta^* - 1 \geq R + (n - y_1), tenemos que, \begin{aligned} \frac{L(\theta^*)}{L(\theta^*-1)} &= \frac{\binom{R}{y_1}\binom{\theta^* - R}{n - y_1}}{\binom{\theta^*}{n}} \frac{\binom{\theta^*-1}{n}}{\binom{R}{y_1}\binom{\theta^* - R - 1}{n - y_1}} \\ &= \frac{\binom{\theta^* - R}{n - y_1}}{\binom{\theta^*}{n}} \frac{\binom{\theta^*-1}{n}}{\binom{\theta' - R - 1}{n - y_1}} \\ &= \frac{\frac{(\theta^* - R)!}{(n - y_1)!(\theta^* - R - (n - y_1))!}}{\frac{\theta^*!}{n!(\theta^* - n)!}} \frac{\frac{(\theta^* - 1)!}{n!(\theta^* - n - 1)!}}{\frac{(\theta^* - R - 1)!}{(n - y_1)!(\theta^* - R - (n - y_1)-1)!}} \\ &= \frac{(\theta^* - R)!(\theta^* - n)!(\theta^* - 1)!(\theta^* - R - (n - y_1)-1)!}{(\theta^* - R - (n - y_1))!\theta^*!(\theta^* - n - 1)!(\theta^* - R - 1)!} \\ &= \frac{(\theta^* - R)(\theta^* - n)}{(\theta^* - R - (n - y_1)) \theta^*} \end{aligned}

Lo que quiere decir que \frac{L(\theta^*)}{L(\theta^*-1)} > 1 (la función de verosimilitud crece) cuando, \frac{(\theta^* - R)(\theta^* - n)}{(\theta^* - R - (n - y_1)) \theta^*} > 1. Además, como \theta^* \in \mathbb{Z}^+ y \theta^* - R - (n - y_1) \geq 1 entonces \frac{L(\theta^*)}{L(\theta^*-1)} > 1 cuando, \begin{aligned} (\theta^* - R)(\theta^* - n) & > (\theta^* - R - (n - y_1)) \theta^* \\ \theta^{*2} - R \, \theta^* - n \, \theta + R \, n & > \theta^{*2} - R \, \theta^* - n \, \theta^* + y_1 \, \theta^* \\ R \, n & > y_1 \, \theta^* \\ \frac{R \, n}{y_1} & > \theta^* \end{aligned}

Concluimos que, al pasar de (\theta^* - 1) a \theta^*,

  • L(.) crece \left(L(\theta^*) > L(\theta^*-1)\right) si y sólo si \theta^* < \frac{R \, n}{y_1};
  • L(.) permanece igual \left(L(\theta^*) = L(\theta^*-1)\right) si y sólo si \theta^* = \frac{R \, n}{y_1}.
  • L(.) decrece \left(L(\theta^*) < L(\theta^*-1)\right) si y sólo si \theta^* > \frac{R \, n}{y_1};

Entonces, \frac{R \, n}{y_1} será un valor de referencia para saber si la función de verosimilitud crece, decrece, o permanece igual.

Tercero, sabiendo cuando crece, permanece igual o decrece la función de verosimilitud, identificar el valor del parámetro que hace que dicha función alcance su valor máximo:

Sin embargo, tenemos dos situaciones distintas, dependiendo de si \frac{R \, n}{y_1} es o no un número entero

Si \frac{R \, n}{y_1} NO ES entero, entonces, \left[ \frac{R \, n}{y_1} \right] < \frac{R \, n}{y_1} < \left[ \frac{R \, n}{y_1} \right] + 1, y como L(.) crece al pasar de (\theta* - 1) a \theta* para todo \theta* entero menor que \frac{R \, n}{y_1}, entonces, \begin{aligned} L \left( \left[ \frac{R \, n}{y_1} \right] \right) &> L \left( \left[ \frac{R \, n}{y_1} \right] - 1 \right) \\ L \left( \left[ \frac{R \, n}{y_1} \right] - 1 \right) &> L \left( \left[ \frac{R \, n}{y_1} \right] - 2 \right) \\ &\dots \end{aligned} además, como L(.) decrece al pasar de (\theta* - 1) a \theta* para todo \theta* entero mayor que \frac{R \, n}{y_1}, entonces, \begin{aligned} L \left( \left[ \frac{R \, n}{y_1} \right] + 1 \right) &< L \left( \left( \left[ \frac{R \, n}{y_1} \right] + 1 \right) - 1 \right) = L \left( \left[ \frac{R \, n}{y_1} \right] \right) \\ L \left( \left[ \frac{R \, n}{y_1} \right] + 2 \right) &< L \left( \left( \left[ \frac{R \, n}{y_1} \right] + 2 \right) - 1 \right) = L \left( \left[ \frac{R \, n}{y_1} \right] + 1 \right) \\ &\dots \end{aligned} De los dos resultados anteriores, concluimos que L \left( \left[ \frac{R \, n}{y_1} \right] \right) es el máximo valor posible de la función L(.) y por ende \hat{\theta}_{ML} = \left[ \frac{R \, n}{y_1} \right].

Ahora, si \frac{R \, n}{y_1} ES entero, entonces, \left[ \frac{R \, n}{y_1} \right] = \frac{R \, n}{y_1} a partir de lo cual se puede ver que:

  • L(.) crece para \theta < \left[ \frac{R \, n}{y_1} \right], es decir, L \left( \left[ \frac{R \, n}{y_1} \right] - 1 \right) > L \left( \left[ \frac{R \, n}{y_1} \right] - 2 \right) > L \left( \left[ \frac{R \, n}{y_1} \right] - 3 \right) > \dots,
  • L(.) permanece igual para \theta = \left[ \frac{R \, n}{y_1} \right], es decir, L \left( \left[ \frac{R \, n}{y_1} \right] \right) = L \left( \left[ \frac{R \, n}{y_1} \right] - 1 \right),
  • L(.) decrece para \theta > \left[ \frac{R \, n}{y_1} \right], es decir, L \left( \left[ \frac{R \, n}{y_1} \right] \right) > L \left( \left[ \frac{R \, n}{y_1} \right] + 1 \right) > L \left( \left[ \frac{R \, n}{y_1} \right] + 2 \right) > \dots.

De donde se concluye que \left[ \frac{R \, n}{y_1} \right] y \left[ \frac{R \, n}{y_1} \right] - 1 son los valores del parámetro que hacen que L(\theta) alcance su valor máximo. En este caso, \left[ \frac{R n}{y_1} \right] y \left[ \frac{R n}{y_1} \right] - 1 serían las estimaciones máximo verosímiles de \theta. \hat{\theta}_{ML} no sería único, \hat{\theta}_{ML} = \left\{ \left[ \frac{R n}{y_1} \right] - 1, \left[ \frac{R n}{y_1} \right] \right\}

Cuarto, usamos el estimador que hallamos en todas las aplicaciones prácticas que apliquen

Mediante el anterior desarrollo analítico obtuvimos las expresiones matemáticas para asociadas a las estimaciones máximo verosímiles. Ahora para ilustrar un poco las cosas, primero simulemos la selección simultanea (sin reemplazamiento) de n = 10 individuos sobre una población de tamaño N = 30, en donde R = 18. Eso sí, sin olvidar que en la realidad los datos poblacionales son desconocidos (no se podría saber que N = 30). Por eso aquí estamos hablando de datos simulados y no de datos reales (a continuación, ALL serían los datos poblacionales desconocidos y tanto x como y_1.op2 serían los datos muestrales simulados).

Código
# Datos poblacionales (que en una situación real no conocería)
ALL <- c(1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 
         1, 0, 0, 1, 0, 1, 0, 1, 0, 1,
         0, 1, 1, 0, 1, 0, 1, 1, 0, 1)
N <- length(ALL)
# Datos conocidos
R <- sum(ALL)
n <- 10
# Semilla para la generación de valores pseudoaleatorios
set.seed(123) 
Código
# Simulación opción 1: 
# muestra de tamaño n sin reemplazamiento de una variable Bernoulli
x <- sample(ALL, n, replace = FALSE)
y_1.op1 <- sum(x)
cat("Simulación opción 1.\nx_1, ..., x_n: ", 
    paste(x, collapse = ", "),
    "\ny_1: ", y_1.op1)
Simulación opción 1.
x_1, ..., x_n:  0, 0, 1, 0, 1, 1, 1, 1, 1, 1 
y_1:  7
Código
# Simulación opción 2: 
# muestra de tamaño 1 de una variable Hipergeométrica
y_1.op2 <- rhyper(1, R, N - R, n)
cat("Simulación opción 2.\ny_1: ", y_1.op2)
Simulación opción 2.
y_1:  6

Luego, veamos la función de verosimilitud asociada a los datos simulados y_1 (es decir, la función de verosimilitud asociada a lo que sería conocido: y_1, n y R), y las estimaciones máximo verosímiles para el parámetro \theta = N.

Código
aux.plot <- 0:15
theta <- R + (n - y_1.op2) + aux.plot
L <- dhyper(y_1.op2, R, theta - R, n)
plot(theta, L, type = "h", bty = "n", 
     xlab = "N", ylab = "L(N)", ylim=c(0,max(L)))
val.ref <- R * n / y_1.op2
if(val.ref != trunc(val.ref)){
  theta.hat <- trunc(val.ref)
}else{
  theta.hat <- trunc(val.ref) - c(0,1)
}
points(theta.hat, dhyper(y_1.op2, R, theta.hat - R, n), col = "blue", pch = 3)
points(theta.hat, rep(0, length(theta.hat)), col = "red", pch = 6)
legend("topleft", legend = "Estimaciones (ML)", col = "red", pch = 6, bty = "n")

¿Qué pasaría si en vez de Y_1 (o las equivalente X_1, \dots, X_n variables aleatorias Bernoulli no independientes), se tiene una muestra aleatoria Y_1, \dots, Y_m de tamaño m, de una población Y \sim Hg(n,N = \theta,R)?

Para ilustrar un poco la situación, podemos simular un conjunto de datos asociado a la misma:

Código
m <- 15 # Tamaño de muestra
# R, N y n iguales que antes
y <- rhyper(m, R, N - R, n) # Simular una realización de la muestra aleatoria
cat("y_1, ..., y_m: ", paste(y, collapse = ", "))
y_1, ..., y_m:  5, 6, 8, 4, 7, 8, 7, 4, 4, 5, 6, 3, 6, 5, 6

Calculamos la función de log-verosimilitud (a partir de los datos simulados) para valores que podría tomar el parámetro de interés \theta = N.

Código
aux.max.theta <- 35 # No puedo calcular infinitos valores para theta
theta <- seq(R + max(n - y), aux.max.theta) # Valores que podría tomar theta
for(i in 1:length(theta)){ 
    cat("theta: ", theta[i], "\t", "log-Likelihood: ", 
        sum(dhyper(y, R, theta[i] - R, n, log = TRUE)), "\n", sep = "")
}
theta: 25   log-Likelihood: -43.23136
theta: 26   log-Likelihood: -37.04521
theta: 27   log-Likelihood: -33.08715
theta: 28   log-Likelihood: -30.47942
theta: 29   log-Likelihood: -28.7807
theta: 30   log-Likelihood: -27.72891
theta: 31   log-Likelihood: -27.15431
theta: 32   log-Likelihood: -26.94071
theta: 33   log-Likelihood: -27.00532
theta: 34   log-Likelihood: -27.28739
theta: 35   log-Likelihood: -27.74128

Para los datos simulados, la estimación máximo verosímil sería, \hat{\theta}_{ML} = \hat{N}_{ML} = 32, Ya que es el valor para el cual la función de log-verosimilitud llega a su máximo (suponiendo que para \theta = 36, 37, \dots dicha función seguirá decreciendo).

En este caso, se encontró la estimación para un caso particular, pero desconocemos la expresión matemática del estimador respectivo. Aún no tenemos la expresión matemática de la función de la muestra correspondiente al estimador máximo verosímil.

¿Será posible demostrar que \hat{\theta}_{ML} = \max \left\{\theta \in \mathbb{Z}^+ : \theta \geq \left( R + \underset{1 \leq i \leq m}{\max} \left\{ n - x_i \right\} \right) \land \frac{L(\theta+1)}{L(\theta)} \geq 1 \right\} para Y_1, \dots, Y_m una muestra aleatoria de una población Y \sim Hg(n,N = \theta,R)?

¿Es posible encontrar de forma analítica una expresión más simple para el estimador máximo verosímil del parámetro \theta = N, suponiendo que n y R son conocidos?

2.2.2.2 Estimación del parámetro R

Ejercicio 2.2 Sea Y_1 una variable aleatoria como la descrita anteriormente (o la muestra X_1, \dots, X_n equivalente) y supongamos que n y N son conocidos, entonces el único parámetro a estimar sería \theta = R \left( \mathrm{f}_Y \left(y, \theta\right) = \frac{\binom{\theta}{y} \binom{N - \theta}{n - y}}{\binom{N}{n}} \mathrm{I}_{\{\max\{0, n - (N - \theta)\},\dots,\min\{n, \theta\}\}}(y) \right).

¿Cuál sería la expresión matemática asociada a la estimación máximo verosímil del parámetro \theta = R, suponiendo que n y N son conocidos??

¿Qué pasaría si en vez de Y_1 (o las equivalente X_1, \dots, X_n variables aleatorias Bernoulli no independientes), se tiene una muestra aleatoria Y_1, \dots, Y_m de tamaño m, de una población Y \sim Hg(n, N, R = \theta)?

Para ilustrar un poco la situación, podemos simular un conjunto de datos asociado a la misma:

Código
m <- 15 # Tamaño de muestra
N <- 20; R <- 8; n <- 10 # Supongamos estos valores para los parámetros
y <- rhyper(m, R, N - R, n) # Simular una realización de la muestra aleatoria
cat("y_1, ..., y_m: ", paste(y, collapse = ", "))
y_1, ..., y_m:  4, 5, 5, 2, 3, 3, 3, 6, 4, 3, 5, 5, 5, 5, 4

Calculamos la función de log-verosimilitud (a partir de los datos simulados) para valores que podría tomar el parámetro de interés \theta=R.

Código
theta <- seq(max(y), N - max(n - y)) # Valores que podría tomar theta
for(i in 1:length(theta)){ 
    cat("theta: ", theta[i], "\t", "log-Likelihood: ", 
        sum(dhyper(y, theta[i], N - theta[i], n, log = TRUE)), "\n", sep = "")
}
theta: 6    log-Likelihood: -31.22295
theta: 7    log-Likelihood: -24.92984
theta: 8    log-Likelihood: -22.59759
theta: 9    log-Likelihood: -23.31624
theta: 10   log-Likelihood: -26.8586
theta: 11   log-Likelihood: -33.4468
theta: 12   log-Likelihood: -43.93297

Para los datos simulados, la estimación máximo verosímil sería, \hat{\theta}_{ML} = \hat{R}_{ML} = 8, Ya que es el valor para el cual la función de log-verosimilitud llega a su máximo (los posibles valores de \theta son finitos, entonces estoy seguro de que se logró llegar a un valor que maximiza dicha función).

En este caso, se encontró la estimación para un caso particular, pero desconocemos la expresión matemática del estimador respectivo. Aún no tenemos la expresión matemática de la función de la muestra correspondiente al estimador máximo verosímil.

¿Para este caso (muestra aleatoria Y_1, \dots, Y_m de tamaño m, de una población Y \sim Hg(n, N, R = \theta)), es posible encontrar de forma analítica una expresión relativamente simple para el estimador máximo verosímil del parámetro \theta = R, suponiendo que n y N son conocidos?

2.2.2.3 Estimación del parámetro n

De la misma manera en que lo hicimos con los parámetros R y N, podríamos tomar Y_1 (o la muestra X_1, \dots, X_n equivalente) y suponer que N y R son conocidos, entonces el único parámetro a estimar sería n = \theta \left( \mathrm{f}_Y \left(y, \theta\right) = \frac{\binom{R}{y} \binom{N - R}{\theta - y}}{\binom{N}{\theta}} \mathrm{I}_{\{\max\{0, \theta - (N - R)\},\dots,\min\{\theta, R\}\}}(y) \right). Matemáticamente hablando, no veríamos problema alguno en tratar de establecer una fórmula o mecanismo que nos permita llegar a estimaciones máximo verosímiles para n = \theta. Sin embargo, antes de ponernos a trabajar en ello deberíamos preguntarnos:

¿Es posible encontrar o proponer una situación real o hipotética en donde se requiera inferir n (el cual naturalmente tiene que ser desconocido) a partir de lo observado mediante y_1, y bajo el supuesto de que N y R son conocidos?

2.2.3 Una solución numérica

Supongamos que queremos estimar los parámetros de la distribución poblacional asociada a la variable porcentaje de gasto en alimentación de los hogares, a partir de los datos a los que se refiere el siguiente texto:

The data frame contains 38 observations (random sample of 38 households in a large US city) on 3 variables:

  • food: household expenditures for food.
  • income: household income.
  • persons: number of persons living in household.

Griffiths, W.E., Hill, R.C., and Judge, G.G. 1993. Learning and Practicing Econometrics New York: John Wiley and Sons (Table 15.4).

Lo primero que deberíamos hacer es un análisis exploratorio de los datos de la muestra.

Código
# Instalar y cargar la libreria betareg (datos FoodExpenditure)
if(!require(betareg)) { install.packages("betareg"); require(betareg) }
# Cargar los datos de gasto en alimentación (38 hogares)
data("FoodExpenditure", package="betareg")
# Porcentaje de gasto en alimentación
x <- FoodExpenditure$food / FoodExpenditure$income
# Instalar y cargar la libreria fitdistrplus (gráficos y ajuste)
if(!require(fitdistrplus)) { install.packages("fitdistrplus"); require(fitdistrplus) }
# Gráfico
plotdist(x, histo=TRUE, demp=TRUE, pch="-")

Al ejecutar la función descdist() del paquete fitdistrplus en R, se obtienen medidas descriptivas para la muestra y un gráfico que me permite ver el coeficiente de asimetría y el de curtosis muestral con respecto a las regiones en el plano que ocuparían algunas distribuciones de acuerdo a los valores que pueden tomar sus coeficientes de asimetría y de curtosis (es decir los teóricos poblacionales).

Código
# Medidas descriptivas y plano asimetría^2 vs kurtosis
descdist(x)

summary statistics
------
min:  0.1075258   max:  0.561243 
median:  0.2610673 
mean:  0.2896702 
estimated sd:  0.1013732 
estimated skewness:  0.9819276 
estimated kurtosis:  4.160473 

Generalmente una variable que representa un porcentaje tendrá valores entre 0\% y 100\%, y así mismo, una variable que representa una razón o proporción tendrá valores entre 0 y 1. Para modelar este tipo de variables sería apropiado utilizar una distribución con dominio acotado (con dominio en un intervalo (a,b)). La distribución Beta es una de las distribuciones más usadas para variables que toman valores en (0,1).

2.2.3.1 Intentamos solución analítica

Para la distribución beta en (0,1), se tienen las fórmulas que se muestran a continuación.

Función de densidad: \mathrm{f}_X \left(x, \alpha, \beta\right) = \frac{1}{\mathrm{B}(\alpha,\beta)} x^{\alpha-1} (1-x)^{\beta-1} \mathrm{I}_{(0,1)}(x) donde \mathrm{B}(\alpha,\beta) = \frac{\Gamma(\alpha)\Gamma(\beta)}{\Gamma(\alpha+\beta)} y \Gamma(x) = \int_{0}^{\infty} t^{x-1} e^{-t} dt.

Espacio de los parámetros: \theta = \left( \alpha, \beta \right)^T \in \Theta = (0, \infty) \times (0, \infty).

Función de log-verosimilitud: \begin{align*} \log \mathrm{L}(\theta) &= \sum_{i=1}^{n} \log \left( \frac{1}{\mathrm{B}(\alpha,\beta)} x_i^{\alpha-1} (1-x_i)^{\beta-1} \right) \\ &= (\alpha - 1) \sum_{i=1}^{n} \log (x_i) + (\beta - 1) \sum_{i=1}^{n} \log (1 - x_i) - n \log \left( \mathrm{B}(\alpha,\beta) \right) \\ &= (\alpha - 1) \sum_{i=1}^{n} \log (x_i) + (\beta - 1) \sum_{i=1}^{n} \log (1 - x_i) \\ & \quad - n \left[ \log \left( \Gamma(\alpha) \right) + \log \left( \Gamma(\beta) \right) - \log \left( \Gamma(\alpha+\beta) \right) \right]. \end{align*}

Gradiente: \begin{align*} \frac{\partial}{\partial \alpha} \log \mathrm{L}(\theta) &= \sum_{i=1}^{n} \log (x_i) - n \frac{\partial}{\partial \alpha} \left[ \log \left( \Gamma(\alpha) \right) + \log \left( \Gamma(\beta) \right) - \log \left( \Gamma(\alpha+\beta) \right) \right] \\ &= \sum_{i=1}^{n} \log (x_i) - n \left[ \psi(\alpha) - \psi(\alpha+\beta) \right] \\ \frac{\partial}{\partial \beta} \log \mathrm{L}(\theta) &= \sum_{i=1}^{n} \log (1 - x_i) - n \frac{\partial}{\partial \beta} \left[ \log \left( \Gamma(\alpha) \right) + \log \left( \Gamma(\beta) \right) - \log \left( \Gamma(\alpha+\beta) \right) \right] \\ &= \sum_{i=1}^{n} \log (1 - x_i) - n \left[ \psi(\beta) - \psi(\alpha+\beta) \right] \end{align*} donde \frac{\partial}{\partial x} \log \Gamma(x) se denotará \psi(x) (función digamma).

Hessiana: \begin{align*} \frac{\partial^2}{\partial \alpha^2} \log \mathrm{L}(\theta) &= - n \frac{\partial}{\partial \alpha} \left[ \psi(\alpha) - \psi(\alpha+\beta) \right]\\ &= - n \left[ \psi_1(\alpha) - \psi_1(\alpha+\beta) \right] \\ \frac{\partial^2}{\partial \beta^2} \log \mathrm{L}(\theta) &= - n \frac{\partial}{\partial \beta} \left[ \psi(\beta) - \psi(\alpha+\beta) \right]\\ &= -n \left[ \psi_1(\beta) - \psi_1(\alpha+\beta) \right]\\ \frac{\partial^2}{\partial \alpha \partial \beta} \log \mathrm{L}(\theta) &= - n \frac{\partial}{\partial \alpha} \left[ \psi(\beta) - \psi(\alpha+\beta) \right] \\ &= n \psi_1(\alpha+\beta) \end{align*} donde \frac{\partial}{\partial x} \psi(x) = \frac{\partial^2}{\partial x^2} \log \Gamma(x) se denotará \psi_1(x) (función trigamma).

Al parecer debido a la forma de funciones gamma, digamma y trigamma, hasta ahora nadie ha podido obtener una formula o expresión explícita y cerrada para el estimador máximo verosímil de una distribución Beta con parámetros \alpha y \beta. ¿Qué hacer en una situación como esta?

2.2.3.2 Optimización mediante métodos numéricos

Exceptuando algunos casos especiales, las ecuaciones de verosimilitud, \frac{\partial }{\partial \theta} \mathrm{L}(\theta; x_1, \dots, x_n) = 0 \quad \text{ y } \quad \frac{\partial }{\partial \theta} \log \mathrm{L}(\theta; x_1, \dots, x_n) = 0, no pueden solucionarse de manera analítica. Por tanto, es necesario usar métodos numéricos o procedimientos iterativos para poder solucionar el problema de optimización asociado a dichas ecuaciones, \underset{\theta \in \Theta}{\arg \sup} \; \mathrm{L}\left(\theta; x_1, \dots, x_n \right) \quad \text{ y } \quad \underset{\theta \in \Theta}{\arg \sup} \; \log \mathrm{L}\left(\theta; x_1, \dots, x_n \right).

Existen variados métodos numéricos para resolver problemas de optimización. Buena parte de ellos toman un valor inicial para \theta, notado \hat{\theta}_0, y a partir de él buscan obtener una secuencia convergente \{ \hat{\theta}_r \}_{r=0,1,\dots}. Los algoritmos más comunmente utilizados, los Hill climbing algorithms, se basan en una ecuación de actualización de este tipo, \hat{\theta}_{r+1} = \hat{\theta}_{r} + \lambda_r \; \mathbf{\mathrm{d}}_r\left(\hat{\theta}_r\right) donde el vector \mathbf{\mathrm{d}}_r\left(\hat{\theta}_r\right) indica la “dirección del r-ésimo paso” y el escalar \lambda_r representa la “longitud o tamaño de ese r-ésimo paso”.

En el caso de los Gradient ascent algorithms, la dirección de cada paso es la del gradiente de la función objetivo, \mathbf{\mathrm{d}}_r\left(\hat{\theta}_r\right) = \Delta \left(\hat{\theta}_r\right). El gradiente de la función de log-verosimilitud con respecto al vector de parámetros suele denominarse score, \Delta \left(\theta\right) = \frac{\partial}{\partial \theta} \log \mathrm{L}.

En el método de Newton–Raphson, \lambda_r = 1 y \mathbf{\mathrm{d}}_r\left(\hat{\theta}\right) = -\mathbf{\mathrm{H}}^{-1}\left(\hat{\theta}_r\right) \Delta\left(\hat{\theta}_r\right), donde \Delta(\theta) es el score y \mathbf{\mathrm{H}}^{-1}(\theta) es el inverso de la matrix Hessiana de la función de log-verosimilitud \left( \mathbf{\mathrm{H}}(\theta) = \frac{\partial^2}{\partial \theta \partial \theta^T} \log \mathrm{L} \right), ambos evaluados en \hat{\theta}_r.

El método denominado Fisher’s Scoring es casi identico al método de Newton-Raphson, pero en vez de utilizar el negativo del inverso de la matrix Hessiana de la función de log-verosimilitud \left(-\mathbf{\mathrm{H}}^{-1}(\theta) \right), utiliza el inverso de la matrix de información de Fisher \left(\mathcal{I}^{-1}\left(\theta\right) \right). La matrix de información de Fisher es la varianza del score, \mathcal{I}\left(\theta\right) = Var \left[ \Delta\left(\theta\right) \right] = E \left[ \Delta\left(\theta\right) \Delta\left(\theta\right)^T \right] y bajo ciertas condiciones (condiciones de regularidad), también es igual al inverso aditivo del valor esperado de la matrix Hessiana de la función de log-verosimilitud, \mathcal{I}\left(\theta\right) = Var \left[ \Delta\left(\theta\right) \right] = E \left[ \Delta\left(\theta\right) \Delta\left(\theta\right)^T \right] = - E \left[ \mathbf{\mathrm{H}}(\theta) \right].

Dado que el cálculo de la matrix Hessiana o el de la matrix de información (más el cálculo de la respectiva inversa) son computacionalmente costosos, otras alternativas han sido propuestas. Una de ellas es, por ejemplo, el algoritmo de Broyden–Fletcher–Goldfarb–Shanno (BFGS).

¿Existen situaciones en las cuales el método de optimización numérica utilizado podría “fallar”? ¿Qué debería hacer para estar seguro de que voy a encontrar o de que encontré el máximo de la función para todos los posibles valores de los parámetros?

2.2.3.3 Aplicando optimización numérica

Retomando los datos mencionados acerca del porcentaje de gasto en alimentación de los hogares, La siguiente gráfica muestra algunas curvas de nivel de la función de log-verosimilitud.

Código
### log-verosimilitud con la distribución Beta
### para el porcentaje de gasto en alimentación
loglik.beta <- function(theta, sample)
    { sum( dbeta(sample, theta[1], theta[2], log = TRUE) ) }
### Gráfico de log-verosimilitud (curvas de nivel)
alpha <- seq(1, 12, length.out = 101) 
beta <- seq(1, 30, length.out = 101)
z <- apply(expand.grid(alpha, beta), 1, loglik.beta, sample = x)
z <- matrix(z, 101, 101, byrow = TRUE)
contour(beta, alpha, z, drawlabels = TRUE, levels = c(-100,-25,0,25,35), 
        col="red", bty = "none", xlab=quote(beta), ylab=quote(alpha))

Esperariamos encontrar el máximo \left(\hat{\alpha}, \hat{\beta} \right) de dicha función dentro de la curva de nivel (elipse) etiquetada con el número 35.

Si queremos realizar la optimización numérica usando el método de Newton-Raphson, necesitamos calcular el gradiente y la Hessiana de la función de log-verosimilitud, para un valor de \theta requerido.

Código
cat("theta:\n")
theta:
Código
a <- 6; b <- 15; theta <- c(a, b); print(theta) # un valor para theta
[1]  6 15
Código
### Opción 1: Derivación Numérica.
### Instalar y cargar la libreria numDeriv (derivación numérica)
if(!require(numDeriv)) { install.packages("numDeriv"); require(numDeriv) }
### Gradiente numérica de la función loglik.beta
cat("\nGradiente numérica evaluada en theta (función numDeriv::grad):\n")

Gradiente numérica evaluada en theta (función numDeriv::grad):
Código
print(numDeriv::grad(loglik.beta, x = theta, sample = x))
[1]  0.6878986 -0.2714764
Código
### Hessiana numérica de la función loglik.beta
cat("\nHessiana numérica evaluada en theta (función numDeriv::hessian):\n")

Hessiana numérica evaluada en theta (función numDeriv::hessian):
Código
print(numDeriv::hessian(loglik.beta, x = theta, sample = x))
          [,1]       [,2]
[1,] -5.036981  1.8532913
[2,]  1.853291 -0.7663614
Código
### Opción 2: Derivación automática o algorítmica
### Expresión LogL para la función de log-verosimilitud
n <- length(x) # Tamaño de la muestra
slx <- sum(log(x)) # 
sl1mx <- sum(log(1-x)) #
logL <- expression((a-1)*slx+(b-1)*sl1mx-
                   n*(log(gamma(a))+log(gamma(b))-log(gamma(a+b))))
### Gradiente y Hessiana automática de la función logL
deriv.logL <- deriv(logL, c("a", "b"), hessian = TRUE) # Expresión
res <- eval(deriv.logL) # Evaluación
cat("\nGradiente automática evaluada en theta (función deriv):\n")

Gradiente automática evaluada en theta (función deriv):
Código
print(attr(res,"gradient"))
             a          b
[1,] 0.6878986 -0.2714764
Código
cat("\nHessiana automática evaluada en theta (función deriv):\n")

Hessiana automática evaluada en theta (función deriv):
Código
print(matrix(attr(res,"hessian"), 2))
          [,1]       [,2]
[1,] -5.036981  1.8532913
[2,]  1.853291 -0.7663614
Código
### Opción 3: Implementar formulas analíticas.
### Gradiente de la función de log-verosimilitud
score <- function(theta, sample){
    n <- length(sample)
    c(sum(log(sample)), sum(log(1-sample))) - 
        n * (digamma(theta) - digamma(sum(theta)))
}
cat("\nGradiente analítica evaluada en theta (función propia):\n")

Gradiente analítica evaluada en theta (función propia):
Código
print(score(theta, x))
[1]  0.6878986 -0.2714764
Código
### Hessiana de la función de log-verosimilitud
H <- function(theta, sample){
    n <- length(sample); aux1 <- trigamma(sum(theta))
    H <- -n * diag(trigamma(theta) - aux1)
    H[1,2] <- H[2,1] <- n * aux1
    H
}
cat("\nHessiana analítica evaluada en theta (función propia):\n")

Hessiana analítica evaluada en theta (función propia):
Código
print(H(theta, x))
          [,1]       [,2]
[1,] -5.036981  1.8532913
[2,]  1.853291 -0.7663614

Procedemos al método de Newton-Raphson como tal, utilizando una de las tres opciones presentadas para calcular el gradiente y la Hessiana.

Código
### Optimización usando Newton-Raphson, con gradiente y Hessiana analíticos
i <- 0; theta <- c(6, 15) # theta inicial
res <- data.frame(iter = i, alpha = theta[1], beta = theta[2])
repeat{
    s <- score(theta, x)
    if(sum(s^2) < 1e-23){ break }
    theta <- theta - as.vector(solve(H(theta, x)) %*% s)
    i <- i + 1
    res <- rbind(res, c(i, theta))
}
res[,1] <- as.factor(res[,1])
knitr::kable(format(res, nsmall=10))
iter alpha beta
0 6.0000000000 15.0000000000
1 6.0565369274 14.7824825727
2 6.0716009801 14.8219937900
3 6.0716413191 14.8220997664
4 6.0716413194 14.8220997671
Código
cat("\nGradiente analítico evaluado en el theta de la última iteración:\n")

Gradiente analítico evaluado en el theta de la última iteración:
Código
[1] 7.105427e-15 1.243450e-14
Código
cat("\nHessiana analítica evaluada en el theta de la última iteración:\n")

Hessiana analítica evaluada en el theta de la última iteración:
Código
print(H(theta, x))
          [,1]       [,2]
[1,] -4.939202  1.8629437
[2,]  1.862944 -0.7892224

Podemos utilizar otros métodos. Sin embargo, es importante recordar que \theta = (\alpha, \beta) \in \mathbb{R}^+ \times \mathbb{R}^+ = \Theta, y por ende, debemos garantizar que esto es tenido en cuenta por aquellos métodos que vayamos a utilizar.

Código
### Optimizacion usando múltiples métodos con optimx 
### pero sin darle el gradiente o la Hessiana
### (by default optimx performs minimization)
### Instalar y cargar la libreria optimx (optimización)
if(!require(optimx)) { install.packages("optimx"); require(optimx) }
### Espacio de los parámetros: theta \in (0,\infty)^2
m.loglik.beta <- function(theta, x) 
    { -loglik.beta(theta, x) } # -1 * log-verosimilitud(theta)
m.opt <- optimx(c(6, 15), m.loglik.beta, x = x, lower = 1e-6,
                control = list(all.methods = TRUE)) # todos
knitr::kable(summary(m.opt, order = value)) # reporte ordenado
p1 p2 value fevals gevals niter convcode kkt1 kkt2 xtime
nlminb 6.071641 14.82210 -3.534644e+01 11 28 9 0 TRUE TRUE 0.002
L-BFGS-B 6.071635 14.82209 -3.534644e+01 9 9 NA 0 TRUE TRUE 0.002
Rcgmin 6.071653 14.82214 -3.534644e+01 870 406 NA 1 TRUE TRUE 0.041
spg NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
Rvmmin NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
bobyqa NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.003
nmkb NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
hjkb NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.000

Algunos métodos solamente funcionan para cuando \Theta = \mathbb{R}^d, donde d es el número de parámetros a estimar. Para poder usar esos métodos, podemos reparametrizar nuestro problema de optimización. Esto quiere decir que utilizamos una transformación adecuada para cambiar de parámetros (de espacio de parámetros), obteniendo un problema de optimización equivalente al que teniamos, \underset{\theta \in \Theta}{\arg \sup} \; \log \mathrm{L}\left(\theta; x_1, \dots, x_n \right) = \underset{\theta^* \in \mathbb{R}^d}{\arg \sup} \; \log \mathrm{L}\left(\theta^*; x_1, \dots, x_n \right)

En el caso de los parámetros de la distribución Beta, podemos utilizar esta transformación, \begin{align*} \mathbb{R}^+ \times \mathbb{R}^+ &\longrightarrow \mathbb{R}^2 \\ \theta = \left(\alpha, \beta\right) &\longrightarrow \left(e^{\alpha}, e^{\beta}\right) = \theta^* \end{align*}

Código
### Optimizacion usando múltiples métodos con optimx
### pero sin darle el gradiente o la Hessiana
### (by default optimx performs minimization)
### Reparametrizando theta = exp(eta). eta \in R x R 
t.m.loglik.beta <- function(eta, x)
    { -loglik.beta(exp(eta), x) } # -1 * log-verosimilitud(eta)
t.m.opt <- optimx(c(0.8, 1.2), t.m.loglik.beta, x = x, # sin lower
                control = list(all.methods = TRUE)) # todos
t.m.opt$p1 <- exp(t.m.opt$p1); t.m.opt$p2 <- exp(t.m.opt$p2) # theta
knitr::kable(summary(t.m.opt, order = value)) # reporte ordenado
p1 p2 value fevals gevals niter convcode kkt1 kkt2 xtime
nlminb 6.071642 14.82210 -3.534644e+01 16 31 12 0 TRUE TRUE 0.001
CG 6.071617 14.82204 -3.534644e+01 332 79 NA 0 TRUE TRUE 0.009
Rvmmin 6.071614 14.82203 -3.534644e+01 261 62 NA 0 TRUE TRUE 0.015
L-BFGS-B 6.071612 14.82203 -3.534644e+01 13 13 NA 0 TRUE TRUE 0.001
Rcgmin 6.071606 14.82202 -3.534644e+01 875 254 NA 1 TRUE TRUE 0.031
nlm 6.071523 14.82180 -3.534644e+01 NA NA 10 0 TRUE TRUE 0.001
Nelder-Mead 6.071250 14.82130 -3.534644e+01 75 NA NA 0 TRUE TRUE 0.002
BFGS 6.070940 14.82002 -3.534644e+01 25 11 NA 0 TRUE TRUE 0.003
spg NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
ucminf NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
newuoa NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
bobyqa NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
nmkb NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.001
hjkb NA NA 8.988466e+307 NA NA NA 9999 NA NA 0.000

Uno o varios de los métodos de optimización numérica suelen estar implementados e incorporados de alguna manera en paquetes o funciones existentes.

Código
### Estimación máximo verosímil usando fitdistrplus::fitdist 
### Instalar y cargar la libreria fitdistrplus (gráficos y ajuste)
if(!require(fitdistrplus)) { install.packages("fitdistrplus"); require(fitdistrplus) }
fit.b <- fitdist(x, "beta") # estimación (by default method="mle")
summary(fit.b)
Fitting of the distribution ' beta ' by maximum likelihood 
Parameters : 
       estimate Std. Error
shape1  6.07213   1.358727
shape2 14.82243   3.398868
Loglikelihood:  35.34644   AIC:  -66.69289   BIC:  -63.41772 
Correlation matrix:
          shape1    shape2
shape1 1.0000000 0.9435681
shape2 0.9435681 1.0000000
Código
denscomp(list(fit.b), xlim = c(0,1)) # Función de densidad ajustada

Código
cdfcomp(list(fit.b), xlim = c(0,1)) # Función de distribución ajustada

Código
qqcomp(list(fit.b), fitpch=16) # Gráfico Q-Q (Cuantil-Cuantil)

Código
ppcomp(list(fit.b), fitpch=16) # Gráfico P-P (Probabilidad-Probabilidad)

Código
cat("máxima log-verosimilitud alcanzada usando Newton-Raphson:\n", 
    format(loglik.beta(theta, x), nsmall=14), "\n",
    "máxima log-verosimilitud alcanzada usando optimx:\n", 
    format(-min(m.opt$value), nsmall=14), "\n",
    "máxima log-verosimilitud alcanzada reparametrizando y usando optimx:\n", 
    format(-min(t.m.opt$value), nsmall=14), "\n",
    "máxima log-verosimilitud alcanzada usando fitdistrplus::fitdist:\n", 
    format(fit.b$loglik, nsmall=14), sep="")
máxima log-verosimilitud alcanzada usando Newton-Raphson:
35.34644474252015
máxima log-verosimilitud alcanzada usando optimx:
35.34644474252016
máxima log-verosimilitud alcanzada reparametrizando y usando optimx:
35.34644474251994
máxima log-verosimilitud alcanzada usando fitdistrplus::fitdist:
35.34644441043961

2.2.4 Principio de invarianza

Dada una muestra aleatoria X_1, \dots, X_n proveniente de una población con distribución \mathrm{f}_X(x, \boldsymbol{\theta}), donde \boldsymbol{\theta} es el vector de parámetros, dada una función del vector de parámetros \mathrm{g}(.), y suponiendo que \mathbf{\mathrm{T}}(X_1, \dots, X_n) es el estimador de máxima verosimilitud de \boldsymbol{\theta}, entonces el estimador de máxima verosimilitud de \mathrm{g}(\boldsymbol{\theta}) es la estadística \mathrm{g}(\mathbf{\mathrm{T}}(X_1, \dots, X_n)).

2.3 Método de momentos

El método de momentos se puede asociar a la resolución de un sistema de ecuaciones, \hat{\boldsymbol{\theta}}_{MM} = \left\{\boldsymbol{\theta} \in \boldsymbol{\Theta} : \left( \hat{\eta}_1, \dots, \hat{\eta}_k \right) = \left( \eta_1(\boldsymbol{\theta}), \dots, \eta_k(\boldsymbol{\theta}) \right) \right\} donde \eta_1(\boldsymbol{\theta}), \dots, \eta_k(\boldsymbol{\theta}) pueden ser momentos ordinarios, centrales o estandarizados poblacionales, expresados como funciones de los parámetros, y \hat{\eta}_1, \dots, \hat{\eta}_k serían los respectivos momentos muestrales asociados.

2.3.1 Momentos poblacionales y muestrales

Sean X_1, \dots, X_n una muestra aleatoria de una población con momentos ordinarios y centrales de orden r, \mu_*^{(r)} = E\left[ X^r \right] \quad \text{ y } \quad \mu^{(r)} = E\left[ \left( X - \mu_*^{(1)} \right)^r \right] Los momentos muestrales ordinarios y centrales de orden r = 1, 2, \dots se denotan y definen como, M_*^{(r)} = \frac{1}{n} \sum_{i=1}^n X_i^r \quad \text{ y } \quad M^{(r)} = \frac{1}{n} \sum_{i=1}^n \left( X_i - M_*^{(1)} \right)^r.

2.3.2 Una solución analítica

Encontrar \hat{\boldsymbol{\theta}}_{MM} = T(x_1, \dots, x_n) cuando X_1, \dots, X_n es una muestra aleatoria de una población con X \sim Gamma(k = \theta_1, \beta = \theta_2) \left( \mathrm{f}_X \left(x, \boldsymbol{\theta}\right) = \frac{1}{\theta_2^{\theta_1} \Gamma(\theta_1)} x^{\theta_1 - 1} \, \mathrm{e}^{-\frac{x}{\theta_2}} \, \mathrm{I}_{(0, \infty)}(x) \right).

Como tengo dos parámetros por estimar, necesito dos momentos. Dos momentos me permitan tener dos ecuaciones para esas dos incógnitas. El primer momento ordinario de una variable aleatoria X distribuida Gamma con parámetro de forma \theta_1 y parámetro de escala \theta_2 es, E[X] = \theta_1 \theta_2, y el segundo momento central es, E\left[\left(X-E\left(X\right)\right)^2\right] = Var[X] = \theta_1 \theta_2^2

El sistema de ecuaciones me quedaría así, \begin{align*} \theta_1 \theta_2 = \mu_*^{(1)} &= M_*^{(1)} = \frac{1}{n} \sum_{i=1}^n X_i = \bar{X} \\ \theta_1 \theta_2^2 = \mu^{(2)} &= M^{(2)} = \frac{1}{n} \sum_{i=1}^n \left( X_i - \bar{X} \right)^2 \end{align*}

Para resolver el sistema de ecuaciones podría tomar la segunda ecuación y dividirla por la primera, \frac{\frac{1}{n} \sum_{i=1}^n \left( X_i - \bar{X} \right)^2}{\bar{X}} = \frac{\theta_1 \theta_2^2}{\theta_1 \theta_2} = \theta_2, despejando \theta_1 y reemplazando \theta_2 en la primera ecuación, \begin{align*} \theta_1 \theta_2 &= \bar{X} \\ \theta_1 &= \frac{\bar{X}}{\theta_2} \\ \theta_1 &= \frac{\bar{X}^2}{\frac{1}{n} \sum_{i=1}^n \left( X_i - \bar{X} \right)^2} \end{align*} luego \hat{\boldsymbol{\theta}}_{MM} = \left( \frac{\bar{X}^2}{\frac{1}{n} \sum_{i=1}^n \left( X_i - \bar{X} \right)^2}, \frac{\frac{1}{n} \sum_{i=1}^n \left( X_i - \bar{X} \right)^2}{\bar{X}} \right) es un estimador por el método de momentos de \boldsymbol{\theta} = (\theta_1, \theta_2).

2.4 Métodos en general

Sean X_1, \dots, X_n una muestra aleatoria de una población con vector de parámetros \boldsymbol{\theta}. La mayoría de los métodos usados para obtener estimadores se pueden dividir en dos grupos; aquellos que tienen que ver con la resolución de un sistema de ecuaciones, \hat{\boldsymbol{\theta}} = \left\{\boldsymbol{\theta} \in \boldsymbol{\Theta} : \hat{\boldsymbol{h}}_n(\boldsymbol{x})=\boldsymbol{h}(\boldsymbol{x};\boldsymbol{\theta}) \right\} y aquellos que tienen que ver con la resolución de un problema de optimización, \hat{\boldsymbol{\theta}} = \arg \min_{\boldsymbol{\theta} \in \boldsymbol{\Theta}} \; \mathrm{d} \left[ \hat{\boldsymbol{h}}_n(\boldsymbol{x}),\boldsymbol{h}(\boldsymbol{x};\boldsymbol{\theta}) \right] donde \mathrm{d}\left[,\right] es una distancia generalizada, \hat{\boldsymbol{h}}_n(\boldsymbol{x}) es una función escalar o vectorial asociada a la muestra y \boldsymbol{h}(\boldsymbol{x};\boldsymbol{\theta}) es una función conformable asociada al modelo teórico seleccionado.

Si tuviese que hacer un listado de métodos:

  • Maximum likelihood
  • Maximum product of spacing
  • Maximum goodness of fit or minimum distance for the Cumulative Distribution Function
    • Kolmogorov-Smirnov
    • Cramér-von Mises
    • Anderson-Darling
  • Method of moments or moment matching
  • Minimum distance for the Moments
  • Minimum distance for the Moment Generating Function
  • Minimum distance for the Characteristic Function
  • Quantile matching
  • Minimum distance for the Quantile Function

En el caso de los métodos que involucran una distancia, cabe la posibilidad de usar diferentes funciones, es decir diferentes métricas. Generalmente se suele usar la distancia euclidiana pero no es la única opción. Adicionalmente, se pueden introducir pesos diferenciados para darle más o menos importancia a alguna parte de una función. Por ejemplo, darle más peso a la distancia en la cola derecha de una función de distribución acumulativa y darle menor peso a la cola izquierda.

2.4.1 Usando paquete fitdistrplus

Código
### Instalar y cargar la libreria betareg (datos FoodExpenditure)
if(!require(betareg)) { install.packages("betareg"); require(betareg) }
library(betareg)
### Instalar y cargar la libreria fitdistrplus (ajuste)
if(!require(fitdistrplus)) { install.packages("fitdistrplus"); require(fitdistrplus) }
library(fitdistrplus)
### Cargar los datos de gasto en alimentación (38 hogares)
data("FoodExpenditure", package="betareg")
### Porcentaje de gasto en alimentación
x <- FoodExpenditure$food / FoodExpenditure$income
### Estimación fitdistrplus::fitdist 
fit.b <- fitdist(x, "beta") # (by default method="mle")
fit.b.mme <- fitdist(x, "beta", method = "mme") # moment matching
fit.b.qme <- fitdist(x, "beta", method = "qme", 
                     probs = c(1/3, 2/3)) # quantile matching
fit.b.KSe <- fitdist(x, "beta", method = "mge",
                     gof = "KS") # Kolmogorov-Smirnov
rbind(MLE = fit.b$estimate, MME = fit.b.mme$estimate, 
      QME = fit.b.qme$estimate, MGE.KS = fit.b.KSe$estimate)
         shape1   shape2
MLE    6.072130 14.82243
MME    5.666999 13.89662
QME    6.483029 16.17922
MGE.KS 7.362950 19.04666
Código
denscomp(list(fit.b, fit.b.mme, fit.b.qme, fit.b.KSe), xlim = c(0,1))

Código
cdfcomp(list(fit.b, fit.b.mme, fit.b.qme, fit.b.KSe), xlim = c(0,1))

Código
qqcomp(list(fit.b, fit.b.mme, fit.b.qme, fit.b.KSe), xlim = c(0,1), fitpch=16)

Código
ppcomp(list(fit.b, fit.b.mme, fit.b.qme, fit.b.KSe), xlim = c(0,1), fitpch=16)

2.5 Ejercicios

  1. Encontrar \hat{\theta}_{ML} = T(x_1, \dots, x_n) cuando X_1 \dots, X_n es una muestra aleatoria de una población con:

    • X \sim \mathcal{U}(a = 0, b = \theta)
    • X \sim \mathcal{U}(a = -\theta, b = \theta)
    • X \sim \mathcal{U}(a = \theta-0.5, b = \theta+0.5)
    • X \sim \mathcal{E}(\beta = \theta)
    • X \sim \mathcal{N}(\mu = \theta, \sigma^2 = \sigma^2_0 \text{ conocido})
    • X \sim \mathcal{N}(\mu = \mu_0 \text{ conocido}, \sigma^2 = \theta)
    • X \sim \mathcal{N}(\mu = \theta_1, \sigma^2 = \theta_2)
    • X \sim \mathcal{Beta}(\alpha = \theta, \beta = 1)
    • X \sim \mathcal{Gamma}(k = k_0 \text{ conocido}, \beta = \theta)
    • X \sim \mathcal{P}(\lambda = \theta)
  2. Encontrar \hat{\theta}_{MM} = T(x_1, \dots, x_n) cuando X_1 \dots, X_n es una muestra aleatoria de una población con:

    • X \sim \mathcal{U}(0, \theta)
    • X \sim \mathcal{U}(-\theta, \theta)
    • X \sim \mathcal{U}(\theta-0.5, \theta+0.5)
    • X \sim \mathcal{U}(\theta_1, \theta_2)
    • X \sim \mathcal{E}(\theta)
    • X \sim \mathcal{N}(\theta_1 = \mu, \theta_2 = \sigma^2)
    • X \sim \mathcal{Beta}(\theta_1 = \alpha, \theta_2 = \beta)
    • X \sim \mathcal{P}(\theta = \lambda)
    • X \sim \mathcal{B}(\theta = p)
    • X \sim \mathcal{B}(\theta_1 = n, \theta_2 = p)
    • X \sim \mathcal{Hg}(\theta_1 = n, \theta_2 = N, \theta_3 = R)