O módulo scipy.stats contém ferramentas estatísticas e descrições probabilísticas de processos aleatórios. Geradores de números aleatórios para vários processos aleatórios podem ser encontrados em numpy.random.
Histograma e função de densidade de probabilidade
Dadas as observações de um processo aleatório, seu histograma é um estimador de FDP do processo aleatório (função densidade de probabilidade):
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
a = np.random.normal(size=1000)
bins = np.arange(-4, 5)
bins
histogram = np.histogram(a, bins=bins, normed=True)[0]
bins = 0.5*(bins[1:] + bins[:-1])
bins
from scipy import stats
b = stats.norm.pdf(bins) # norm é uma districuição
pl.plot(bins, histogram)
pl.plot(bins, b)
[/pastacode]
Se sabemos que o processo aleatório pertence a uma determinada família de processos aleatórios, como processos normais, podemos fazer um ajuste de máxima verossimilhança das observações para estimar os parâmetros da distribuição subjacente. Aqui nós nos encaixamos um processo normal para os dados observados:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
loc, std = stats.norm.fit(a)
loc
std
[/pastacode]
Percentis
A mediana é o valor de metade das observações abaixo, e metade de cima:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
np.median(a)
[/pastacode]
É também chamado o percentil 50, pelo facto de 5
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
stats.scoreatpercentile(a, 50)
[/pastacode]
Da mesma forma, podemos calcular o percentil 90:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
stats.scoreatpercentile(a, 90)
[/pastacode]
O percentil é um estimador da FDC: função de distribuição cumulativa.
Testes Estatísticos
Um teste estatístico é um indicador de decisão. Por exemplo, se temos dois conjuntos de observações, que nós assumimos gerados a partir de processos de Gauss, podemos usar uma T-teste para decidir se os dois conjuntos de observações são significativamente diferentes:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
a = np.random.normal(0, 1, size=100)
b = np.random.normal(1, 1, size=10)
stats.ttest_ind(a, b)
[/pastacode]
A saída resultante é composta por:
- O valor estatístico T: é um número do sinal que é proporcional à diferença entre os dois processos aleatórios e a magnitude está relacionada com o significado dessa diferença.
- O valor de p: probabilidade de ambos os processos são idênticas. Se for próximo de 1, os dois processos são quase certamente idênticos. O mais próximo de zero, o mais provável é que os processos tenham diferentes significados.