Tratamento de Dados Ausentes com Pandas

empreteiro






Tratamento de Dados com Pandas

O tratamento de dados ausentes é uma etapa crucial na análise de dados. No Pandas, existem várias funções para lidar com valores faltantes, sendo df.info(), df.dropna() e df.fillna(valor) algumas das mais importantes.

Funções Principais para Dados Ausentes

df.info()

A função info() fornece um resumo conciso do DataFrame, incluindo:

  • Número de entradas não nulas por coluna
  • Tipo de dados de cada coluna
  • Uso de memória

É útil para identificar rapidamente colunas com valores ausentes.

Exemplo de uso:

df.dropna()

A função dropna() remove linhas ou colunas que contenham valores ausentes.

Parâmetros importantes:

  • axis: 0 para linhas, 1 para colunas
  • how: ‘any’ (remove se algum valor for NA) ou ‘all’ (remove se todos os valores forem NA)
  • subset: colunas específicas para verificar valores NA

Exemplo de uso:

df.fillna(valor)

A função fillna() preenche valores ausentes com um valor específico.

Pode receber como argumento:

  • Um valor escalar (preenche todos os NAs com esse valor)
  • Um dicionário mapeando colunas para valores
  • Métodos como ‘ffill’ (forward fill) ou ‘bfill’ (backward fill)

Exemplo de uso:

Comparativo entre as Abordagens

Vantagens de df.dropna()

  • Remove completamente os dados problemáticos
  • Mantém a integridade dos dados restantes
  • Simples de implementar

Desvantagens de df.dropna()

  • Pode resultar em perda significativa de dados
  • Pode introduzir viés se os valores ausentes não forem completamente aleatórios
  • Não é adequado quando há muitos valores ausentes

Vantagens de df.fillna()

  • Preserva o tamanho do dataset
  • Mantém outras variáveis inalteradas
  • Permite uso de diferentes estratégias de preenchimento

Desvantagens de df.fillna()

  • Pode distorcer distribuições estatísticas
  • Pode introduzir viés se o método de preenchimento for inadequado
  • Valores preenchidos podem não representar a realidade

Conclusão

O tratamento de dados ausentes é fundamental para uma análise precisa. A escolha entre dropna() e fillna() depende do contexto:

  • Use info() para diagnosticar a extensão dos dados ausentes
  • Prefira dropna() quando a perda de dados for aceitável e os valores ausentes forem escassos
  • Use fillna() com estratégias adequadas quando precisar manter todas as observações

Lembre-se que não existe uma solução única – a abordagem deve ser adaptada a cada conjunto de dados e pergunta de pesquisa.

Referências

  • Pandas Documentation: Handling Missing Data
  • McKinney, W. (2017). Python for Data Analysis.
  • VanderPlas, J. (2016). Python Data Science Handbook.


Análise do estimador para distribuição uniforme

Seja X₁, X₂, …, Xₙ uma amostra aleatória com distribuição uniforme U(0, Θ), onde Θ é desconhecido. Definimos o estimador: \(\hat{\Theta}_n = \max(X_1, X_2, …, X_n)\).

Problema

Precisamos encontrar:

  1. O viés do estimador: \(B(\hat{\Theta}_n) = E[\hat{\Theta}_n] – \Theta\)
  2. O erro quadrático médio: \(EQM(\hat{\Theta}_n) = E[(\hat{\Theta}_n – \Theta)^2]\)

Para isso, utilizaremos o fato de que a função densidade de probabilidade de \(\hat{\Theta}_n\) é:

\(f_{\hat{\Theta}_n}(y) = n f_X(y) [F_X(y)]^{n-1}\)

Distribuição do Máximo

Para uma distribuição uniforme U(0, Θ):

  • \(f_X(x) = \frac{1}{\Theta}\) para \(0 \leq x \leq \Theta\)
  • \(F_X(x) = \frac{x}{\Theta}\) para \(0 \leq x \leq \Theta\)

Portanto, a densidade do máximo é:

\(f_{\hat{\Theta}_n}(y) = n \cdot \frac{1}{\Theta} \cdot \left(\frac{y}{\Theta}\right)^{n-1} = \frac{n y^{n-1}}{\Theta^n}\)

para \(0 \leq y \leq \Theta\).

Cálculo do Valor Esperado

Para encontrar o viés, primeiro calculamos \(E[\hat{\Theta}_n]\):

\(E[\hat{\Theta}_n] = \int_{0}^{\Theta} y \cdot f_{\hat{\Theta}_n}(y) dy = \int_{0}^{\Theta} y \cdot \frac{n y^{n-1}}{\Theta^n} dy\) \(= \frac{n}{\Theta^n} \int_{0}^{\Theta} y^n dy = \frac{n}{\Theta^n} \cdot \left[\frac{y^{n+1}}{n+1}\right]_{0}^{\Theta}\) \(= \frac{n}{\Theta^n} \cdot \frac{\Theta^{n+1}}{n+1} = \frac{n}{n+1} \Theta\)

Portanto, \(E[\hat{\Theta}_n] = \frac{n}{n+1} \Theta\)

Cálculo do Viés

O viés é dado por:

\(B(\hat{\Theta}_n) = E[\hat{\Theta}_n] – \Theta = \frac{n}{n+1} \Theta – \Theta\) \(= \left(\frac{n}{n+1} – 1\right) \Theta = -\frac{1}{n+1} \Theta\)

O viés do estimador é \(B(\hat{\Theta}_n) = -\frac{\Theta}{n+1}\)

Cálculo do Erro Quadrático Médio

Para calcular o EQM, primeiro precisamos de \(E[\hat{\Theta}_n^2]\):

\(E[\hat{\Theta}_n^2] = \int_{0}^{\Theta} y^2 \cdot f_{\hat{\Theta}_n}(y) dy = \int_{0}^{\Theta} y^2 \cdot \frac{n y^{n-1}}{\Theta^n} dy\) \(= \frac{n}{\Theta^n} \int_{0}^{\Theta} y^{n+1} dy = \frac{n}{\Theta^n} \cdot \left[\frac{y^{n+2}}{n+2}\right]_{0}^{\Theta}\) \(= \frac{n}{\Theta^n} \cdot \frac{\Theta^{n+2}}{n+2} = \frac{n}{n+2} \Theta^2\)

Agora podemos calcular o EQM:

\(EQM(\hat{\Theta}_n) = E[(\hat{\Theta}_n – \Theta)^2] = E[\hat{\Theta}_n^2] – 2\Theta E[\hat{\Theta}_n] + \Theta^2\) \(= \frac{n}{n+2} \Theta^2 – 2\Theta \cdot \frac{n}{n+1} \Theta + \Theta^2\) \(= \left(\frac{n}{n+2} – \frac{2n}{n+1} + 1\right) \Theta^2\)

Após simplificação algébrica, obtemos:

\(EQM(\hat{\Theta}_n) = \frac{2\Theta^2}{(n+1)(n+2)}\)

O erro quadrático médio é \(EQM(\hat{\Theta}_n) = \frac{2\Theta^2}{(n+1)(n+2)}\)

Simulação em R

O código abaixo em R simula este estimador para verificar os resultados teóricos:

Conclusões

Para o estimador \(\hat{\Theta}_n = \max(X_1, X_2, …, X_n)\) de uma distribuição uniforme U(0, Θ):

  1. O estimador é viesado: \(B(\hat{\Theta}_n) = -\frac{\Theta}{n+1}\)
  2. O erro quadrático médio é: \(EQM(\hat{\Theta}_n) = \frac{2\Theta^2}{(n+1)(n+2)}\)

Observa-se que tanto o viés absoluto quanto o EQM diminuem à medida que o tamanho da amostra n aumenta, demonstrando que o estimador é assintoticamente não viesado e consistente.

Referências

1. Casella, G., & Berger, R. L. (2002). Statistical Inference. Duxbury.

2. Rice, J. A. (2007). Mathematical Statistics and Data Analysis. Cengage Learning.

3. Hogg, R. V., McKean, J. W., & Craig, A. T. (2019). Introduction to Mathematical Statistics. Pearson.

LinkedIn
Share
Instagram