No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Compra acceso a todo Platzi por 1 a帽o

Antes: $249

Currency
$209/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

15D
22H
15M
27S

Distribuciones continuas

9/17
Recursos

Aportes 82

Preguntas 12

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Sin palabras, Una clase perfecta!!!

En la distribuci贸n Normal (Gaussiana) a partir de los datos del Excel deber铆a ser

arr = df['Normally Distributed Housefly Wing Lengths'].values[3:]

En vez de

arr = df['Normally Distributed Housefly Wing Lengths'].values[4:]

Ya que Python inicia el conteo desde 0 y no desde 1, por lo que se est谩 perdiendo el primer dato.

Este curso me est谩 exigiendo bastante, pero a la vez estoy muy feliz con ello, porque en esa escalada de exigencia 谭y谭 谭s谭u谭f谭r谭i谭m谭i谭e谭n谭t谭o谭 el profesor explica muy bien, y d谩ndole 谭u谭n谭o谭s谭 谭c谭a谭b谭e谭z谭a谭z谭o谭s谭 谭a谭l谭 谭t谭e谭c谭l谭a谭d谭o谭 una vuelta, se logra entender.

Muy bien hasta aqu铆 (锝烇浚鈻斤浚)锝

https://www.edx.org/es/course/estadistica-aplicada-a-los-negocios este curso esta gratis por un mes y en verdad les va ayudar a entender todos estos conceptos, lo mejor es que 70% del curso son ejercicios y te das cuenta en que parte empresarial se utiliza al igual te hacen ex谩menes.

Y pensar que esto es solo el inicio de todo el mundo de distribuciones existentes:

Vengo superfrustrado del curso de An谩lisis de datos con python porque se manejan muchos t茅rminos que se dan por hecho que se conocen, pero hasta el momento no hab铆a curso en la plataforma que diera esas bases. El anterior curso de probabilidad y estad铆stica ten铆a cosas muy b谩sicas y nada aplicado en c贸digo. Espero que con este curso cambie un poco eso. Hasta el momento va excelente!

Pueden cargar el archivo con los datos a Google Colab sin la necesidad de descargar alg煤n archivo de manera local. Se usa la url donde estan los datos. y el m茅todo pd.read_csv() Quedaria de la siguiente forma

url = 'https://seattlecentral.edu/qelp/sets/057/s057.txt'
df = pd.read_csv(url)
arr = df
values, dist = np.unique(arr, return_counts=True)
print(values)
plt.bar(values, dist)

Parametric Estimating

  • For cost and duration estimates
  • Definition and types
  • 鈥楬ow to鈥 instructions and examples

A continuaci贸n adjunto un resumen de la clase:

En la distribuci贸n Normal (Gaussiana) a partir de los datos del Excel deber铆a ser
arr = df['Normally Distributed Housefly Wing Lengths'].values[3:]

En vez de
arr = df['Normally Distributed Housefly Wing Lengths'].values[4:]

Ya que Python inicia el conteo desde 0 y no desde 1, por lo que se est谩 perdiendo el primer dato.

Minuto 12:13, es a partir del elemento 3!
Los datos num茅ricos empiezan con 36, entonces la instrucci贸n ser铆a

df['Normally Distributed Housefly Wing Lengths'].values[3:]
#EXERCISE TO PRACTICE CONTINUOUS DISTRIBUTION

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

#Transforming continuous distribution formula, into code (density dist)

def gaussian(x,mu,sigma):
    return 1/(sigma*np.sqrt(2*np.pi))*np.exp(-0.5*pow((x-mu)/sigma,2))

#Using scipy Acumulated distribution 

dist= norm(0,1)
x_1=np.arange(-4,4,0.1)
y_1=[dist.cdf(value) for value in x_1]



if __name__ == "__main__":
    x= np.arange(-4,4,0.1)
    y= gaussian(x,0.0,1.0)
    plt.plot(x,y)
    plt.savefig('barras_cont.png')
    plt.show

    plt.plot(x_1,y_1)
    plt.savefig('barras_cont_2.png')
    plt.show

#EXERCISE TO PRACTICE CONTINUOUS DISTRIBUTION - WINGS SIZE OF FLIES 
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

df= pd.read_excel('s057.xls')
arr= df['Normally Distributed Housefly Wing Lengths'].values[3:]
values,dist= np.unique(arr,return_counts=True)


if __name__ == "__main__":
    plt.bar(values,dist)
    plt.savefig('flies.png')
    plt.show

El t茅rmino 1/蟽鈭2Pi sirve para normalizar la distribuci贸n. Esto quiere decir que las probabilidad de que el valor est茅 entre menos infinito y m谩s infinito tiene que ser igual a 1 (al 100%).
Esto se traduce en que la integral de P(X), es decir el 谩rea bajo la curva, es igual a 1. De ah铆 que el valor m谩ximo de la probabilidad acumulada tambi茅n sea 1.

Buena clase, hasta esa explicaci贸n fue muy adecuada 鈥減andas es la version de excel para python鈥濃 jajaj 馃挌

Para poder ejecutar correctamente el apartado 鈥淒istribuci贸n normal (gausiana) a partir de los datos鈥 he necesitado a帽adir la siguiente linea al comienzo del notebook.

!pip install xlrd==1.2.0

Tambien pueden usar el excel directamente desde la url.

df = pd.read_excel('https://seattlecentral.edu/qelp/sets/057/s057.xls')

Para cargar un archivo , les recomiendo hacer el drive.mount y con %cd dan la ubicaci贸n del archivo, en este caso yo tengo el archivo guardado en mi drive en la ruta : 鈥/content/drive/MyDrive/Colab Notebooks/Curso Platzi estadi虂stica probabilidad/鈥.

Una vez est茅n en la ubicaci贸n correcta los pasos para leer el dataframe son los mismos de siempre:

df = pd.read_excel(鈥榮057.xls鈥)

Es indispensable actualizar pandas y xlrd:

!pip install --upgrade pandas
!pip install --upgrade xlrd

De esta manera solo tiene que guardar el archivo y ya siempre lo van a poder leer desde pandas; lo que se debe hacer siempre es el mount, pero realmente es muy sencillo y no toma casi tiempo.

Espero les sirva.

Por si alguien quiere tener la f贸rmula mejor escrita en el colab:

$$P(X) = \frac{1}{\sigma \sqrt{2 \pi}} \space e ^{-\frac{1}{2}\left(\frac{X-\mu}{\sigma} \right)^2 }$$

Ser谩 que alg煤n d铆a lograr茅 saber tanto como el profe (?)
Who knows鈥

Para automatizar la subida del archivo de excel al disco de colab sin tener q hacerlo manualmente cada vez se puede utilizar el siguiente comando :
!curl -O -J 鈥https://seattlecentral.edu/qelp/sets/057/s057.xls

Pensaba que este curso, me serviria de apoyo para el curso de estadistica computacional en python, pero creo que es al reves

Los enlaces del Colab se est谩n bloqueando, 驴es posible hacer un github para evitarlo?

(
(

Estaba usando Opera para este curso, les recomiendo usar Chrome ya que en Opera no pod铆a subir el archivo de Excel a google colab. Para que lo tengan en cuenta.

Buenas! Comparto mi versi贸n del c贸digo del profe con algunas modificaciones para poder escribirlo en VS Code y hacerlo correr de manera local

import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt
from scipy.stats import norm

def main():
    #In order to import pandas you must install the dependencies via pip.
    #You may also need to install xlrd to use the read_excel fuction from pandas

    df = pd.read_excel('/aqui va la ruta a tu archivo local/s057.xls')
    arr = df['Normally Distributed Housefly Wing Lengths'].values[3:]
    #Getting the unique values and the count of each unique value
    values, dfDist = np.unique(arr, return_counts=True)
    dfDist = dfDist/len(arr) #Getting the percentage of each unique possible values

    mu = arr.mean()
    sigma = arr.std()
    theoDist = norm(mu, sigma)
    x = np.arange(30,60,0.1) #Building an arrange that englobes all the possible values in the df
    y = [theoDist.pdf(value) for value in x] #Applying the normal distribution to all x values in order to get y values
                                             #that complies the Gaussian function
    
    fig, ax = plt.subplots()
    ax.bar(values, dfDist)
    ax.plot(x, y)

    plt.show()



if __name__=='__main__':
    main()

Antes en 3 o 4 horas de estudio alcanzaba a ver varias lecciones, pero en este curso solo alcanzo una por d铆a de estudio. Hay que repasar y estudiar mucho todos los conceptos y aplicaciones. Esta clase me gusto mucho.

: media de la distribuci贸n(tambi茅n conocida como promedio) indica en que punto va a estar la punta de la campana(respecto al eje X)
: desviaci贸n est谩ndar de la distribuci贸n: Indica que tan alejados o dispersos est谩n otros datos respecto a , por lo cual entre mayor sea , va a ser mas ancha la campana y entre menor ser谩, la campana ser谩 mas delgada

Tambi茅n se puede utilizar para dividir la campanas en segmentos(como si fueran percentiles) para analizar segmentos especiales de la campana
Una imagen aclara mucho m谩s

Si corren en Colab y la celda para leer el archivo de excel muestra el error:

Pandas requires version 鈥1.2.0鈥 or newer of 鈥榵lrd鈥 (version 鈥1.1.0鈥 currently installed)

Corran el commando:

!pip install xlrd==1.2.0 --upgrade

Reinicien el runtime y corran la celda 1 donde importan las librer铆as.

Les comparto esta herramienta online que permite entender las distribuciones de probabilidad continuas y discretas, con sus definiciones y permite jugar con ella. Tambi茅n te permite encontrar la mejor distribuci贸n de probabilidad para un conjunto de datos phitter.io

Si no pueden cargar el archivo excel por la version de pandas xlrd incompatible:

ImportError: Pandas requires version '1.2.0' or newer of 'xlrd' (version '1.1.0' currently installed).

Corran esto:

!pip install xlrd==2.0.1

por si google colab le da el siguiente error como a mi: pandas requires version 鈥1.2.0鈥 or newer of 鈥榵lrd鈥 (version 鈥1.1.0鈥 currently installed). Se soluciona agregando la siguiente instrucci贸n en un bloque de c贸digo aparte, para realizar la actualizaci贸n:

pip install --upgrade xlrd

Distribuciones continuas
La distribuci贸n continua m谩 usual es la distribuci贸n normal o Gaussiana, que es la distribuci贸n m谩s usual en la realidad, o en todo caso podemos acomodar dicha distribuci贸n a una normal (Teorema del L铆mite central) tal como vimos con la distribuci贸n binomial.
Et谩 definida por:

Nota:
El c谩lculo con esta funci贸n (integrales) no es sencillo por lo que por lo general se usan tablas o programas (como este caso) para calcularlas

Otra forma de la funci贸n de distribuci贸n acumulada de probabilidad (Cumulative distribution function)

mu = 0.0 # promedio o media
sigma =  1.0  #desviaci贸n est谩ndar

x = np.arange(-4,4,0.1)
y = norm.cdf(x,mu, sigma)
plt.plot(x, y);

Una manera bastante sencilla de adecuar el data frame en este caso, es:

a veces cuando hay demasiada informaci贸n en una clase puede resultar chocante, pero en esta la verdad est谩 todo preciso.

como que pdf no es formato de documento port谩til XD

Cada vez se pone m谩s interesante la clase. La carrera de Data Science se pone muy interesante.

Desde ahora quiero ver todo lo que Francisco Camacho ense帽a. Qu茅 incre铆ble clase.

He generado una distribuci贸n gaussiana pseudo-continua usando 100 tiradas de moneda repitiendo el proceso 10.000.000 de veces

Los invito a usar el c贸digo variando p(se tarda un rato en cargar en google collab)

p = 0.5
n = 100
k = pow(10,7)
arr = []

for i in range(k):
arr.append(binomial(n,p))

s = np.unique(arr,return_counts=True)

x = s[0]
y = s[1]/k

plt.plot(x,y)
plt.show()

Comunidad Platzi
Como diferencia cuando debo utilizar .pdf y .cdf
Saludos

Muy buena clase

Eres un excelente profesor, todo muy claro y bien explicado!!

Buena clase, muchas gracias profe!

Decid铆 hacer una estimaci贸n de distribuci贸n para el ejercicio de simuladores de secuencias de la anterior clase![](https://static.platzi.com/media/user_upload/image-48fa5f7a-f029-4c71-a95f-b38f73545d01.jpg) este fue el resultado ![](https://static.platzi.com/media/user_upload/image-2ab390ea-d9ab-4c8d-bf13-9db89cb63e40.jpg) y este es el codigo que us茅:```js def plot_hist(num_trials): num_values=[0,1,2,3] new_arr=[] for _ in range(num_trials): new_arr.append(binomial(n,p)) sim=np.unique(new_arr,return_counts=True)[1]/len(new_arr) teorica=[binom(3,0.5).pmf(k) for k in num_values] x2=np.arange(0,4, 0.1) mu2=(np.array(new_arr)).mean() sigma2=(np.array(new_arr)).std() dist=norm(mu2,sigma2) y2=[dist.pdf(values) for values in x2] plt.plot(x2,y2) plt.bar(num_values,sim,color='red') plt.bar(num_values,teorica,alpha=0.5,color='blue') plt.title('{} experimentos'.format(num_trials)) plt.show() print(teorica) plot_hist(50) ```La verdad no estoy seguro si el procedimiento que us茅 es el correcto, si alguien podr铆a comentarlo se lo agradecer铆a

Encontr茅 un video en ingl茅s que explica muy bien porque la distribuci贸n normal es una funci贸n de ese tipo y es muy buena, dura 24 minutos:

oigan recuerdo que en mis clases de probabilidad de una variable continua P(X=a) = 0 con a elemento de R, osea : no se pueden calcular las probabilidades de puntos en concreto, seria igual a cero.

por alguna raz贸n si usamos math y no numpy para algunos c谩lculos de la funci贸n, ya no es compatible con mathpltolib y no hace el gr谩fico, genera un error

la parte matem谩tica es lo f谩cil, el c贸digo es lo dificil y no lo explica paso a paso

Realmente arr arranca desde 3 con el valor 36

arr = df['Normally Distributed Housefly Wing Lengths'].values[3:]

No hay nada mas anormal que ver una distribuci贸n normal

![](import numpy as np
import matplotlib.pyplot as plt

def gaussian(x, mu, sigma):
if sigma == 0:
return np.nan
else:
return 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-0.5 * pow((x - mu) / sigma, 2))

x = np.arange(-4, 4.1, 0.1)
y = gaussian(x, 1.0, 1.0)

plt.plot(x, y)
plt.show())

La distribuci贸n exponencial

  • Es una distribuci贸n continuas de probabilidad utilizada para describir variables aleatorias que representan tiempos entre eventos en un proceso de Poisson. La funci贸n de densidad de probabilidad de una distribuci贸n exponencial esta dada por:
f(x) = 位 * e^(-位x)
  • donde 位 es un par谩metro positivo conocido como tasa de fallo o tasa de ocurrencia, y x es la variable aleatoria que representa el tiempo entre eventos.

  • La distribuci贸n exponencial tiene una forma de campana de cola hacia la derecha, lo cual significa que tiene una alta probabilidad de ocurrencia en valores peque帽os de x y una probabilidad cada vez menor a medida que x se vuelve m谩s grande. Su media es 1/位 y su varianza es tambi茅n 1/位^2.

  • La distribuci贸n exponencial se utiliza en una variedad de aplicaciones, como en la modelizaci贸n de tiempos entre fallos en sistemas mec谩nicos, el tiempo entre llamadas telef贸nicas en una central telef贸nica, el tiempo entre llegadas de clientes a una tienda, entre otros. Tambi茅n se utiliza en

para los que tengan error al leer el excel desde pandas


!pip install xlrd==2.0.1

me encanta que deje el berraco colab, ome esos profesores que no lo dejan si que hacen que uno este pendiente si escribio el codigo como es en vez de estar pendiente de entender el tema.

Distribuciones Continuas

Distribucion Normal (Gaussiana)

Esta constituida por una exponencial donde el exponente esta elevado al cuadrado

Su forma grafica es una campana llamada Campana de Gauss

Otras Distribuciones

  • D. Exponencial
  • D. Pareto
  • D. Gamma
  • D. Beta

para aquelllos q en el ultimo les sale el error

  • ufunc 鈥榙ivide鈥 not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule 鈥樷榮afe鈥欌*
    tansfromando el arr a int64 se solucion
arr =  np.int64(arr)

en wsl o linux requiere instalar dependencias de excel
conda or pip install xlrd

Estimando una distribuci贸n Normal

Estas clases cada vez se ponen m谩s interesantes 馃槑

Lo 煤nico es que debi贸 poner un 3 en vez de un 4, se comi贸 el 36. Del resto todo bien.

Habiamos usado cdf y pmf, pero el pdf no entendi a que se refiere.

adicional, segun entiendo en norm(0,1), el 0 se refiere a que el centro de la campana esta en cero, y el 1 es el ancho de esta, pero de donde sacamos esos valores?

Un dato curioso, quise colocar mas l铆neas y una leyendo y revisando por internet encontr茅 esta p谩gina.

Quizas le sea de ayuda.

En vez de

arr = df[鈥楴ormally Distributed Housefly Wing Lengths鈥橾.values[4:]

Es
df.iloc[3:,0].values

Elimina primeras 3, toma primera columna, no tiene que escribir mucho, es un error [4] porque no toma valor 36

En la f贸rmula de la distribuci贸n normal exp representa al n煤mero irracional e que tiene un valor aproximado de 2.71828

Clase para detenerse. Tomarse una pausa, y volver a repasarlo hasta poder interiorizar la aplicaci贸n. Magistral explicaci贸n.

Hola.
Les comparto el c贸digo de la pr谩ctica de Gauss con el archivo de excel realizado desde mi entorno local.
Las librerias que tiene mi entorno son las siguientes:

asttokens==2.0.5
colorama==0.4.4
cycler==0.10.0
executing==0.6.0
icecream==2.1.0
kiwisolver==1.3.1
matplotlib==3.4.2
numpy==1.20.3
pandas==1.2.4
Pillow==8.2.0
Pygments==2.9.0
pyparsing==2.4.7
python-dateutil==2.8.1
pytz==2021.1
scipy==1.6.3
six==1.16.0
xlrd==2.0.1

Y el c贸digo, aca en mi GitHub.

https://tuit.es/N3nc3

Sigo recomendando mucho el uso de icecream para ir revisando el valor que toman nuestras variables, como lo hemos trabajado en collab.
Saludos!

Como python empieza a contar de cero 鈥0鈥 las listas, filas o columnas, las filas a leer en el archivo de excel s057.xls empiezan en 3

arr = df['Normally Distributed Housefly Wing Lengths'].values[3:]

Investigu茅 algunas de las otras distribuciones mencionadas, ac谩 les dejo la informaci贸n si tienen curiosidad tambi茅n:

  • Exponencial: se utiliza com煤nmente para modelar situaciones en las que se quiere estudiar el_ tiempo de espera entre eventos sucesivos_.

  • Pareto: se utiliza para modelar fen贸menos con una distribuci贸n de cola larga, donde_ una peque帽a proporci贸n de eventos extremos tiene un impacto significativo_. Es 煤til para analizar y comprender la concentraci贸n de riqueza, ingresos, tama帽os de ciudades y otros fen贸menos que exhiben un comportamiento de desigualdad extrema.

  • Gamma: se utiliza com煤nmente para modelar eventos que exhiben comportamiento de espera o duraci贸n.

  • Beta: se utiliza para modelar variables aleatorias que representan proporciones o probabilidades. Es particularmente 煤til cuando se trabaja con datos acotados entre 0 y 1 y se necesita capturar la incertidumbre en la estimaci贸n de proporciones o tasas de 茅xito.

  • Laplace: utilizada para modelar variables aleatorias con colas pesadas en los extremos y una concentraci贸n de probabilidades alrededor de su media. Se aplica en diversas 谩reas, como el modelado de ruido, el an谩lisis financiero y la detecci贸n de outliers.

Distribuci贸n gaussiana con SciPy

Es fant谩stico ver los conceptos de probabilidad en c贸digo, pero tambi茅n sientes que llegaste un poco tarde XD

Buena clase. Voy a aprender un poco de Numpy para comprender mejor las funciones y sus estructuras de datos 馃槂

tuve problemas para descargar el archivo desde chrome asi que abri la pag desde FIreFox y si me dejo descargar sin problemas鈥 por si les pasa lo mismo

alguien mas tuvo problemas para descargar el arcivo de excel? es que el enlace parece estar roto

import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt
from scipy.stats import norm 

def gaussian(x, mu, sigma):
    return 1/(sigma*np.sqrt(2*np.pi))*np.exp(-0.5*pow((x-mu)/sigma,2))

if __name__=='__main__':

    x = np.arange(-4, 4, 0.1)
    y = gaussian(x, 0.0, 1.0)
    #plt.plot(x,y)
    #plt.show()

    #distribucion normal gaussiana con la libreria scipy
    dist=norm(0, 1)
    x = np.arange(-4, 4, 0.1)
    y = [dist.pdf(value) for value in x]    # pdf funcion de densidad de probabilidad
    #plt.plot(x,y)
    #plt.show()

    #distribucion normal gaussiana con la libreria scipy
    dist=norm(0, 1)
    x = np.arange(-4, 4, 0.1)
    y = [dist.cdf(value) for value in x]       # cdf densidad de probabilidad acumulada
    #plt.plot(x,y)
    #plt.show()
    
    #distribucion de datos
    df = pd.read_excel("s057.xls", sheet_name="s057")
    datos = df['Normally Distributed Housefly Wing Lengths'].values[4:104]
    values, dist = np.unique(datos, return_counts=True)
    plt.bar(values,dist)
    plt.show()

    #estimacion de distribucion
    mu = datos.mean()
    sigma = datos.std()
    x = np.arange(30, 60, 0.1)
    dist = norm(mu, sigma)
    y = [dist.pdf(value) for value in x ]
    plt.plot(x,y)
    values,dist = np.unique(datos, return_counts=True)
    plt.bar(values, dist/len(datos))
    plt.show()

Me parece que colab brinda varias concesiones con respecto a la sintaxis del c贸digo, usando el mismo c贸digo de la clase salen algunos errores, bueno este c贸digo esta corregido.
Cada ve mas interesante todo el procesamiento de datos.

import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt
from scipy.stats import norm 

def gaussian(x, mu, sigma):
    return 1/(sigma*np.sqrt(2*np.pi))*np.exp(-0.5*pow((x-mu)/sigma,2))

if __name__=='__main__':

    x = np.arange(-4, 4, 0.1)
    y = gaussian(x, 0.0, 1.0)

    plt.plot(x,y)
    plt.show()
import numpy as np
from numpy.random import binomial
from scipy.stats import binom
from math import factorial
import matplotlib.pyplot as plt

# simulaci贸n con 100 lanzamientos de moneda equilibrada
# (ejecuta esta celda varias veces para observar la variaci贸n en los resultados)
p=0.5
n=3
binomial(n, p)

# Vamos a hacer un experimento generando una muestra de conjuntos de lanzamientos de a 3 monedas
arr = []
for _ in range(100):
  arr.append(binomial(n, p))

def plot_hist(num_trials):
    values = [0,1,2,3]
    arr = []
    for _ in range(num_trials):
        arr.append(binomial(3, 0.5))
    distribucion_simulada = np.unique(arr, return_counts=True)[1]/len(arr)
    distribucion_teorica = [binom(3, 0.5).pmf(k) for k in values]
    plt.bar(values, distribucion_teorica, label = 'teor铆a', color = 'red')
    plt.bar(values, distribucion_simulada, label = 'simulaci贸n', alpha = 0.5, color = 'blue')
    plt.title('simulaci贸n con {} experimentos'.format(num_trials))
    plt.show()

plot_hist(20)
plot_hist(200)
plot_hist(20000)