Implementation
This page describes the internal flow of standard_deviation and how the function delegates almost all of its work to variance. Unlike Overview, the goal here is not to repeat the parameters, but to show why the practical behavior of standard deviation almost entirely coincides with that of variance.
The following snippets are taken from the current src/mespy/stats_utils.py implementation. Even though _as_float_vector does not appear directly in the body of standard_deviation, it comes into play immediately through variance(...); the same is true for _validate_weights when w is provided.
Execution sequence
The implementation follows this sequence:
Receives
x,w, andddofwithout performing local validation.Delegates the variance computation to
variance.Applies
np.sqrt(...)to the returned value.Converts the result to a Python
float.
Minimal wrapper over variance
def standard_deviation(
x: ArrayLike,
w: ArrayLike | None = None,
ddof: int | float = 0,
) -> float:
return float(np.sqrt(variance(x, w=w, ddof=ddof)))
This snippet shows that standard_deviation does not reimplement any part of the statistical logic.
Non valida direttamente
x: la validazione avviene dentrovariance(...).Non gestisce direttamente i pesi: anche questo controllo e delegato.
Non distingue con rami propri tra caso pesato e non pesato: eredita i due rami gia presenti nella varianza.
Implemented formula
La definizione operativa e semplicemente
oppure, nel caso pesato,
Per questo motivo tutto cio che influenza la varianza influenza automaticamente anche la deviazione standard.
ddofviene passato senza modifiche avariance(...).Se il denominatore della varianza diventa non positivo, l’errore nasce prima della radice quadrata.
Se i pesi sono invalidi, il fallimento avviene nel validatore comune dei pesi, non in
standard_deviationstessa.
Important interactions with variance
Il comportamento pratico della funzione si capisce meglio leggendo questa dipendenza esplicita.
standard_deviation(x)equivale a prendere la radice quadrata della varianza non pesata conddof=0.standard_deviation(x, w=w)equivale a prendere la radice quadrata della varianza pesata costruita con gli stessi pesi.standard_deviation(x, ddof=1)non introduce una nuova convenzione: chiede semplicemente avariance(...)di usare un denominatore corretto.Di conseguenza, per capire davvero errori, casi limite e ruolo di
ddof, la pagina di riferimento restavariance.