ThinkStats (17)

CDF について。
積分布関数 (CDF) は_任意の値を、その分布におけるパーセンタイル順位にマップする関数_という記述がテキストにあります。自分控えで書いておくとパーセンタイル順位というものは_自分の点数以下の点を取った人の人数を全体の人数で割ったもの_という記述がテキストにありますね。
これを踏まえつつ正規分布の 4.3 節を、と思ったんですが scipy.special とは何か。download した erf.py の中を見てみるに以下な記述があります。

import numpy
import math
from scipy.special import erf, erfinv

numpy は import できるんですが、scipy とか何スか。を、apt-cache search したらパケジがあるみたいですね。入れてみます。

$ sudo apt-get install -fy python-scipy

を、これで使える模様。と、いうことは演習問題 4-9 のソレは random.random() で取得した値を NormalCdf なフィルタに通した 6 つの数値リストを云々、ということなのかどうか。ちょっとヤッてみます。
ええと、Sample は以下なカンジで良いのかどうか。

import random
import erf

def Sample():
    l = [erf.NormalCdf(random.random()) for i in range(6)]
    l.sort()
    return l

sort が値を戻さないのでアレでした。あと Samples は以下なのか。

def Samples():
    l = []
    i = 0
    while i < 1000:
    	  l.append(Sample())
	  i += 1

    return l

で、動作確認してみるに

>>> l = Samples()
>>> ll = zip(*l)
>>> def ave(l):
...     sum = 0
...     for i in l:
...         sum += i
...     return sum/len(l)
...
>>> ave(ll[0])
0.55745589137088014

あら、違うな。ちょっと不調気味なのでいったんここで止めよう。

そういえば

wikipedia のワイブル分布のページを見たんですがワイブル分布の不信頼度は

k * log x - k * log λ

な模様。ちなみに myplot.py によると weibull なナニは以下な形になってます。

    if transform == 'weibull':
        xs.pop()
        ps.pop()
        ps = [-math.log(1.0-p) for p in ps]
        scale['xscale'] = 'log'
        scale['yscale'] = 'log'

y 軸はダブル、ってのは理解できてるはず。つうかこれ、やっぱ諸々についてきちんと理解できてる方と一緒に云々、ってのは勉強になるんだろうなぁ。

追記

うーん、順序期待値な 6 つの値が以下とのことなんですが

{.1.2672, .0.6418, .0.2016, 0.2016, 0.6418, 1.2672}

上の実装だと 1 以上の値は出ないな。こうすれば良いのかな。

>>> import random
>>> import erf
>>> import Cdf
>>> cdf = MakeNormalCdf()

で、Sample が以下?

def Sample(cdf):
    l = [cdf.Value(random.random()) for i in range(6)]
    l.sort()
    return l

Samples は上と同じで良いのか。

>>> list = Samples(cdf)
>>> ret = zip(*list)

確認してみるとこうなりました。

-1.2482199999999994
>>> ave(ret[1])
-0.64199999999999979
>>> ave(ret[2])
-0.22651999999999986
>>> ave(ret[3])
0.19332000000000005
>>> ave(ret[4])
0.63114999999999932
>>> ave(ret[5])
1.2653600000000003

こうして見るにナチュラルのカマシかたがアレに杉ますよね < わし