statistics —数理統計関数
バージョン3.4の新機能。
ソースコード: :source: `Lib / statistics.py`
このモジュールは、数値(Real
値)データの数学的統計を計算するための関数を提供します。
ノート
特に明記されていない限り、これらの関数は int 、 float 、 decimal.Decimal 、および fractions.Fraction をサポートします。 他のタイプ(数値タワー内かどうかに関係なく)での動作は現在サポートされていません。 混合型も未定義であり、実装に依存します。 入力データが混合型で構成されている場合は、 map()を使用して、一貫した結果を保証できる場合があります。 map(float, input_data)
。
中央の場所の平均と測定
これらの関数は、母集団またはサンプルから平均値または標準値を計算します。
mean()
|
データの算術平均(「平均」)。 |
harmonic_mean()
|
データの調和平均。 |
median()
|
データの中央値(中央値)。 |
median_low()
|
データの中央値が低い。 |
median_high()
|
データの中央値が高い。 |
median_grouped()
|
グループ化されたデータの中央値、つまり50パーセンタイル。 |
mode()
|
離散データの最頻値(最も一般的な値)。 |
広がりの尺度
これらの関数は、母集団またはサンプルが標準値または平均値からどれだけ逸脱する傾向があるかの尺度を計算します。
pstdev()
|
データの母標準偏差。 |
pvariance()
|
データの母分散。 |
stdev()
|
データのサンプル標準偏差。 |
variance()
|
データのサンプル分散。 |
機能詳細
注:関数は、それらに与えられたデータをソートする必要はありません。 ただし、読みやすくするために、ほとんどの例ではソートされたシーケンスを示しています。
- statistics.mean(data)
data のサンプル算術平均を返します。これは、シーケンスまたはイテレーターにすることができます。
算術平均は、データの合計をデータポイントの数で割ったものです。 これは一般に「平均」と呼ばれますが、多くの異なる数学的平均の1つにすぎません。 これは、データの中央の場所の尺度です。
data が空の場合、 StatisticsError が発生します。
使用例:
>>> mean([1, 2, 3, 4, 4]) 2.8 >>> mean([-1.0, 2.5, 3.25, 5.75]) 2.625 >>> from fractions import Fraction as F >>> mean([F(3, 7), F(1, 21), F(5, 3), F(1, 3)]) Fraction(13, 21) >>> from decimal import Decimal as D >>> mean([D("0.5"), D("0.75"), D("0.625"), D("0.375")]) Decimal('0.5625')
ノート
平均は外れ値の影響を強く受けており、中央の場所のロバスト推定値ではありません。平均は必ずしもデータポイントの典型的な例ではありません。 中央値のより堅牢で効率的ではない測定値については、 median()および mode()を参照してください。 (この場合、「効率的」とは、計算効率ではなく統計効率を指します。)
サンプル平均は、真の母集団平均の偏りのない推定値を提供します。つまり、すべての可能なサンプルの平均をとると、
mean(sample)
は母集団全体の真の平均に収束します。 data がサンプルではなく母集団全体を表す場合、mean(data)
は真の母集団の平均μを計算することと同じです。
- statistics.harmonic_mean(data)
実数値のシーケンスまたはイテレータである data の調和平均を返します。
調和平均は、サブコントラリー平均と呼ばれることもあり、データの逆数の算術 mean()の逆数です。 たとえば、 a 、 b 、 c の3つの値の調和平均は、
3/(1/a + 1/b + 1/c)
と同等になります。調和平均は平均の一種であり、データの中心的な位置の尺度です。 速度などの比率または比率である量を平均化する場合に適切なことがよくあります。 例えば:
投資家が、株価収益率(P / E(価格/収益))が2.5、3、および10で、3つの会社のそれぞれで等しい価値の株式を購入するとします。 投資家のポートフォリオの平均株価収益率はどれくらいですか?
>>> harmonic_mean([2.5, 3, 10]) # For an equal investment portfolio. 3.6
算術平均を使用すると、平均が約5.167になりますが、これは高すぎます。
StatisticsError は、 data が空の場合、またはいずれかの要素がゼロ未満の場合に発生します。
バージョン3.6の新機能。
- statistics.median(data)
一般的な「中間2の平均」メソッドを使用して、数値データの中央値(中央値)を返します。 data が空の場合、 StatisticsError が発生します。 data はシーケンスまたはイテレーターにすることができます。
中央値は中央の位置の堅牢な測定値であり、データ内の外れ値の存在による影響が少なくなります。 データポイントの数が奇数の場合、中央のデータポイントが返されます。
>>> median([1, 3, 5]) 3
データポイントの数が偶数の場合、中央値は2つの中間値の平均を取ることによって補間されます。
>>> median([1, 3, 5, 7]) 4.0
これは、データが離散的であり、中央値が実際のデータポイントではない可能性がある場合に適しています。
データが順序(順序演算をサポート)であるが数値ではない(加算をサポートしない)場合は、代わりに median_low()または median_high()を使用する必要があります。
も参照してください
- statistics.median_low(data)
数値データの中央値の低い値を返します。 data が空の場合、 StatisticsError が発生します。 data はシーケンスまたはイテレーターにすることができます。
低い中央値は常にデータセットのメンバーです。 データポイントの数が奇数の場合、中央の値が返されます。 偶数の場合、2つの中間値のうち小さい方が返されます。
>>> median_low([1, 3, 5]) 3 >>> median_low([1, 3, 5, 7]) 3
データが離散的であり、中央値を内挿ではなく実際のデータポイントにする場合は、低い中央値を使用します。
- statistics.median_high(data)
データの中央値の高い値を返します。 data が空の場合、 StatisticsError が発生します。 data はシーケンスまたはイテレーターにすることができます。
高い中央値は常にデータセットのメンバーです。 データポイントの数が奇数の場合、中央の値が返されます。 偶数の場合、2つの中間値の大きい方が返されます。
>>> median_high([1, 3, 5]) 3 >>> median_high([1, 3, 5, 7]) 5
データが離散的であり、中央値を内挿ではなく実際のデータポイントにする場合は、高い中央値を使用します。
- statistics.median_grouped(data, interval=1)
補間を使用して、50パーセンタイルとして計算されたグループ化された連続データの中央値を返します。 data が空の場合、 StatisticsError が発生します。 data はシーケンスまたはイテレーターにすることができます。
>>> median_grouped([52, 52, 53, 54]) 52.5
次の例では、データが丸められているため、各値はデータクラスの中点を表します。 1はクラス0.5〜1.5の中点、2は1.5〜2.5の中点、3は2.5〜3.5の中点などです。 与えられたデータでは、中間値はクラス3.5〜4.5のどこかにあり、補間を使用してそれを推定します。
>>> median_grouped([1, 2, 2, 3, 4, 4, 4, 4, 4, 5]) 3.7
オプションの引数 interval はクラス間隔を表し、デフォルトは1です。 クラス間隔を変更すると、当然、補間が変更されます。
>>> median_grouped([1, 3, 3, 5, 7], interval=1) 3.25 >>> median_grouped([1, 3, 3, 5, 7], interval=2) 3.5
この関数は、データポイントが少なくとも間隔離れているかどうかをチェックしません。
- statistics.mode(data)
離散または名目上のデータから最も一般的なデータポイントを返します。 モード(存在する場合)は最も一般的な値であり、中央の場所の堅牢な指標です。
data が空の場合、または最も一般的な値が1つだけではない場合、 StatisticsError が発生します。
mode
は離散データを想定し、単一の値を返します。 これは、学校で一般的に教えられているモードの標準的な扱いです。>>> mode([1, 1, 2, 3, 3, 3, 3, 4]) 3
このモードは、名目(非数値)データにも適用される唯一の統計であるという点で独特です。
>>> mode(["red", "blue", "blue", "red", "green", "red", "red"]) 'red'
- statistics.pstdev(data, mu=None)
母標準偏差(母分散の平方根)を返します。 引数およびその他の詳細については、 pvariance()を参照してください。
>>> pstdev([1.5, 2.5, 2.5, 2.75, 3.25, 4.75]) 0.986893273527251
- statistics.pvariance(data, mu=None)
data の母分散を返します。これは、実数値の空でない反復可能値です。 分散、または平均に関する2次モーメントは、データの変動性(広がりまたは分散)の尺度です。 大きな分散は、データが分散していることを示します。 小さな分散は、平均の周りに密集していることを示します。
オプションの2番目の引数 mu が指定されている場合、それは data の平均である必要があります。 欠落している場合、または
None
(デフォルト)の場合、平均は自動的に計算されます。この関数を使用して、母集団全体からの分散を計算します。 サンプルから分散を推定するには、通常、 Variance()関数の方が適しています。
data が空の場合、 StatisticsError を発生させます。
例:
>>> data = [0.0, 0.25, 0.25, 1.25, 1.5, 1.75, 2.75, 3.25] >>> pvariance(data) 1.25
データの平均をすでに計算している場合は、オプションの2番目の引数 mu としてデータを渡して、再計算を回避できます。
>>> mu = mean(data) >>> pvariance(data, mu) 1.25
この関数は、実際の平均を mu として渡したことを確認しようとはしません。 mu に任意の値を使用すると、無効または不可能な結果が生じる可能性があります。
小数と分数がサポートされています:
>>> from decimal import Decimal as D >>> pvariance([D("27.5"), D("30.25"), D("30.25"), D("34.5"), D("41.75")]) Decimal('24.815') >>> from fractions import Fraction as F >>> pvariance([F(1, 4), F(5, 4), F(1, 2)]) Fraction(13, 72)
ノート
母集団全体で呼び出されると、これにより母分散σ²が得られます。 代わりにサンプルで呼び出された場合、これはバイアスされたサンプル分散s²であり、N自由度の分散としても知られています。
どういうわけか真の母平均μがわかっている場合は、この関数を使用してサンプルの分散を計算し、既知の母平均を2番目の引数として指定できます。 データポイントが代表的なものである場合(例: 独立して同じように分布している場合)、結果は母分散の偏りのない推定値になります。
- statistics.stdev(data, xbar=None)
サンプルの標準偏差(サンプルの分散の平方根)を返します。 引数およびその他の詳細については、 Variance()を参照してください。
>>> stdev([1.5, 2.5, 2.5, 2.75, 3.25, 4.75]) 1.0810874155219827
- statistics.variance(data, xbar=None)
data のサンプル分散を返します。これは、少なくとも2つの実数値の反復可能です。 分散、または平均に関する2次モーメントは、データの変動性(広がりまたは分散)の尺度です。 大きな分散は、データが分散していることを示します。 小さな分散は、平均の周りに密集していることを示します。
オプションの2番目の引数 xbar が指定されている場合、それは data の平均である必要があります。 欠落している場合、または
None
(デフォルト)の場合、平均は自動的に計算されます。データが母集団からのサンプルである場合は、この関数を使用します。 母集団全体から分散を計算するには、 pvariance()を参照してください。
data の値が2未満の場合、 StatisticsError を発生させます。
例:
>>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5] >>> variance(data) 1.3720238095238095
データの平均をすでに計算している場合は、オプションの2番目の引数 xbar としてデータを渡して、再計算を回避できます。
>>> m = mean(data) >>> variance(data, m) 1.3720238095238095
この関数は、実際の平均を xbar として渡したことを確認しようとはしません。 xbar に任意の値を使用すると、無効または不可能な結果が生じる可能性があります。
10進値と小数値がサポートされています。
>>> from decimal import Decimal as D >>> variance([D("27.5"), D("30.25"), D("30.25"), D("34.5"), D("41.75")]) Decimal('31.01875') >>> from fractions import Fraction as F >>> variance([F(1, 6), F(1, 2), F(5, 3)]) Fraction(67, 108)
ノート
これは、ベッセルの補正を使用したサンプル分散s²であり、N-1自由度の分散としても知られています。 データポイントが代表的なものである場合(例: 独立して同じように分布している場合)、結果は真の母分散の偏りのない推定値になるはずです。
実際の母平均μがどういうわけかわかっている場合は、それを pvariance()関数に mu パラメーターとして渡して、サンプルの分散を取得する必要があります。