def compute_conditional_probability_distribution(variables, data, motor, conditioned): """ """ freq, n = DistributionComputer.compute_frequency_table(variables, data, motor) # Total number of occurences with only exploration variables totals = SparseTable({k: v for k, v in variables.iteritems() if k not in conditioned}) jpd = SparseConditionalTable(variables, {k: v for k, v in variables.iteritems() if k not in conditioned}) # Make conditional on exploration variables # i.e. divide by total number of for entry in freq.get_nonzero_entries(): filtered = {k: v for k, v in entry.iteritems() if k not in conditioned} # Add the values to increase the total totals.set_value(filtered, totals.get_value(filtered) + freq.get_value(entry)) # Make conditional table by dividing by subtotals for entry in freq.get_nonzero_entries(): filtered = {k: v for k, v in entry.iteritems() if k not in conditioned} # P(M|R) = F(M&R) / F(R) f_r = float(totals.get_value(filtered)) jpd.set_value(entry, 0 if f_r == 0 else freq.get_value(entry) / f_r) return jpd
def compute_frequency_table(variables, data, motor): """ Parameters ---------- variables : [string] data : Data motor : [string] """ freq = SparseTable(variables) first = 2 last = data.last_time() + 1 n = 0 for t_i in range(first, last): n += 1 freq.inc_value(data.get_entries_previous_current(t_i, variables.keys(), motor)) return freq, n
def compute_frequency_table(variables, data, motor): """ Parameters ---------- variables : [string] data : Data motor : [string] """ freq = SparseTable(variables) first = 2 last = data.last_time() + 1 n = 0 for t_i in range(first, last): n += 1 freq.inc_value( data.get_entries_previous_current(t_i, variables.keys(), motor)) return freq, n
def compute_conditional_probability_distribution(variables, data, motor, conditioned): """ """ freq, n = DistributionComputer.compute_frequency_table( variables, data, motor) # Total number of occurences with only exploration variables totals = SparseTable( {k: v for k, v in variables.iteritems() if k not in conditioned}) jpd = SparseConditionalTable( variables, {k: v for k, v in variables.iteritems() if k not in conditioned}) # Make conditional on exploration variables # i.e. divide by total number of for entry in freq.get_nonzero_entries(): filtered = { k: v for k, v in entry.iteritems() if k not in conditioned } # Add the values to increase the total totals.set_value( filtered, totals.get_value(filtered) + freq.get_value(entry)) # Make conditional table by dividing by subtotals for entry in freq.get_nonzero_entries(): filtered = { k: v for k, v in entry.iteritems() if k not in conditioned } # P(M|R) = F(M&R) / F(R) f_r = float(totals.get_value(filtered)) jpd.set_value(entry, 0 if f_r == 0 else freq.get_value(entry) / f_r) return jpd