Avoiding stateful classes by using families of tuples
In several previous examples, we've shown the idea of
Wrap-Unwrap design patterns that allow us to work with immutable tuples and namedtuples
. The point of this kind of designs is to use immutable objects that wrap other immutable objects instead of mutable instance variables.
A common statistical measure of correlation between two sets of data is the Spearman rank correlation. This compares the rankings of two variables. Rather than trying to compare values, which might have different scales, we'll compare the relative orders. For more information, visit http://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient.
Computing the Spearman rank correlation requires assigning a rank value to each observation. It seems like we should be able to use enumerate(sorted())
to do this. Given two sets of possibly correlated data, we can transform each set into a sequence of rank values and compute a measure of correlation.
We...