Home

拙著「Pythonデータ分析の第1章「基本統計量の計算」の補足説明

 

Numpyのパーセンタイル値はいろいろな計算法が用意されている。それらを比較するスクリプトを以下のように作成してみた。

 

import numpy as np

 

a = [1,2,3,4]

 

methods = ['inverted_cdf',

           'averaged_inverted_cdf',

           'closest_observation',

           'interpolated_inverted_cdf',

           'hazen',

           'weibull',

           'linear',      # (default)

           'median_unbiased',

           'normal_unbiased',

           'lower',

           'higher',

           'midpoint',

           'nearest']

 

print('a =', a)

for m in methods:

    Qs = np.percentile(a, [25, 50, 75], method = m)

    print(f'{m:>25s}', Qs)

 

b = [1,2,4,8]

print('b =',b)

for m in methods:

    Qs = np.percentile(b, [25, 50, 75], method = m)

    print(f'{m:>25s}', Qs)

 

実行すると以下の結果を得た。

 

a = [1, 2, 3, 4]

             inverted_cdf [1 2 3]

    averaged_inverted_cdf [1.5 2.5 3.5]

      closest_observation [1 2 3]

interpolated_inverted_cdf [1. 2. 3.]

                    hazen [1.5 2.5 3.5]

                  weibull [1.25 2.5  3.75]

                   linear [1.75 2.5  3.25]

          median_unbiased [1.41666667 2.5        3.58333333]

          normal_unbiased [1.4375 2.5    3.5625]

                    lower [1 2 3]

                   higher [2 3 4]

                 midpoint [1.5 2.5 3.5]

                  nearest [2 3 3]

b = [1, 2, 4, 8]

             inverted_cdf [1 2 4]

    averaged_inverted_cdf [1.5 3.  6. ]

      closest_observation [1 2 4]

interpolated_inverted_cdf [1. 2. 4.]

                    hazen [1.5 3.  6. ]

                  weibull [1.25 3.   7.  ]

                   linear [1.75 3.   5.  ]

          median_unbiased [1.41666667 3.         6.33333333]

          normal_unbiased [1.4375 3.     6.25  ]

                    lower [1 2 4]

                   higher [2 4 8]

                 midpoint [1.5 3.  6. ]

                  nearest [2 4 4]

 

 

なお、統計計算のPythonスクリプトは、このウェブサイトにも用意している。

 

 

Home