Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Distribuciones continuas

9/17
Recursos

Aportes 56

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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.

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!

Parametric Estimating

  • For cost and duration estimates
  • Definition and types
  • ‘How to’ instructions and examples

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

A continuación adjunto un resumen de la clase:

Buena clase, hasta esa explicación fue muy adecuada “pandas es la version de excel para python”… jajaj 💚

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.

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

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?

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.

Tambien pueden usar el excel directamente desde la url.

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

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”

μ : 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

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 }$$

Muy buena clase

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.

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

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()

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.

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

Buena clase, muchas gracias profe!

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);

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 estadí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(‘s057.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.

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

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 ‘xlrd’ (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.

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?

En vez de

arr = df[‘Normally 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

Será que algún día lograré saber tanto como el profe (?)
Who knows…

Desde ahora quiero ver todo lo que Francisco Camacho enseña. Qué increíble clase.

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

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

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:]

Distribución gaussiana con SciPy

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

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)

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