Estimador de máxima verossimilhança da distribuição geométrica

Neste notebook do Jupyter vamos demonstrar a dedução matemática do estimador de máxima verossimilhança do parâmetro da distribuição geométrica. Para ver os resultados dos comandos de cada etapa coloque o mouse ao lado esquerdo da célula que tem os comandos e clique em 'Run this cell'

Preparação

Antes de começar importamos a biblioteca de matemática simbólica do Python. Ela permite criar expressões, como funções e suas derivadas, e manipulá-las simbolicamente.

In [1]:
from sympy import *
init_printing()

A função de densidade probabilística

Para uma dada observação $x_i$ a função de massa da distribuição geométrica é

In [2]:
x, p, i, n = symbols('x p i n')
f = p*(1-p)**(Indexed(x,i))
f
Out[2]:
$\displaystyle p \left(1 - p\right)^{{x}_{i}}$

Defina a função de log-verossimilhança negativa

É a soma dos logarítimos dos valores da função acima sobre todos os valores dos dados ($x_i$). Primeiro calculamos o logarítmo da função de massa:

In [3]:
lf = ln(f)
lf=expand_log(lf, force=true)
lf
Out[3]:
$\displaystyle \log{\left(p \right)} + \log{\left(1 - p \right)} {x}_{i}$

e em seguida definimos a sua soma sobre todos os valores de $x_i$

In [4]:
LL = Sum(lf, (i,1,n))
LL
Out[4]:
$\displaystyle \sum_{i=1}^{n} \left(\log{\left(p \right)} + \log{\left(1 - p \right)} {x}_{i}\right)$

Estimativa de máxima verossimilhança (mle)

É o valor do parâmetro $p$ que maximiza a função de log-verossimilhança (ou minimiza a de log-verossimilhança negativa). Sabemos que as funções têm derivadas zero em seus pontos máximos e mínimos. Então o truque para achar a expressão do mle é encontrar a expressão para o valor de $p$ que faz a derivada da função de log-verossimilhança ser igual a zero. São duas etapas:

Calcule a derivada da função de log-verossimlhança em relação ao parâmetro

Aqui usamos o comando 'diff' para obter a derivada da log-verossimilhança em função do parâmetro $p$:

In [5]:
dLL = diff(LL,p)
dLL=simplify(expand(dLL))
dLL
Out[5]:
$\displaystyle \frac{n}{p} + \frac{\sum_{i=1}^{n} {x}_{i}}{p - 1}$

O somatório $\sum_{i=1}^n 1$ nada mais é que $n$. Substituímos isto na função obtida acima temos:

In [6]:
g=Sum(1, (i,1,n))
dLL=dLL.subs(g,n)      
dLL
Out[6]:
$\displaystyle \frac{n}{p} + \frac{\sum_{i=1}^{n} {x}_{i}}{p - 1}$

Resolvemos a derivada para o parâmetro

Agora igualamos a derivada da função de log-verossimilhança a zero e resolvemos esta equação para o parãmetro $p$:

In [7]:
solve(dLL,p)
Out[7]:
$\displaystyle \left[ \frac{n}{n + \sum_{i=1}^{n} {x}_{i}}\right]$
In [ ]: