from electromorpho.core.gaussian import sample_from_gn, to_mvn seeds = list(range(101, 200)) rng = RandomState() variables = list(range(5)) gen_mean = np.zeros(len(variables)) gen_var = np.zeros(len(variables)) + 0.2 gen_weight = 2 diff_norm_mean = 0 diff_norm_cov = 0 for i, s in enumerate(seeds): print('Test {0}/{1}'.format(i + 1, len(seeds))) graph = random_dag(variables, rng=rng) beta = graph.T * gen_weight mvn = to_mvn(gen_mean, gen_var, beta, return_mvn=True) n_samples = 200 sample_seed = rng.randint(0, 2**32 - 1) data_gn = sample_from_gn(graph, gen_mean, gen_var, beta, n_samples, sample_seed) data_mvn = mvn.rvs(n_samples, sample_seed) mean_gn = np.mean(data_gn, axis=0) mean_mvn = np.mean(data_mvn, axis=0)
from electromorpho.mcmc.graphs.checks import check_consistency from electromorpho.mcmc.graphs.proposal import get_parent_set_distributions, basic_move, rev_move n_variables = 15 seeds = list(range(101, 200)) rng = RandomState(19023) variables = list(range(n_variables)) n_samples = 200 # Data generation parameters gen_mean = np.zeros(n_variables) gen_var = np.zeros(n_variables) + 0.2 gen_weight = 2 # Generate some data form a GN graph = random_dag(variables, rng=rng) beta = graph.A.T * gen_weight sample_seed = rng.randint(0, 2**32 - 1) data_gn = sample_from_gn(graph, gen_mean, gen_var, beta, n_samples, sample_seed) # Fit the score and create the parent set distributions fan_in = 5 bge = BGe(data_gn) ps_dist = get_parent_set_distributions(variables, fan_in, bge, rng=rng) # Some random state to start state = DAGState(random_dag(variables, fan_in, rng=rng))
def random_state(self): return DAGState(random_dag(list(range(self.n_variables_)), self.fan_in, self.rng), fan_in=self.fan_in)
sns.set(color_codes=True) SAVE = False n_variables = 15 seeds = list(range(101, 200)) rng = RandomState(1802) variables = list(range(n_variables)) n_samples = 200 # Data generation parameters gen_mean = np.zeros(n_variables) gen_var = np.zeros(n_variables) + 0.2 gen_weight = 2 # Generate some data form a GN graph = random_dag(variables, rng=rng, fan_in=5) beta = graph.A.T * gen_weight sample_seed = rng.randint(0, 2**32 - 1) data_gn = sample_from_gn(graph, gen_mean, gen_var, beta, n_samples, sample_seed) graph_score = BGe(data_gn)(graph) print( 'Graph created with {} variables. Dataset with {} samples. Graphs bge score = {:.2f}' .format(n_variables, n_samples, graph_score)) # plot_digraph(graph) # Fit the score and create the parent set distributions