Пример #1
0
net.new_edge_covariate('x').from_binary_function_ind(f_x)

data_model = NonstationaryLogistic()
data_model.beta['x'] = theta
for name, block_theta in [('ll', 4.0), ('rr', 3.0), ('lr', -2.0)]:
    data_model.beta[name] = block_theta
alpha_norm(net, alpha_sd)
data_model.match_kappa(net, ('row_sum', 2))
net.generate(data_model)
net.show_heatmap()
net.offset_extremes()

fit_base_model = NonstationaryLogistic()
fit_base_model.beta['x'] = None
fit_model = Blockmodel(fit_base_model, 2)
#fit_model.base_model.fit = fit_model.base_model.fit_conditional

# Initialize block assignments
net.new_node_covariate_int('z')
if from_truth:
    net.node_covariates['z'][:] = net.node_covariates['value'][:]
else:
    net.node_covariates['z'][:] = np.random.random(N) < 0.5

# Calculate NLL at initialized block assignments
fit_model.fit_sem(net, cycles=1, sweeps=0, use_best=False, store_all=True)
baseline_nll = fit_model.sem_trace[0][0]

nll_trace = []
z_trace = np.empty((steps, N))
Пример #2
0
for b in range(params['B']):
    name = 'x_%d' % b
    covariates.append(name)

    data_base_model.beta[name] = np.random.normal(0, params['beta_sd'])

    def f_x(i_1, i_2):
        return np.random.uniform(-np.sqrt(3), np.sqrt(3))

    net.new_edge_covariate(name).from_binary_function_ind(f_x)

# Initialize data (block)model from base model
class_probs = np.random.dirichlet(np.repeat(params['class_conc'], params['K']))
z = np.where(np.random.multinomial(1, class_probs, params['N']) == 1)[1]
net.new_node_covariate_int('z_true')[:] = z
data_model = Blockmodel(data_base_model, params['K'], 'z_true')
Theta = np.random.normal(params['Theta_mean'], params['Theta_sd'],
                         (params['K'], params['K']))
Theta += params['Theta_diag'] * np.identity(params['K'])
Theta -= np.mean(Theta)
data_model.Theta = Theta

net.generate(data_model)
if params['plot_network']:
    net.show_heatmap('z_true')

# Initialize fitting model
fit_base_model = StationaryLogistic()
for c in covariates:
    fit_base_model.beta[c] = None
fit_model = Blockmodel(fit_base_model, params['fit_K'])
Пример #3
0
#!/usr/bin/env python

from Models import Stationary, Blockmodel, FixedMargins
from Network import Network

net = Network(100)
net.new_node_covariate_int('r')[:] = 20
net.new_node_covariate_int('c')[:] = 20
net.new_node_covariate_int('z')[:] = ([0] * 50) + ([1] * 50)

base_model = Blockmodel(Stationary(), 2)
base_model.Theta[0, 0] = 3.0
base_model.Theta[0, 1] = -1.0
base_model.Theta[1, 0] = -2.0
base_model.Theta[1, 1] = 0.0
model = FixedMargins(base_model)

net.generate(base_model)
net.show_heatmap('z')

net.generate(model)
net.show_heatmap('z')