Ejemplo n.º 1
0
 def attack_rmse(attack, num_colluders):
     num_legit_sensors = total_sensors - num_colluders
     legitimate_readings = readings_generator.readings(biases[:num_legit_sensors], variances[:num_legit_sensors],
                                                       num_times, true_value)
     return rms_error(robust_aggregate.estimate(attack(legitimate_readings,
                                                       true_value,
                                                       num_colluders,
                                                       colluder_bias),
                                                reciprocal), [true_value(t) for t in range(num_times)])
Ejemplo n.º 2
0
def test_iterfilter(num_honest,
                    num_skewing,
                    num_avg,
                    num_times,
                    repetitions,
                    randseed=None):
    if randseed:
        random.seed(randseed)

    num_pre_avg = num_honest + num_skewing
    recip_rms = []
    expo_rms = []

    for r in range(repetitions):
        print(r)
        honest_data = [[
            random.gauss(TRUTH, VARIANCE) for j in range(num_times)
        ] for i in range(num_honest)]
        skewed_data = [[
            random.gauss(COLLUSION_VALUE, VARIANCE) for j in range(num_times)
        ] for i in range(num_skewing)]
        uncolluded_data = honest_data + skewed_data
        sneaky_data = [[
            sum([uncolluded_data[j][i]
                 for j in range(num_pre_avg)]) / num_pre_avg
            for i in range(num_times)
        ]]
        final_data = uncolluded_data + sneaky_data

        recip_rms += [
            rms_error(estimate(final_data, reciprocal), [TRUTH] * num_times)
        ]
        expo_rms += [
            rms_error(estimate(final_data, exponential), [TRUTH] * num_times)
        ]

    recip_rms_bayes = stats.bayes_mvs(recip_rms)
    expo_rms_bayes = stats.bayes_mvs(expo_rms)

    return (recip_rms_bayes[0], expo_rms_bayes[0])
Ejemplo n.º 3
0
if __name__ == '__main__':
    truth = 0
    num_times = 100

    num_honest = 20
    honest_variance = 1
    honest_bias = 0
    honest_bias_variance = 0.1
    honest_variances = [honest_variance] * num_honest
    honest_biases = [
        random.gauss(honest_bias, honest_bias_variance)
        for i in range(num_honest)
    ]
    honest_readings = readings_generator.readings(honest_biases,
                                                  honest_variances, num_times,
                                                  lambda t: truth).tolist()

    num_influenced = 5
    influenced_value = 1000

    influenced_readings = num_influenced * [[truth] * (num_times - 1) +
                                            [influenced_value]]

    readings = honest_readings + influenced_readings

    estimates = robust_aggregate.estimate(readings,
                                          robust_aggregate.reciprocal)
    error = rms_error(estimates, [truth] * len(readings)) / len(readings)

    print(error)
if __name__ == '__main__':
    repeats = 1000
    variance = 1
    bias = 0
    truth = 0
    times = 10
    num_sensors = 10

    variances = [variance] * num_sensors
    biases = [bias] * num_sensors

    time_errors = [[] for t in range(times)]

    def truth_fn(t):
        return truth

    for i in range(repeats):
        print ('{}/{}'.format(i, repeats))

        readings = readings_generator.readings(biases, variances, times, truth_fn)
        estimate = robust_aggregate.estimate(readings, exponential)

        for t in range(times):
            time_errors[t] += [estimate[t]] 

    mvs = [bayes_mvs(t) for t in time_errors]

    pp.errorbar(range(times), [m[0][0] for m in mvs], yerr=[m[0][0]-m[0][1][0] for m in mvs])
    pp.show()
Ejemplo n.º 5
0
 def estimate(readings):
     return robust_aggregate.estimate(readings, robust_aggregate.reciprocal)