
202
■
15
章
次元を扱う
15.12
被覆率
答えたい最後の質問は、「観察された種の割合が与えられたしきい値に達するまで増
えるには、どれだけの読みが必要か」である。
この問いに答えるには、
RunSimulation
で、新種の数よりも観察した種の割合を計算
するものが必要だ。
# class Subject
def RunSimulation(self, num_reads):
m, seen = self.GetSeenSpecies()
n, observations = self.GenerateObservations(num_reads)
curve = []
for k, obs in enumerate(observations):
seen.add(obs)
frac_seen = len(seen) / float(
n)
curve.append((k+1, frac_seen))
return curve
次に、各曲線をループして回り、追加読み込みの数
k
から、
k
読み込みで得られた被
覆率の値
fracs
のリストを対応させる辞書
d
を作る。
def MakeFracCdfs(self, curves):
d = {}
for curve in curves:
for k, frac in curve:
d.setdefault(k, []).append(frac)
cdfs = {}
for k, fracs in d.iteritems():
cdf = thinkbayes.MakeCdfFromList ...