# coding=utf-8
"""
Created on 18 January 2014
@author: Cenk Bircanoglu
"""
from similarityPy.algorithms.mean import Mean
from similarityPy.algorithms.sum_formula import SumFormula
[docs]class Variance:
def __init__(self):
self._data = []
self._n = 0
[docs] def calculate(self, data, is_tuple=False, index=None):
if is_tuple:
self._data = sorted([obj[index] for obj in data])
else:
self._data = sorted(data)
self._n = len(self._data)
return self.__algorithm()
def __algorithm(self):
try:
mean = Mean()
mean_value = mean.calculate(self._data)
values = map(lambda x: (float(x) - mean_value), self._data)
sum_formula = SumFormula()
sum_of_powers = sum_formula.calculate(values, power=2)
result = sum_of_powers / (self._n - 1)
return round(result, 4)
except:
raise