def test_binomial_optimize(): random = RandomState(139) nsamples = 30 nfeatures = 31 G = random.randn(nsamples, nfeatures) / sqrt(nfeatures) u = random.randn(nfeatures) z = 0.1 + 2 * dot(G, u) + random.randn(nsamples) ntrials = random.randint(10, 500, size=nsamples) y = zeros(nsamples) for i in range(len(ntrials)): y[i] = sum( z[i] + random.logistic(scale=pi / sqrt(3), size=ntrials[i]) > 0) (Q, S0) = economic_qs_linear(G) M = ones((nsamples, 1)) lik = BinomialProdLik(ntrials, LogitLink()) lik.nsuccesses = y ep = ExpFamEP(lik, M, Q[0], Q[1], S0) ep.learn(progress=False) assert_allclose(ep.lml(), -144.2381842202486, rtol=1e-3)
def test_binomial_get_normal_likelihood_trick(): random = RandomState(139) nsamples = 30 nfeatures = 31 G = random.randn(nsamples, nfeatures) / sqrt(nfeatures) u = random.randn(nfeatures) z = 0.1 + 2 * dot(G, u) + random.randn(nsamples) ntrials = random.randint(10, 500, size=nsamples) y = zeros(nsamples) for i in range(len(ntrials)): y[i] = sum( z[i] + random.logistic(scale=pi / sqrt(3), size=ntrials[i]) > 0) (Q, S0) = economic_qs_linear(G) M = ones((nsamples, 1)) lik = BinomialProdLik(ntrials, LogitLink()) lik.nsuccesses = y ep = ExpFamEP(lik, M, Q[0], Q[1], S0) ep.learn(progress=False) nlt = ep.get_normal_likelihood_trick() assert_allclose(nlt.fast_scan(G)[0], [ -143.48903288, -144.32031587, -144.03889888, -144.31806561, -143.90248659, -144.303103, -144.47854112, -144.44469341, -144.285027, -144.31240175, -143.11590263, -142.81623878, -141.67554141, -144.4780024, -144.47780285, -144.10317082, -142.10043322, -143.0813298, -143.99841663, -143.345783, -144.45458683, -144.37877612, -142.56846859, -144.32923028, -144.44116855, -144.45082936, -144.40932741, -143.0212886, -144.47902176, -143.94188634, -143.72765373 ], rtol=1e-5)