[tor-commits] [metrics-web/master] Compute percentiles in clients module using linear interpolation.
karsten at torproject.org
karsten at torproject.org
Thu Oct 25 09:33:04 UTC 2018
commit 95d091a87c3ebff8a35a57967b4e144898e2e1a5
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Sat May 19 21:02:28 2018 +0200
Compute percentiles in clients module using linear interpolation.
So far we computed percentiles in the censorship detector of the
clients module using our own formula that picked existing values as
median or quartiles.
Now we're using numpy.percentile which, by default, uses linear
interpolation when the desired quantile lies between two data points.
We're also removing unused imports of pylab and matplotlib in this
commit, which is not directly related.
Implements part of #26035.
---
src/main/python/clients/detector.py | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/src/main/python/clients/detector.py b/src/main/python/clients/detector.py
index 9944710..b0a98af 100644
--- a/src/main/python/clients/detector.py
+++ b/src/main/python/clients/detector.py
@@ -37,13 +37,9 @@
## This script reads a .csv file of the number of Tor users and finds
## anomalies that might be indicative of censorship.
-# Dep: matplotlib
-from pylab import *
-import matplotlib
-
# Dep: numpy
import numpy
-from numpy import mean, std
+from numpy import mean, std, percentile
# Dep: scipy
import scipy.stats
@@ -190,9 +186,9 @@ def make_tendencies_minmax(l, INTERVAL = 1):
maxx += [None]
else:
vals.sort()
- median = vals[len(vals)/2]
- q1 = vals[len(vals)/4]
- q2 = vals[(3*len(vals))/4]
+ median = percentile(vals, 50)
+ q1 = percentile(vals, 25)
+ q2 = percentile(vals, 75)
qd = q2 - q1
vals = [v for v in vals if median - qd*4 < v and v < median + qd*4]
if len(vals) < 8:
More information about the tor-commits
mailing list