def _sample_component_categorical(model, col_idx, component_idx): hypers = model['col_hypers'][col_idx] if component_idx < len(model['col_suffstats'][col_idx]): suffstats = model['col_suffstats'][col_idx][component_idx] else: k = int(model['col_suffstats'][col_idx][0]['k']) suffstats = {'n': 0., 'k': k} return csd.sample(suffstats, hypers)
def test_sample_proportions(): n_samples = 10000 hypers = {'dirichlet_alpha': 1.} suffstats = {'n': 2, 'k': 2, '0': 1, '1': 1} samples = csd.sample(suffstats, hypers, n=n_samples) bins = np.array(np.bincount(samples), dtype=float) assert len(bins) == 2 bins /= n_samples assert abs(bins[0] - bins[1]) < .05 suffstats = {'n': 10, 'k': 2, '1': 10} samples = csd.sample(suffstats, hypers, n=n_samples) bins = np.array(np.bincount(samples), dtype=float) assert len(bins) == 2 bins /= n_samples assert abs(bins[0] - bins[1]) > .8