def zScore(numbers: list) -> list: zScores = [] standardDeviation = DescriptiveStatisticsOperations.standardDeviation(numbers) mean = DescriptiveStatisticsOperations.mean(numbers) for number in numbers: zScores.append(BasicOperations.division(BasicOperations.subtraction(number, mean), standardDeviation)) return zScores
def variance(numbers: list) -> float: mean = DescriptiveStatisticsOperations.mean(numbers) squaredDifferences = [] for number in numbers: squaredDifferences.append(BasicOperations.square(BasicOperations.subtraction(mean, number))) variance = BasicOperations.division(sum(squaredDifferences), len(numbers)) return variance
def median(numbers: list) -> float: numbers = sorted(numbers) if len(numbers) % 2 == 1: middleIndex = int(BasicOperations.division(len(numbers) - 1, 2)) median = numbers[middleIndex] else: leftMiddleIndex = int(BasicOperations.subtraction(BasicOperations.division(len(numbers) - 1, 2), 0.5)) rightMiddleIndex = int(BasicOperations.addition(BasicOperations.division(len(numbers) - 1, 2), 0.5)) median = BasicOperations.division(BasicOperations.addition(numbers[leftMiddleIndex], numbers[rightMiddleIndex]), 2) return float(median)
def subtract(self, x, y): self.results.append(BasicOperations.subtraction(x, y)) return self.results[-1]