Menu
CoddyTech

Campione o popolazione?

Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 4 di 64.

Un apicoltore ha pesato il miele proveniente da 5 arnie, in kg. NumPy e pandas non concordano sulla deviazione standard:

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

Stampa:

3.16
3.54

Entrambi sommano le stesse deviazioni al quadrato, poi dividono:

Le deviazioni al quadrato di 5 alveari, 16, 0, 9, 9 e 16, sommate danno 50. Una freccia conduce a np.std: 50 / 5 = 10, std 3.16, la formula della popolazione. L’altra conduce a pandas: 50 / 4 = 12.5, std 3.54, la formula del campione

Dividere per n è adatto a una popolazione, che comprende tutti i valori. Un campione si concentra sulla propria media, quindi la sua dispersione sembra ridotta; n - 1 compensa questa differenza.

ddof=1 dà a NumPy la formula campionaria: np.std(a, ddof=1) corrisponde a pandas. I dati del modello sono un campione: una discrepanza nella deviazione standard tra strumenti dipende da ddof, non è un bug.

challenge icon

Sfida

Facile

Una biologa ha ottenuto due valori diversi per la deviazione standard delle aperture alari di alcuni pipistrelli, in cm. Il codice iniziale le legge nell'array spans e nella Series column; il controllo stampa False.

  1. I pipistrelli costituiscono un campione: correggi la riga NumPy in modo che entrambi gli strumenti calcolino la deviazione standard campionaria.
  2. Sotto, stampa di quanto il valore predefinito di NumPy np.std(spans) è inferiore a column.std(), con 2 cifre decimali.

Per le aperture alari 33, 27, 30, 35 e 29:

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

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Statistica per il machine learning

Esercitati da solo: Compilatore Python online