web-dev-qa-db-ja.com

pandas vsnumpyの異なる標準

標準偏差は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」

28
Mannaggia

一言で言えば、どちらも「間違っている」わけではありません。 Pandasは 不偏推定量 (分母の_N-1_)を使用しますが、Numpyはデフォルトでは使用しません。

それらを同じように動作させるには、_ddof=1_を numpy.std() に渡します。

詳細については、を参照してください。

36
NPE

pandasnumpyと同じように実行するには、_ddof=0_パラメーターを渡すことができるため、df.std(ddof=0)になります。

この短いビデオでは、サンプルに_n-1_が好まれる理由をよく説明しています。 https://www.youtube.com/watch?v=Cn0skMJ2F3c

1
Xuan