Dadas uma média e uma variância, existe uma chamada de função simples que traçará uma distribuição normal?
python
matplotlib
user1220022
fonte
fonte
%matplotlib inline
fazer o enredo aparecerscipy.stats.norm.pdf(x, mu, sigma)
vez demlab.normpdf(x, mu, sigma)
math
quando você já importounumpy
e poderia usarnp.sqrt
?math
para operações escalares, uma vez que, por exemplo,math.sqrt
é uma magnitude mais rápido do quenp.sqrt
quando operando em escalares.Não acho que exista uma função que faça tudo isso em uma única chamada. No entanto, você pode encontrar a função de densidade de probabilidade gaussiana em
scipy.stats
.Então, a maneira mais simples que eu poderia inventar é:
Fontes:
fonte
norm.pdf
paranorm(0, 1).pdf
. Isso torna mais fácil se ajustar a outros casos / entender que isso gera um objeto que representa uma variável aleatória.Use seaborn em vez de eu estou usando distplot of seaborn com média = 5 std = 3 de 1000 valores
Você obterá uma curva de distribuição normal
fonte
A resposta de Unutbu está correta. Mas como nossa média pode ser mais ou menos do que zero, eu ainda gostaria de mudar isso:
para isso :
fonte
Se você preferir usar uma abordagem passo a passo, você pode considerar uma solução como a que segue
fonte
Acabei de voltar a isso e tive que instalar o scipy, pois matplotlib.mlab me deu a mensagem de erro
MatplotlibDeprecationWarning: scipy.stats.norm.pdf
ao tentar o exemplo acima. Portanto, o exemplo agora é:fonte
Acredito que seja importante definir a altura, por isso criei esta função:
Onde
sigma
está o desvio padrão,h
é a altura emid
é a média.Aqui está o resultado usando diferentes alturas e desvios:
fonte
você pode obter o cdf facilmente. então pdf via cdf
fonte