2015-12-02 21 views
11

Ecco il mio codice:Deviazione standard in NumPy

import numpy as np 
print(np.std(np.array([0,1]))) 

Produce 0.5

Sono fiducioso che questo non è corretto. Che cosa sto facendo di sbagliato?

+1

Questo è corretto. 'std = RMS (data - mean)'. In questo caso: 'std = sqrt ((0.5^2 + 0.5^2)/2) = sqrt (0.25) = 0.5' –

+0

@MadPhysicist, grazie, mi sono appena un po 'confuso con il campione e la popolazione std. Il foglio di calcolo di Google utilizza la deviazione standard campione in stdev. – user1700890

+0

Imposta il parametro 'ddof' su' 1' per ottenere lo std della popolazione: http://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html –

risposta

18

Per impostazione predefinita, numpy.std restituisce la deviazione standard della popolazione, nel qual caso np.std([0,1]) è stato segnalato correttamente come 0.5. Se siete alla ricerca per la deviazione standard del campione, è possibile fornire un parametro opzionale ddof a std():

>>> np.std([0, 1], ddof=1) 
0.70710678118654757 

ddof modifica il divisore della somma dei quadrati dei campioni-minus-media. Il divisore è N - ddof, dove il valore predefinito ddof è 0 come si può vedere dal risultato.

+0

Penso che il default di numpy sia la deviazione standard 'population', che è N e la deviazione standard del campione è N-1. – user1700890

+0

Ammetto che la mia terminologia potrebbe essere al contrario. –

+0

corretto. Grazie per la correzione. –

Problemi correlati