def demo(K=3, T=1000, dt_max=20, p=0.25): """ :param K: Number of nodes :param T: Number of time bins to simulate :param dt_max: Number of future time bins an event can influence :param p: Sparsity of network :return: """ ########################################################### # Generate synthetic data ########################################################### network_hypers = {"p": p, "allow_self_connections": False} true_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab( K=K, dt_max=dt_max, network_hypers=network_hypers) assert true_model.check_stability() # Sample from the true model S,R = true_model.generate(T=T, keep=True, print_interval=50) plt.ion() true_figure, _ = true_model.plot(color="#377eb8", T_slice=(0,100)) ########################################################### # Create a test spike and slab model ########################################################### test_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab( K=K, dt_max=dt_max, network_hypers=network_hypers) test_model.add_data(S) # Initialize plots test_figure, test_handles = test_model.plot(color="#e41a1c", T_slice=(0,100)) ########################################################### # Fit the test model with Gibbs sampling ########################################################### N_samples = 100 samples = [] lps = [] for itr in range(N_samples): print("Gibbs iteration ", itr) test_model.resample_model() lps.append(test_model.log_probability()) samples.append(test_model.copy_sample()) # Update plots test_model.plot(handles=test_handles) ########################################################### # Analyze the samples ########################################################### analyze_samples(true_model, samples, lps)
def demo(K=3, T=1000, dt_max=20, p=0.25): """ :param K: Number of nodes :param T: Number of time bins to simulate :param dt_max: Number of future time bins an event can influence :param p: Sparsity of network :return: """ ########################################################### # Generate synthetic data ########################################################### network_hypers = {"p": p, "allow_self_connections": False} true_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab( K=K, dt_max=dt_max, network_hypers=network_hypers) assert true_model.check_stability() # Sample from the true model S,R = true_model.generate(T=T, keep=True, print_interval=50) plt.ion() true_figure, _ = true_model.plot(color="#377eb8", T_slice=(0,100)) ########################################################### # Create a test spike and slab model ########################################################### test_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab( K=K, dt_max=dt_max, network_hypers=network_hypers) test_model.add_data(S) # Initialize plots test_figure, test_handles = test_model.plot(color="#e41a1c", T_slice=(0,100)) ########################################################### # Fit the test model with Gibbs sampling ########################################################### N_samples = 100 samples = [] lps = [] for itr in xrange(N_samples): print "Gibbs iteration ", itr test_model.resample_model() lps.append(test_model.log_probability()) samples.append(test_model.copy_sample()) # Update plots test_model.plot(handles=test_handles) ########################################################### # Analyze the samples ########################################################### analyze_samples(true_model, samples, lps)
def demo(K=3, T=1000, dt_max=20, p=0.25): """ :param K: Number of nodes :param T: Number of time bins to simulate :param dt_max: Number of future time bins an event can influence :param p: Sparsity of network :return: """ ########################################################### # Generate synthetic data ########################################################### network = ErdosRenyiFixedSparsity(K, p, v=1., allow_self_connections=False) bkgd_hypers = {"alpha": 1.0, "beta": 20.0} true_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab( K=K, dt_max=dt_max, bkgd_hypers=bkgd_hypers, network=network) A_true = np.zeros((K, K)) A_true[0, 1] = A_true[0, 2] = 1 W_true = np.zeros((K, K)) W_true[0, 1] = W_true[0, 2] = 1.0 true_model.weight_model.A = A_true true_model.weight_model.W = W_true true_model.bias_model.lambda0[0] = 0.2 assert true_model.check_stability() # Sample from the true model S, R = true_model.generate(T=T, keep=True, print_interval=50) plt.ion() true_figure, _ = true_model.plot(color="#377eb8", T_slice=(0, 100)) # Save the true figure true_figure.savefig("gifs/true.gif") ########################################################### # Create a test spike and slab model ########################################################### test_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab(K=K, dt_max=dt_max, network=network) test_model.add_data(S) # Initialize plots test_figure, test_handles = test_model.plot(color="#e41a1c", T_slice=(0, 100)) test_figure.savefig("gifs/test0.gif") ########################################################### # Fit the test model with Gibbs sampling ########################################################### N_samples = 100 samples = [] lps = [] for itr in xrange(N_samples): print "Gibbs iteration ", itr test_model.resample_model() lps.append(test_model.log_probability()) samples.append(test_model.copy_sample()) # Update plots test_model.plot(handles=test_handles) test_figure.savefig("gifs/test%d.gif" % (itr + 1))
def demo(K=3, T=1000, dt_max=20, p=0.25): """ :param K: Number of nodes :param T: Number of time bins to simulate :param dt_max: Number of future time bins an event can influence :param p: Sparsity of network :return: """ ########################################################### # Generate synthetic data ########################################################### network = ErdosRenyiFixedSparsity(K, p, v=1., allow_self_connections=False) bkgd_hypers = {"alpha": 1.0, "beta": 20.0} true_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab( K=K, dt_max=dt_max, bkgd_hypers=bkgd_hypers, network=network) A_true = np.zeros((K,K)) A_true[0,1] = A_true[0,2] = 1 W_true = np.zeros((K,K)) W_true[0,1] = W_true[0,2] = 1.0 true_model.weight_model.A = A_true true_model.weight_model.W = W_true true_model.bias_model.lambda0[0] = 0.2 assert true_model.check_stability() # Sample from the true model S,R = true_model.generate(T=T, keep=True, print_interval=50) plt.ion() true_figure, _ = true_model.plot(color="#377eb8", T_slice=(0,100)) # Save the true figure true_figure.savefig("gifs/true.gif") ########################################################### # Create a test spike and slab model ########################################################### test_model = DiscreteTimeNetworkHawkesModelSpikeAndSlab( K=K, dt_max=dt_max, network=network) test_model.add_data(S) # Initialize plots test_figure, test_handles = test_model.plot(color="#e41a1c", T_slice=(0,100)) test_figure.savefig("gifs/test0.gif") ########################################################### # Fit the test model with Gibbs sampling ########################################################### N_samples = 100 samples = [] lps = [] for itr in xrange(N_samples): print "Gibbs iteration ", itr test_model.resample_model() lps.append(test_model.log_probability()) samples.append(test_model.copy_sample()) # Update plots test_model.plot(handles=test_handles) test_figure.savefig("gifs/test%d.gif" % (itr+1))