Menu
CoddyTech

¿Muestra o población?

Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 4 de 64.

Un apicultor pesó la miel de 5 colmenas, en kg. NumPy y pandas no coinciden en la desviación estándar:

values = [18, 22, 25, 19, 26]
print(np.round(np.std(values), 2))
print(np.round(pd.Series(values).std(), 2))

Esto imprime:

3.16
3.54

Ambos suman las mismas desviaciones al cuadrado y después dividen:

Las desviaciones al cuadrado de 5 colmenas, 16, 0, 9, 9 y 16, suman 50. Una flecha lleva a np.std: 50 / 5 = 10, desviación estándar 3.16, la fórmula poblacional. La otra lleva a pandas: 50 / 4 = 12.5, desviación estándar 3.54, la fórmula muestral

Dividir entre n es adecuado para una población: incluye todos los valores. Una muestra se concentra alrededor de su propia media, así que su dispersión parece pequeña; n - 1 lo compensa.

ddof=1 le da a NumPy la fórmula muestral: np.std(a, ddof=1) coincide con pandas. Los datos del modelo son una muestra: una discrepancia en la desviación estándar entre herramientas se debe a ddof, no a un error.

challenge icon

Desafío

Fácil

Una bióloga obtuvo dos desviaciones estándar distintas para las envergaduras de unos murciélagos, en cm. El código inicial las lee en el array spans y la Serie column; su comprobación imprime False.

  1. Los murciélagos son una muestra: corrige la línea de NumPy para que ambas herramientas den la desviación estándar muestral.
  2. Debajo, imprime cuánto queda por debajo la opción predeterminada de NumPy np.std(spans) respecto a column.std(), con 2 decimales.

Para las envergaduras 33, 27, 30, 35 y 29:

Sample std: 3.19 cm, tools agree: True
Dividing by n underestimated it by 0.34 cm

Pruébalo tú mismo

import numpy as np
import pandas as pd

n = int(input())
values = []
for i in range(n):
    values.append(int(input()))
spans = np.array(values)
column = pd.Series(values)

# Esta comprobación imprime False: corrige la línea de NumPy para que ambas herramientas den la desviación estándar muestral
numpy_std = np.round(np.std(spans), 2)
pandas_std = np.round(column.std(), 2)
print(f"Sample std: {numpy_std} cm, tools agree: {numpy_std == pandas_std}")

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Estadística para ML

Practica por tu cuenta: Compilador de Python online