
85
85
6.7 モーメント
return 0.0
index = bisect.bisect(self.xs, x)
p = self.ps[index - 1]
return p
モジュール
bisect
は、二分探索の実装を提供します。累積確率をとって対応する
値を返す
Value
の実装は、次のようになります。
# class Cdf
def Value(self, p):
if p < 0 or p > 1:
raise ValueError('p must be in range [0, 1]')
index = bisect.bisect_left(self.ps, p)
return self.xs[index]
Cdf
があれば、引き続く累積確率の差を計算することで
Pmf
を計算できます。
Cdf
コンストラクタを呼び出して
Pmf
を渡せば、
Cdf.Items
を呼び出して差を計算します。
# class Cdf
def Items(self):
a = self.ps
b = np.roll(a, 1)
b[0] = 0
return zip(self.xs, a-b)
np.roll
は、
a
の要素を右にシフトして、最後の要素を先頭に「回転」して持って
きます。その後、
b
の最初の要素を
0
で置き換え、差
a-b
を計算します。結果は、確
率の
NumPy
配列です。
Cdf
は、その中の値を修飾する
Shift
と
Scale
を提供しますが、確率は変更不能と
して扱われるべきです。
6.7
モーメント
標本を取って、単一の数値に簡約したなら、その数値は統計量です。これまで登場 ...