
13.5
ジョイント分布を記録する
■
163
返却値は、期間の最後での腫瘍の体積である
final
と、
seq
の体積の組に新たに
final
の体積を追加した新しい組
new_seq
とである。
Cache.Add
は、次節で説明するように、各期間の最後での腫瘍の年齢とサイズとを記
録する。
13.5
ジョイント分布を記録する
cache
の振る舞いは次のようになる。
class Cache(object):
def
__
init
__
(self):
self.joint = thinkbayes.Joint()
joint
は年齢−サイズの各対の頻度を記録するジョイント
Pmf
であり、年齢とサイズ
とのジョイント分布を近似する。
シミュレーションの各期間で、
ExtendSequence
が
Add
を呼び出す。
# class Cache
def Add(self, age, seq):
final = seq[-1]
cm = Diameter(final)
bucket = round(CmToBucket(cm))
self.joint.Incr((age, bucket))
ここでも、
age
は腫瘍の年齢、
seq
はこれまでの体積の列である。
ジョイント分布に新しいデータを付け加える前に、
Diameter
を使って、体積を
cm
単
位の径に変換する。
def Diameter(volume, factor=3/math.pi/4, exp=1/3.0):
return 2 * (factor * volume) ** exp ...