Beispiel #1
0
def testing():
    responses = [1, 1, 0]
    meta_true = [0.7, 0.3, 0.4]
    bts_easy = calc_easy_bts_binary(responses, meta_true)
    correct_surprise = [0.4201811, 0.4201811, -0.4081212]
    correct_accuracy = [-0.002593396, -0.285026016, -0.144621528]
    assert jmutils.bounded(sum(bts_easy['bts']), -0.000001, 0.000001)
    assert all([jmutils.fuzzy_equals(c, a, 0.0001) for c, a in zip(correct_surprise, bts_easy['surprise'])])
    assert all([jmutils.fuzzy_equals(c, a, 0.0001) for c, a in zip(correct_accuracy, bts_easy['accuracy'])])
    print('done testing')
def prob_noisy(given, bayes, noise_type, noise):
    """Prob of saying given when rational bayesian would say bayes
    Args: given: in [0,1], what respondent said
          bayes: in [0, 1]
          model_params: dict, incl keys with noise info
    Returns: prob in [0, 1]
    Different types of noise models: beta, binomial, noiseless.
    """
    if noise_type == "noiseless":
        tolerance = 1e-04
        if jmutils.fuzzy_equals(given, bayes, tolerance):
            return 1
        else:
            return 0
    elif noise_type == "binomial":
        num_trials = noise
        num_successes = int(given * num_trials)
        #return binom.pmf(num_successes, num_trials, bayes)
        return my_binom_pmf(num_successes, num_trials, bayes)
    elif noise_type == "beta":
        print("Optimize the beta stuff almost certainly!!!")
        alpha_beta = jmutils.beta_shape(bayes, noise)
        return beta.pdf(given, *alpha_beta)
    elif noise_type == "truncnorm":
        scale = noise
        #return truncnorm.pdf(given, -bayes / scale, (1 - bayes) / scale, 
        #                     loc=bayes, scale=scale)
        return mytruncpdf_01bounds(given, bayes, noise)
    else:
        print("Error: meta noise_type not specified correctly")
        sys.exit()
def test_prob_responses_signals():
    responses = np.array([0,0,1,1])
    signals = np.array([0,1,1,0])
    noise = .9
    tolerance = 1e-04
    assert fuzzy_equals(agg.prob_responses_signals(responses, signals, noise),
                        0.008100000000000, tolerance)
def test_prob_meta_noisy():
    given = .5
    bayes = .45
    model_params = {'noise_meta': 'noiseless'}
    assert agg.prob_meta_noisy(given, bayes, model_params) == 0
    model_params = {'noise_meta': 'binomial', 'binomial_num_trials': 100}
    tolerance = 1e-04
    assert fuzzy_equals(agg.prob_meta_noisy(given, bayes, model_params), 
                        0.048151971498, tolerance)