2017-03-16 12 views
1

私は、numpyを使用して、Pythonで値の配列の四分位数を計算しようとしています。np.percentileが四捨五入と等しくない

X = [1, 1, 1, 3, 4, 5, 5, 7, 8, 9, 10, 1000] 

私は、次の操作を行います:

quartiles = np.percentile(X, range(0, 100, 25)) 
quartiles 
# array([1. , 2.5 , 5. , 8.25]) 

しかし、第一と第三四分位数はそれぞれ、2および8.5でなければなりませんので、これは、間違っています。

これは、次のように示すことができる。

Q1 = np.median(X[:len(X)/2]) 
Q3 = np.median(X[len(X):]) 
Q1, Q3 
# (2.0, 8.5) 

私はnp.percentileが異なる答えを与えるためにやっていることの周りに私の頭を取得することはできません。この上に光が出て、私は非常に感謝しています。

答えて

2

パーセンタイルは、連続したケースでは明確に定義された概念ですが、離散サンプルではそれほど小さくなりません。非常に多くの観測では異なる方法では違いはありません(重複の数と比較して)、実際には小さなサンプルで重要な場合があり、ケースバイケースでどのような意味があるかを理解する必要があります。

あなたに所望の出力を得るために、あなたはパーセンタイル関数の補間=「中間点」を指定する必要があります

quartiles = np.percentile(X, range(0, 100, 25), interpolation = 'midpoint') 
quartiles # array([ 1. , 2. , 5. , 8.5]) 

私はドキュメントhttp://docs.scipy.org/doc/numpy/reference/generated/numpy.percentile.html

を見てすることができことをお勧めしたいです
関連する問題