Ejercicio de cálculo de probabilidades con la distribución normal

Una de las cuestiones a trabajar dentro del cálculo de probabilidades en bachillerato es el de aprender a tipificar variables y a usar la tabla de la distribución normal. El ejercicio que se propone tiene ese objetivo. De las posibles alternativas existentes con librerías de python (por ejemplo se podría haber usado scipy.stats) he optado por usar solo sympy y para hacer los gráficos se hace uso de matplotlib. Modificando el fichero LyX/pythontex propuesto podemos cambiar el enunciado o los apartados resueltos para resolver problemas en los que se pida calcular probabilidades de forma directa o manejar de forma inversa la tabla de la normal estándar.

Un enunciado posible del problema que vamos a resolver es:

Ejercicio

Sabemos que el peso del alumnado de este centro escolar siguen una distribución normal de media 6060 kg y de desviación típica 88 kg.

  1. ¿Cuál es la probabilidad de que una persona, elegida al azar, pese menos de 64.364.3 kg?
  2. ¿Cuál es la probabilidad de que una persona, elegida al azar, pese más de 64.364.3 kg?
  3. ¿Cuál es la probabilidad de que una persona, elegida al azar, pese menos de 58.558.5 kg?
  4. ¿Cuál es la probabilidad de que una persona, elegida al azar, pese más de 58.558.5 kg?
  5. ¿Y de que tenga un peso comprendido entre 58.558.5 y 64.364.3 kg?
  6. Determinar el peso de forma que el 23.81%23.81\% del alumnado tenga un peso superior a ese.
  7. Determinar el peso de forma que el 71.31%71.31\% del alumnado tenga un peso inferior a ese.
  8. Determinar el peso de forma que el 24.98%24.98\% del alumnado tenga un peso inferior a ese.
  9. Determinar el peso de forma que el 65.54%65.54\% del alumnado tenga un peso superior a ese.
  10. Si el centro tiene unos 500500 alumnos, ¿qué número de alumnos cabe esperar que tengan un peso inferior a 64.364.3 kg?

Los datos de entrada para construir el ejercicio anterior y su solución se obtienen a partir de:

#redondeo
r=4
#Media y desviación típica de la normal
me=60
dt=8

#Valores de la primera parte: cálculos de probabilidades
#debe ser un valor menor que la media
x1=58.5
#debe ser un valor mayor que la media
x2=64.3

#porcentaje de alumnado con peso superior a
#debe ser un valor mayor que la media
x3=65.7

#porcentaje de alumnado con peso inferior a
#debe ser un valor mayor que la media
x4=64.5

#porcentaje de alumnado con peso inferior a
#debe ser un valor menor que la media
x5=54.6

#porcentaje de alumnado con peso superior a
#debe ser un valor menor que la media
x6=56.8

#Tamaño de la población
n=500

Los gráficos creados para representar las campanas de Gauss se realizan con dos funciones, solo pondré aquí el código de la primera ya que el código de la segunda es muy parecido a este y se puede consultar en el fichero fuente:

#Función que dibuja el área en una normal 0,1,
# es fácil cambiarla para cualquier tipo de normal
def dibuja_normal(x, cond, titulo, nombre):
    Z = Normal('Z', 0, 1)
    y = [N(density(Z)(i)) for i in x]
    z = x[cond]
    zf= np.array([density(Z)(i) for i in z],dtype=float)
    fig, ax = plt.subplots(figsize=(2.25,1.5))
    # Mueve los ejes izquierdo y de abajo a x = 0 e y = 0 respectivamente.
    ax.spines["left"].set_position(("data", 0))
    ax.spines["bottom"].set_position(("data", 0))
    # Oculta los ejes de arriba y de la derecha.
    ax.spines["top"].set_visible(False)
    ax.spines["right"].set_visible(False)
    #Quito las marcas del eje y
    ax.set_yticks([])
    #Dibujamos la normal
    ax.plot(x, y)
    #Dibujamos el área
    ax.fill_between(z, 0, zf)
    #Se pone el título
    ax.set_title(titulo)
    #Se guarda la imagen
    fig.savefig(nombre)
    plt.close()

A partir de los valores de entrada anteriores, la solución del problema que se obtiene es:

Solución

XN(60,8)X\hookrightarrow N(60,8)

  1. P(X<64.3)=P(X608<64.3608)=P(Z<0.5375)P(X<64.3)=P\left(\dfrac{X-60}{8}<\dfrac{64.3-60}{8}\right)=P\left(Z<0.5375\right) =0.7045=0.7045

    image0

  2. P(X>64.3)=P(X608>64.3608)=P(Z>0.5375)P(X>64.3)=P\left(\dfrac{X-60}{8}>\dfrac{64.3-60}{8}\right)=P\left(Z>0.5375\right) =1P(Z0.5375)=10.7045=0.2955=1-P\left(Z\leq0.5375\right)=1-0.7045=0.2955

    image1image2

  3. P(X<58.5)=P(X608<58.5608)=P(Z<0.1875)P(X<58.5)=P\left(\dfrac{X-60}{8}<\dfrac{58.5-60}{8}\right)=P\left(Z<-0.1875\right) =P(Z0.1875)=1P(Z<0.1875)=10.5744=0.4256=P\left(Z\geq0.1875\right)=1-P\left(Z<0.1875\right)=1-0.5744=0.4256

    image3image4image5

  4. P(X>58.5)=P(X608>58.5608)=P(Z>0.1875)P(X>58.5)=P\left(\dfrac{X-60}{8}>\dfrac{58.5-60}{8}\right)=P\left(Z>-0.1875\right) =P(Z<0.1875)=0.5744=P\left(Z<0.1875\right)=0.5744

    image6image7

  5. Usaremos los valores obtenidos anteriormente

    P(58.5<X<64.3)=P(58.5608<X608<64.3608)P(58.5<X<64.3)=P\left(\dfrac{58.5-60}{8}<\dfrac{X-60}{8}<\dfrac{64.3-60}{8}\right)=P(0.1875<Z<0.5375)=P(Z<0.5375)P(Z<0.1875)=P(-0.1875<Z<0.5375)=P\left(Z<0.5375\right)-P\left(Z<-0.1875\right)=0.70450.4256=0.2789=0.7045-0.4256=0.2789

    image8image9image10

  6. Nos piden el valor de x0x_{0} de manera que P(X>x0)=0.2381P\left(X>x_{0}\right)=0.2381. Si tipificamos obtenemos que:

    P(X>x0)=P(X608>x0608)=P(Z>z0)=0.2381P\left(X>x_{0}\right)=P\left(\dfrac{X-60}{8}>\dfrac{x_{0}-60}{8}\right)=P\left(Z>z_{0}\right)=0.2381 donde z0=x0608z_{0}=\dfrac{x_{0}-60}{8}

    image11image12

    P(Z>z0)=0.2381P(Zz0)=1P(Z>z0)P\left(Z>z_{0}\right)=0.2381\,\Leftrightarrow\,P\left(Z\leq z_{0}\right)=1-P\left(Z>z_{0}\right) =10.2381=0.7619=1-0.2381=0.7619 mirando en la tabla:

    z0=0.7125z_{0}=0.7125 y de la ecuación z0=x0608=0.7125x0=65.7z_{0}=\dfrac{x_{0}-60}{8}=0.7125\,\Rightarrow\,x_{0}=65.7

  7. Nos piden el valor de x0x_{0} de manera que P(X<x0)=0.7131P\left(X<x_{0}\right)=0.7131. Si tipificamos obtenemos que:

    P(X<x0)=P(X608<x0608)=P(Z<z0)=0.7131P\left(X<x_{0}\right)=P\left(\dfrac{X-60}{8}<\dfrac{x_{0}-60}{8}\right)=P\left(Z<z_{0}\right)=0.7131 donde z0=x0608z_{0}=\dfrac{x_{0}-60}{8}

    image13

    P(Z<z0)=0.7131P\left(Z<z_{0}\right)=0.7131\, mirando en la tabla:

    z0=0.5625z_{0}=0.5625 y de la ecuación z0=x0608=0.5625x0=64.5z_{0}=\dfrac{x_{0}-60}{8}=0.5625\,\Rightarrow\,x_{0}=64.5

  8. Nos piden el valor de x0x_{0} de manera que P(X<x0)=0.2498P\left(X<x_{0}\right)=0.2498. Si tipificamos obtenemos que:

    P(X<x0)=P(X608<x0608)=P(Z<z0)=0.2498P\left(X<x_{0}\right)=P\left(\dfrac{X-60}{8}<\dfrac{x_{0}-60}{8}\right)=P\left(Z<z_{0}\right)=0.2498 donde z0=x0608z_{0}=\dfrac{x_{0}-60}{8}

    image14image15image16

    P(Z<z0)=0.2498P\left(Z<z_{0}\right)=0.2498\Rightarrow z0<0z_{0}<0 (al ser esa probabilidad menor que 0.50.5) z0>0\Rightarrow-z_{0}>0

    P(Zz0)=P(Z>z0)=1P(Zz0)=10.2498P\left(Z\leq-z_{0}\right)=P(Z>z_{0})=1-P\left(Z\leq z_{0}\right)=1-0.2498 =0.7502=0.7502 mirando en la tabla:

    z0=0.675z0=0.675-z_{0}=0.675\Rightarrow z_{0}=-0.675 y de la ecuación z0=x0608=0.675x0=54.6z_{0}=\dfrac{x_{0}-60}{8}=-0.675\,\Rightarrow\,x_{0}=54.6

  9. Nos piden el valor de x0x_{0} de manera que P(X>x0)=0.6554P\left(X>x_{0}\right)=0.6554. Si tipificamos obtenemos que:

    P(X>x0)=P(X608>x0608)=P(Z>z0)=0.6554P\left(X>x_{0}\right)=P\left(\dfrac{X-60}{8}>\dfrac{x_{0}-60}{8}\right)=P\left(Z>z_{0}\right)=0.6554 donde z0=x0608z_{0}=\dfrac{x_{0}-60}{8}

    image17image18

    P(Z>z0)=0.6554P\left(Z>z_{0}\right)=0.6554\Rightarrow z0<0z_{0}<0 (al ser esa probabilidad mayor que 0.50.5) z0>0\Rightarrow-z_{0}>0

    P(Zz0)=P(Z>z0)=0.6554P\left(Z\leq-z_{0}\right)=P\left(Z>z_{0}\right)=0.6554 mirando en la tabla:

    z0=0.4z0=0.4-z_{0}=0.4\Rightarrow z_{0}=-0.4 y de la ecuación z0=x0608=0.4x0=56.8z_{0}=\dfrac{x_{0}-60}{8}=-0.4\,\Rightarrow\,x_{0}=56.8

  10. Usaremos la probabilidad que ya hemos obtenido anteriormente, ya sabemos que P(X<64.3)=0.7045.P\left(X<64.3\right)=0.7045. Por tanto, el número de personas es 0.7045500=352.30.7045\cdot500=352.3 que redondeado sale 352.0352.0

Fichero fuente y el pdf final de una posible compilación.