標準偏差はpandasとnumpyの間で異なります。なぜ、どちらが正しいのですか?(相対的な差は3.5%であり、丸めによるものではありません。これは私の意見では高いです)。
例
import numpy as np
import pandas as pd
from StringIO import StringIO
a='''0.057411
0.024367
0.021247
-0.001809
-0.010874
-0.035845
0.001663
0.043282
0.004433
-0.007242
0.029294
0.023699
0.049654
0.034422
-0.005380'''
df = pd.read_csv(StringIO(a.strip()), delim_whitespace=True, header=None)
df.std()==np.std(df) # False
df.std() # 0.025801
np.std(df) # 0.024926
(0.024926 - 0.025801) / 0.024926 # 3.5% relative difference
私はこれらのバージョンを使用します:
パンダ:「0.14.0」numpy:「1.8.1」
一言で言えば、どちらも「間違っている」わけではありません。 Pandasは 不偏推定量 (分母の_N-1
_)を使用しますが、Numpyはデフォルトでは使用しません。
それらを同じように動作させるには、_ddof=1
_を numpy.std()
に渡します。
詳細については、を参照してください。
pandas
をnumpy
と同じように実行するには、_ddof=0
_パラメーターを渡すことができるため、df.std(ddof=0)
になります。
この短いビデオでは、サンプルに_n-1
_が好まれる理由をよく説明しています。 https://www.youtube.com/watch?v=Cn0skMJ2F3c