s_results.new('Rel. MSE(P)', 'nm', rel_mse_p_ij) def rel_mse_logit_p_ij(n, d, f): logit_P = logit(d.edge_probabilities(n)) logit_Q = f.baseline_logit(n) return rel_mse(logit(f.edge_probabilities(n)), logit_Q, logit_P) s_results.new('Rel. MSE(logit_P)', 'nm', rel_mse_logit_p_ij) all_results = {'s': s_results} if params['fit_nonstationary']: n_results = s_results.copy() n_results.title = 'Nonstationary fit' all_results['n'] = n_results if params['fit_conditional']: c_results = s_results.copy() c_results.title = 'Conditional fit' all_results['c'] = c_results def initialize(s, f): if params['initialize_true_z']: s.node_covariates['z'][:] = s.node_covariates['z_true'][:] else: s.node_covariates['z'][:] = np.random.randint(0, params['fit_K'], s.N)
for c in covariates: fit_model.beta[c] = None n_fit_model.beta[c] = None # Set up recording of results from experiment results = Results(params['sub_sizes'], params['num_reps'], 'Stationary fit') add_network_stats(results) def est_theta_c(c): return lambda d, f: f.beta[c] for c in covariates: f_est = est_theta_c(c) results.new('%s' % c, 'm', f_est) all_results = {} if params['fit_stationary']: s_results = results.copy() s_results.title = 'Stationary fit' all_results['s'] = s_results if params['fit_nonstationary']: n_results = results.copy() n_results.title = 'Nonstationary fit' all_results['n'] = n_results if params['fit_conditional']: c_results = results.copy() c_results.title = 'Conditional fit' all_results['c'] = c_results if params['fit_conditional_is']: i_results = results.copy() i_results.title = 'Conditional (importance sampled) fit' all_results['i'] = i_results
fit_model.fit = fit_model.fit_kl n_fit_model.fit = n_fit_model.fit_kl # Set up recording of results from experiment s_results = Results(params['sub_sizes'], params['sub_sizes'], params['num_reps'], 'Stationary fit') add_array_stats(s_results) def class_mismatch(n): truth = n.node_covariates['truth'][:] estimated = n.node_covariates['z'][:] return minimum_disagreement(truth, estimated, normalized = False) s_results.new('Class mismatch', 'n', class_mismatch) all_results = { 's': s_results } if params['fit_nonstationary']: n_results = s_results.copy() n_results.title = 'Nonstationary fit' all_results['n'] = n_results if params['fit_conditional']: c_results = s_results.copy() c_results.title = 'Conditional fit' all_results['c'] = c_results if params['fit_conditional_is']: i_results = s_results.copy() i_results.title = 'Conditional (importance sampled) fit' all_results['i'] = i_results def initialize(s, f, offset_extremes): if params['initialize_true_z']: s.node_covariates['z'][:] = s.node_covariates['value'][:] else:
# Set up recording of results from experiment results = Results(params['sub_sizes'], params['num_reps'], 'Stationary fit') add_network_stats(results) def est_theta_c(c): return lambda d, f: f.beta[c] for c in covariates: f_est = est_theta_c(c) results.new('%s' % c, 'm', f_est) all_results = {} if params['fit_stationary']: s_results = results.copy() s_results.title = 'Stationary fit' all_results['s'] = s_results if params['fit_nonstationary']: n_results = results.copy() n_results.title = 'Nonstationary fit' all_results['n'] = n_results if params['fit_conditional']: c_results = results.copy() c_results.title = 'Conditional fit' all_results['c'] = c_results if params['fit_conditional_is']: i_results = results.copy() i_results.title = 'Conditional (importance sampled) fit' all_results['i'] = i_results