Data Science do zero: Primeiras regras com o Python


def normal_cdf(x, mu=0,sigma=1): return



Baixar 5.26 Mb.
Pdf preview
Página54/75
Encontro24.07.2022
Tamanho5.26 Mb.
#24344
1   ...   50   51   52   53   54   55   56   57   ...   75
Data Science do zero - Primeiras regras
def normal_cdf(x, mu=0,sigma=1):
return (1 + math.erf((x - mu) / math.sqrt(2) / sigma)) / 2


Novamente, na Figura 6-3, vemos alguns:
xs = [x / 10.0 for x in range(-50, 50)]
plt.plot(xs,[normal_cdf(x,sigma=1) for x in xs],'-',label='mu=0,sigma=1')
plt.plot(xs,[normal_cdf(x,sigma=2) for x in xs],'--',label='mu=0,sigma=2')
plt.plot(xs,[normal_cdf(x,sigma=0.5) for x in xs],':',label='mu=0,sigma=0.5')
plt.plot(xs,[normal_cdf(x,mu=-1) for x in xs],'-.',label='mu=-1,sigma=1')
plt.legend(loc=4) # bottom right
plt.title("Diversas Funções de Densidade de Distribuição Cumulativa")
plt.show()
Figura 6-3. Diversas funções de distribuição cumulativa
Algumas vezes teremos que inverter
normal_cdf
para encontrar o valor
correspondente à probabilidade especificada. Não existe uma forma simples de
computar esse inverso, mas
normal_cdf
é contínuo e em crescimento, portanto
podemos
usar
uma
busca
binária
(http://en.wikipedia.org/wiki/Binary_search_algorithm):
def inverse_normal_cdf(p, mu=0, sigma=1, tolerance=0.00001):


"""encontra o inverso mais próximo usando a busca binária"""
# se não for padrão, computa o padrão e redimensiona
if mu != 0 or sigma != 1:
return mu + sigma * inverse_normal_cdf(p, tolerance=tolerance)
low_z, low_p = -10.0, 0 # normal_cdf(-10) está (muito perto de) 0
hi_z, hi_p = 10.0, 1 # normal_cdf(10) está (muito perto de) 1
while hi_z - low_z > tolerance:
mid_z = (low_z + hi_z) / 2 # considera o ponto do meio e o valor da
mid_p = normal_cdf(mid_z) # função de distribuição cumulativa lá
if mid_p < p:
# o ponto do meio ainda está baixo, procura acima
low_z, low_p = mid_z, mid_p

Baixar 5.26 Mb.

Compartilhe com seus amigos:
1   ...   50   51   52   53   54   55   56   57   ...   75




©historiapt.info 2022
enviar mensagem

    Página principal