
223
223
14.6 CLT を適用する
sigma = math.sqrt(1 - rho**2)
for _ in range(n-1):
x = random.gauss(x*rho, sigma)
yield x
最初の値は、標準正規値です。引き続く値は先行値に依存します。前の値が
x
なら、
次の値の平均は
x*rho
で、分散は
1-rho**2
です。
random.gauss
は、分散ではなく標
準偏差を第二引数に取ることに注意してください。
GenerateExpoCorrelated
は、結果の列を取って、指数値に変換します。
def Gen erateExpoCorrelated(rho, n):
normal = list(GenerateCorrelated(rho, n))
uniform = scipy.stats.norm.cdf(normal)
expo = scipy.stats.expon.ppf(uniform)
return exp o
normal
は相関正規値のリストで、
uniform
は
0
から
1
の間の一様値の列です。
expo
は指数値の相関系列です。
ppf
は、「パーセントポイント関数(
percent point
function
)」の頭文字で、逆
CDF
の別名です。
図
14-2
の下の行は、
rho=0.9
の相関指数値の和の分布を示します。相関は、収束
速度を落とします。それにもかかわらず、
n=100
だと正規確率プロットはほぼ直線に
なります。したがって
CLT
は、厳密には、値が相関しているときには使えないので ...