2015-12-02 7 views
11

Hier ist mein Code:Standardabweichung in numpy

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

es produziert 0.5

Ich bin zuversichtlich, dass dies falsch ist. Was mache ich falsch?

+1

Das ist richtig. 'std = RMS (Daten - Mittelwert)'. In diesem Fall: 'std = sqrt ((0.5^2 + 0.5^2)/2) = sqrt (0.25) = 0.5' –

+0

@MadPhysicist, danke, ich bin gerade ein wenig mit Stichprobe und Bevölkerung std verwechselt worden. Google-Tabelle verwendet Beispiel-Standardabweichung unter stdev. – user1700890

+0

Setzen Sie den optionalen 'ddof' Parameter auf' 1', um die Population zu erhalten: http://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html –

Antwort

18

Standardmäßig gibt numpy.std die Standardabweichung der Population zurück. In diesem Fall wird np.std([0,1]) korrekt als 0.5 gemeldet. Wenn Sie die Proben-Standardabweichung suchen, können Sie einen optionalen ddof Parameter std() liefern:

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

ddof modifiziert den Teiler der Summe der Quadrate der Proben-minus-Mittelwert. Der Divisor ist N - ddof, wobei der Standardwert ddof0 ist, wie Sie aus Ihrem Ergebnis sehen können.

+0

Ich denke, Standard von numpy ist "Bevölkerung" Standardabweichung, die N ist und Stichprobe Standardabweichung ist N-1. – user1700890

+0

Ich gebe zu, dass meine Terminologie rückwärts sein kann. –

+0

Behoben. Danke für die Korrektur. –

Verwandte Themen