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 standardDeviation(numbers: list) -> float: standardDeviation = BasicOperations.squareRoot(DescriptiveStatisticsOperations.variance(numbers)) return standardDeviation
def mean(numbers: list) -> float: summation = 0.0 for number in numbers: summation = BasicOperations.addition(summation, number) return BasicOperations.division(summation, len(numbers))
def add(self, x, y): self.results.append(BasicOperations.addition(x, y)) return self.results[-1]
def squareRoot(self, x): self.results.append(BasicOperations.squareRoot(x)) return self.results[-1]
def multiply(self, x, y): self.results.append(BasicOperations.multiplication(x, y)) return self.results[-1]
def divide(self, x, y): self.results.append(BasicOperations.division(x, y)) return self.results[-1]
def subtract(self, x, y): self.results.append(BasicOperations.subtraction(x, y)) return self.results[-1]