HOWTO · Python
Como fazer um gráfico quantil-quantil em Python
Crie gráficos quantil-quantil em Python com statsmodels ou openturns e escolha um método para avaliar uma distribuição ou comparar amostras.
Nesta página
Um gráfico quantil-quantil (QQ) compara os quantis de uma amostra com quantis teóricos ou com os quantis de outra amostra. Use statsmodels para avaliar uma amostra em relação a uma distribuição escolhida, ou openturns para comparar duas amostras. Um gráfico QQ é um diagnóstico visual: ele pode revelar diferenças de forma e de comportamento das caudas, mas não é um teste estatístico definitivo. Os exemplos abaixo mostram como cada abordagem responde a uma pergunta diferente: se uma amostra segue uma distribuição, ou como duas amostras se comparam entre si.
Gráfico quantil-quantil com o pacote statsmodels em Python
Use statsmodels quando quiser comparar um conjunto de dados com uma distribuição teórica, como a distribuição normal. Instale o pacote com pip install statsmodels. Este pequeno exemplo em Python, autossuficiente, usa apenas a biblioteca padrão para calcular pares de quantis normais empíricos e teóricos. Esses pares são os valores que um gráfico QQ coloca em seus eixos, portanto você pode inspecionar o cálculo antes de desenhar um gráfico.
from statistics import NormalDist
sample = [-1.2, -0.4, 0.1, 0.7, 1.5]
ordered = sorted(sample)
normal = NormalDist()
for index, value in enumerate(ordered, start=1):
probability = (index - 0.5) / len(ordered)
theoretical = normal.inv_cdf(probability)
print(f"{theoretical:.3f} {value:.1f}")
-1.282 -1.2
-0.524 -0.4
0.000 0.1
0.524 0.7
1.282 1.5
Para plotar um array NumPy chamado sample_data com statsmodels, use sm.qqplot(sample_data, line="r") depois de importar matplotlib.pyplot as plt e statsmodels.api as sm, e então chame plt.show(). A opção line="r" adiciona uma linha de referência de regressão por mínimos quadrados. Valores próximos a essa linha são consistentes com os quantis teóricos selecionados; curvatura sistemática ou desvios nas caudas podem indicar diferenças a investigar. A linha de referência é um guia visual, portanto considere o tamanho da amostra e outros diagnósticos antes de concluir que uma distribuição se ajusta. Este método é uma boa escolha quando você tem uma distribuição-alvo em mente e quer que a linha ajustada ajude a avaliar o padrão.
Gráfico quantil-quantil com o pacote openturns em Python
Escolha openturns quando quiser comparar duas amostras diretamente. Instale o pacote com pip install openturns. Em um fluxo de trabalho do OpenTURNS, crie amostras com ot.Normal().getSample(1000) e ot.Uniform().getSample(1000), passe-as para ot.VisualTest.DrawQQplot(normal_sample, uniform_sample) e então exiba o gráfico com View(qq_graph).show() de openturns.viewer. Este esboço da API é mostrado inline porque o runtime do artigo configurado não tem o OpenTURNS instalado; não é um exemplo executado, e exibir o gráfico também requer um visualizador gráfico.
Em um gráfico QQ de duas amostras, cada ponto emparelha quantis correspondentes das amostras. Um padrão próximo do linear indica uma estrutura de quantis semelhante, enquanto curvatura ou desvios nas extremidades mostram onde as amostras diferem. Este método do OpenTURNS não oferece o mesmo controle de linha de referência que o exemplo de statsmodels. Use-o para comparação direta de amostra com amostra; use statsmodels quando precisar comparar dados com uma distribuição teórica especificada e escolher uma linha de referência.
Para outra opção de plotagem em Python, consulte Como usar o Gnuplot com Python.