Python で期待値を計算する方法 (例付き)


確率分布は、確率変数が特定の値を取る確率を示します。

たとえば、次の確率分布は、特定のサッカー チームが特定の試合で特定の数のゴールを獲得する確率を示します。

確率分布の期待値を求めるには、次の式を使用できます。

μ = Σx * P(x)

金:

  • x: データ値
  • P(x): 値の確率

たとえば、サッカー チームの予想ゴール数は次のように計算されます。

μ = 0*0.18 + 1*0.34 + 2*0.35 + 3*0.11 + 4*0.02 = 1.45ゴール。

Python で確率分布の期待値を計算するには、単純な関数を定義できます。

 import numpy as np

def expected_value(values, weights):
    values = np. asarray (values)
    weights = np. asarray (weights)
    return (values * weights). sum ()/weights. sum ()

次の例は、この関数を実際に使用する方法を示しています。

例: Python での期待値の計算

次のコードは、前に定義したExpected_value()関数を使用して確率分布の期待値を計算する方法を示しています。

 #define values
values = [0, 1, 2, 3, 4]

#define probabilities
probs = [.18, .34, .35, .11, .02]

#calculate expected value
expected_value(values, probs)

1.450000

期待値は1.45です。これは、以前に手動で計算した値と一致します。

値配列と確率配列の長さが等しくない場合、この関数はエラーを返すことに注意してください。

例えば:

 #define values
values = [0, 1, 2, 3, 4]

#define probabilities
probs = [.18, .34, .35, .11, .02, .05, .11]

#attempt to calculate expected value
expected_value(values, probs)

ValueError : operands could not be broadcast together with shapes (5,) (7,) 

最初の配列の長さが5 であるのに対し、2 番目の配列の長さは7であるため、エラーが発生します。

この期待値関数が機能するには、両方の配列の長さが等しい必要があります。

追加リソース

次のチュートリアルでは、Python で他のメトリクスを計算する方法を説明します。

Python でトリミング平均を計算する方法
Python で幾何平均を計算する方法
Pythonで平均値の標準誤差を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です