Article image

GG

Gilzamir Gomes16/05/2024 23:12
Compartilhe

Aprendendo Python com Estatística

  • #Python

Aprender a resolver problemas é tão importante quanto aprender a usar determinada linguagem de programação. Mas você pode muito bem aprender as duas coisas ao mesmo tempo. Áreas como estatística, matemática e física são fontes quase certas de problemas que podem servir de inspiração para o estudante treinar suas habilidades de programação. Por exemplo, neste artigo, vou mostrar como você pode treinar conceitos básicos de Python visualizando um resultado prático do Teorema Central do Limite.

O Teorema Central do Limite permite o estudo de dados que não seguem uma distribuição normal usando, para isso, a ideia de que a distribuição das médias de amostras grandes e aleatórias são aproximadamente normais. Bem, o que isso tem haver com Python. Nada!!! E tudo!!!

Python é uma linguagem muito utilizada em análise dados. Claro, existem outras, como R. Meu foco aqui é Python, quem sabe em outro momento eu faça algo sobre R. Então, é uma boa forma de aprendermos algo sobre Python tentando mostrar o Teorema Central do Limite da prática. O que precisamos fazer:

  1. Gerar N amostras de tamanho M.
  2. Calcular as médias das amostras.
  3. Gerar o histograma das médias.

Para gerarmos as N amostras, demos usar um gerador de números pseudo-aleatórios. O módulo random nos dá essa possibilidade. Para calcular as médias, podemos usar operações comuns da Python, como soma e divisão. É importante frizar que há um jeito muito rápido de se fazer tudo isso usando um módulo chamado numpy combinado com matplotlib, usando poucas linhas de código:

import numpy as np #importo o módulo numpy e o nomeio como np
from matplotlib import pyplot as plt # importo o objeto pyplot e o nomeio de plt.

samples = np.random.rand(100, 100) #gero cem amostras de tamanho 100
means = np.mean(samples, axis = 1) #calcula as médias de cada amostra
plt.hist(means)
plt.show() #no colaboratory, esse comando não é necessário

O gráfico

image

foi o resultado da execução do exemplo dado. Mas, uma pequena alteração no código, resultando em

import numpy as np #importo o módulo numpy e o nomeio como np
from matplotlib import pyplot as plt # importo o objeto pyplot e o nomeio de plt.

samples = np.random.rand(1000, 100) #gero mil amostras de tamanho 100
means = np.mean(samples, axis = 1) #calcula as médias de cada amostra
plt.hist(means)
plt.show() #no colaboratory, esse comando não é necessário

resulta em um gráfico ainda mais próximo de uma distribuição normal:

image

Ok, como este artigo é voltado para iniciantes, talvez você não tenha entendido nada do código usado nos primeiros exemplos. Contudo, estes são apenas exemplos de como deve ser a saída do seu código quando você tentar reproduzir este "experimento".

Então, o desafio consiste em você implementar essa demonstração do Teorema Central do Limite sem usar o numpy. A parte de cálculo, você só deveria usar Python com os pacotes embutidos. Já a parte de gŕafico, você pode utilizar matplotlib mesmo. Que habilidades de Python você vai treinar usando este problema:

  • A biblioteca random (que vem junto com qualquer distribuição python).
  • Operações de laço, pois você precisa somar e dividir.
  • Laços, pois você precisa gerar várias amostras.
  • Listas, pois você precisa guardar as amostras em algum lugar e cada amostra pode ser uma lista.

Estes são os tijolos básicos de uma solução. Vou postar um pedaço da solução para servir de inspiração:

import random


# Função para gerar uma amostra aleatória de tamanho n
def gerar_amostra(n):
amostra = []
for i in range(n):
  amostra.append(random.random())
return amostra

# Gera 100 amostras aleatórias de tamanho 100
amostras = []
for i in range(100):
amostras.append(gerar_amostra(100))

# Imprime as amostras
for amostra in amostras:
print(amostra)
Compartilhe
Comentários (0)