Exemplo n.º 1
0
def recalculateRefPSI(col2psi_str, col2total_count, col2weights):
    """
    Reference is assumed to be col 0
    """
    psi_vals = []
    total_vals = []
    weights = []
    for col in col2psi_str:
        if col == 0:
            continue
        if col2psi_str[col] == NA:
            continue
        psi_vals.append(float(col2psi_str[col]))
        total_vals.append(col2total_count[col])
        if col2weights:
            weights.append(col2weights[col - 1])

    if col2weights:
        # TODO Pretty sure int(round(x)) == round(x)
        median_psi = robustats.weighted_median(psi_vals, weights)

        median_total = int(
            round(robustats.weighted_median(total_vals, weights)))
    else:
        median_psi = statistics.median(psi_vals)
        try:
            median_total = int(round(statistics.median(total_vals)))
        except:
            pdb.set_trace()

    return "%.2f" % median_psi, median_total
Exemplo n.º 2
0
 def test_generic_4(self):
     x = [
         0.49, 0.36, 0.36, 0.18, 0.75, 0.33, 0.68, 0.82, 0.38, 0.75, 0.61,
         0.02, 0.57, 0.23, 0.56, 0.03, 0.45, 0.44, 0.36, 0.92
     ]
     weights = [
         0.08, 0.22, 0.79, 0.84, 0.69, 0.84, 0.08, 0.87, 0.95, 0.27, 0.9,
         0.34, 0.75, 0.65, 0.02, 0.83, 0.32, 0.68, 0.92, 0.37
     ]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 0.38)
Exemplo n.º 3
0
 def test_generic_5(self):
     x = [
         0.64, 0.95, 0.05, 0.08, 0.32, 0.25, 0.58, 0.69, 0.88, 0.53, 0.48,
         0.58, 0.32, 0.52, 0.42, 0.69, 0.43, 0.91, 0.15, 0.27, 0.31, 0.16,
         0.56, 0.68, 0.58, 0.04, 0.51, 0.06, 0.18, 0.03
     ]
     weights = [
         0.97, 0.2, 0.12, 0.01, 0.86, 0.29, 0.93, 0.96, 0.89, 0.03, 0.24,
         0.56, 0.81, 0.97, 0.48, 0.32, 0.33, 0.22, 0.8, 0.17, 0.96, 0.75,
         0.43, 0.24, 0.81, 0.4, 0.93, 0.43, 0.17, 0.13
     ]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 0.51)
Exemplo n.º 4
0
 def test_generic_6(self):
     x = [
         0.19, 0.14, 0.15, 0.79, 0.36, 0.13, 0.44, 0.67, 0.44, 0.98, 0.2,
         0.11, 0.78, 0.67, 0.28, 0.29, 0.99, 0.55, 0.34, 0.36, 0.09, 0.13,
         0.56, 0.19, 0.08, 0.46, 0.62, 0.98, 0.46, 0.37, 0.09, 0.94, 0.84,
         0.64, 0.18, 0.64, 0.78, 0.88, 0.17, 0.28
     ]
     weights = [
         0.67, 0.39, 0.31, 0.06, 0.93, 0.21, 0.09, 0.29, 0.78, 0.42, 0.79,
         0.27, 0.77, 0.35, 0.11, 0.99, 0.05, 0.39, 0.34, 0.97, 0.82, 0.4,
         0.09, 0.77, 0.28, 0.03, 0.63, 0.67, 0.1, 0.3, 0.85, 0.44, 0.66,
         0.52, 0.15, 0.4, 0.82, 0.66, 0.21, 0.72
     ]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 0.36)
Exemplo n.º 5
0
def recalculateRefPSI_list(psi_list, col2weights):
    """
    Reference is assumed to be col 0
    """
    vals = []
    weights = []
    for i in range(1, len(psi_list)):
        if psi_list[i] == NA:
            continue
        vals.append(float(psi_list[i]))
        if col2weights:
            weights.append(col2weights[i - 1])

    if col2weights:
        # TODO delete
        median_psi = robustats.weighted_median(vals, weights)
    else:
        median_psi = statistics.median(vals)

    return "%.2f" % median_psi
Exemplo n.º 6
0
 def test_same_weights(self):
     x = [1., 2., 3.]
     weights = [1., 1., 1.]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 2.)
Exemplo n.º 7
0
 def test_generic_3(self):
     x = [0.1, 0.35, 0.05, 0.1, 0.15, 0.05, 0.2]
     weights = [0.1, 0.35, 0.05, 0.1, 0.15, 0.05, 0.2]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 0.2)
Exemplo n.º 8
0
 def test_generic_2(self):
     x = [4.2, 1.3, 7.4, 0.2, 4.6, 9.8, 5.5, 3.7]
     weights = [0.4, 2.1, 1.1, 1.6, 0.3, 0.9, 1.2, 1.7]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 3.7)
Exemplo n.º 9
0
 def test_generic_1(self):
     x = [1.3, 5.1, 2.9, 1.9, 7.4]
     weights = [1.4, 0.9, 0.6, 1.2, 1.7]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 2.9)
Exemplo n.º 10
0
 def test_even_list(self):
     x = [1., 2.]
     weights = [1., 1.]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 1.)
Exemplo n.º 11
0
 def test_dominant_weight(self):
     x = [1., 2., 3.]
     weights = [3., 1., 1.]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 1.)
Exemplo n.º 12
0
 def test_edge_case(self):
     x = [1., 2., 3.]
     weights = [2., 1., 1.]
     weighted_median = robustats.weighted_median(x, weights)
     self.assertEqual(weighted_median, 2.)