Um monte de pessoas querem calcular a função massa de probabilidade usando numpy.hist
e está confuso que não pode fazer isso.
No entanto, ele pode calcular a função de densidade de probabilidade e https://github.com/numpy/numpy/issues/1043 fez um ótimo trabalho renomeando normed
para density
.
Análogo a isso, proponho adicionar uma palavra-chave mass
que (se True
) retorna a função de massa de probabilidade.
Eu também implementaria essa função, assim que obtivesse um feedback positivo.
Precisamos discutir o fato de que normalização e binning são dois fatores independentes de um histograma. PDF e PMF são categorias impropper, pois você pode ter variáveis contínuas binned que são normalizadas pela área sob a curva (PDF), aquelas que não estão normalizadas (contagem), aquelas que são normalizadas pela soma dos valores bin (não é realmente um PMF, pois é binned), aqueles que são normalizados pela soma dos valores bin para variáveis não contínuas (Chevy, Volvo, Ford, etc. PMF) e provavelmente outros. Algumas ferramentas aparentemente usam uma entrada de string como seleção.
Tenho discutido com matplotlib sobre isso. Não acho que seja o trabalho do numpy fazer isso porque a normalização é fácil de fazer matematicamente post-hoc. É apenas o gráfico que é difícil. É seu invólucro que dificulta a execução de etapas intermediárias no processo, como a normalização. Mas estou divagando.
Considerando a frequência com que as normalizações são usadas em histogramas, faria sentido para mim permitir a funcionalidade simplesmente de um ponto de vista de conveniência. Claro, uma linha extra não é um grande problema uma vez, mas soma-se e a implementação atual pode ser frustrante ao procurar a norma e perceber que o parâmetro não faz o que você precisa. Pessoalmente, sou a favor de um parâmetro norm_type em vez de adicionar um novo.
Deve-se notar, entretanto, que Matplotlib aceita a estrutura de retorno de np.histogram diretamente como entradas para plot / bar / etc. As coisas se tornam um pouco mais problemáticas ao trabalhar com Pandas DataFrames, já que você tem que fatiá-los manualmente, executar np.histogram e então representar graficamente, mas também é possível.
Resumindo, implementar uma normalização count / sum / pmf em np.histogram é trivial (um argumento contra isso), mas forneceria conveniência em módulos baseados nela.
Há muita discussão em matplotlib / matplotlib # 10398 sobre como adicionar uma palavra-chave que valha a pena revisar
Comentários muito úteis
Considerando a frequência com que as normalizações são usadas em histogramas, faria sentido para mim permitir a funcionalidade simplesmente de um ponto de vista de conveniência. Claro, uma linha extra não é um grande problema uma vez, mas soma-se e a implementação atual pode ser frustrante ao procurar a norma e perceber que o parâmetro não faz o que você precisa. Pessoalmente, sou a favor de um parâmetro norm_type em vez de adicionar um novo.
Deve-se notar, entretanto, que Matplotlib aceita a estrutura de retorno de np.histogram diretamente como entradas para plot / bar / etc. As coisas se tornam um pouco mais problemáticas ao trabalhar com Pandas DataFrames, já que você tem que fatiá-los manualmente, executar np.histogram e então representar graficamente, mas também é possível.
Resumindo, implementar uma normalização count / sum / pmf em np.histogram é trivial (um argumento contra isso), mas forneceria conveniência em módulos baseados nela.