예제 #1
0
    def f_nll(n, m):
        P = m.edge_probabilities(n)
        w = P / (1.0 - P)
        A = np.array(n.adjacency_matrix())
        r, c = A.sum(1), A.sum(0)

        z = approximate_from_margins_weights(r, c, w, T,
                                             sort_by_wopt_var = False)
        logkappa, logcvsq = log_partition_is(z, cvsq = True)
        print 'est. cv^2 = %.2f (T = %d)' % (np.exp(logcvsq), T)
        return (logkappa - np.sum(np.log(w[A])))
예제 #2
0
A = a.array
r = A.sum(1)
c = A.sum(0)
print r
print c
X = a.edge_covariates['x'].matrix()

for l, theta_l in enumerate(theta_vec):
    print l
    logit_P_l = theta_l * X
    w_l = np.exp(logit_P_l)

    cmle_a_vec[l] = -cond_a_nll(A, w_l)

    z = cond_a_sample(r, c, w_l, T_grid)
    logkappa, logcvsq = log_partition_is(z, cvsq=True)
    cvsq = np.exp(logcvsq)
    logkappa_cvsq[l] = cvsq
    print 'est. cv^2 = %.2f (T_grid = %d)' % (cvsq, T_grid)
    cmle_is_vec[l] = np.sum(np.log(w_l[A])) - logkappa

print 'CMLE-A: %.2f' % theta_vec[np.argmax(cmle_a_vec)]
print 'CMLE-IS: %.2f' % theta_vec[np.argmax(cmle_is_vec)]

plt.figure()
plt.plot(theta_vec, cmle_a_vec)
plt.plot(theta_vec, cmle_is_vec)

plt.figure()
plt.plot(theta_vec, logkappa_cvsq)
A = a.array
r = A.sum(1)
c = A.sum(0)
print r
print c
X = a.edge_covariates['x'].matrix()

for l, theta_l in enumerate(theta_vec):
    print l
    logit_P_l = theta_l * X
    w_l = np.exp(logit_P_l)

    cmle_a_vec[l] = -cond_a_nll(A, w_l)
    
    z = cond_a_sample(r, c, w_l, T_grid)
    logkappa, logcvsq = log_partition_is(z, cvsq = True)
    cvsq = np.exp(logcvsq)
    logkappa_cvsq[l] = cvsq
    print 'est. cv^2 = %.2f (T_grid = %d)' % (cvsq, T_grid)
    cmle_is_vec[l] = np.sum(np.log(w_l[A])) - logkappa

print 'CMLE-A: %.2f' % theta_vec[np.argmax(cmle_a_vec)]
print 'CMLE-IS: %.2f' % theta_vec[np.argmax(cmle_is_vec)]
    
plt.figure()
plt.plot(theta_vec, cmle_a_vec)
plt.plot(theta_vec, cmle_is_vec)

plt.figure()
plt.plot(theta_vec, logkappa_cvsq)