def calculate_standard_deviation(numerical_values: list) -> float: """ Calculate the standard deviation of a list of numerical values. Standard deviation measures the amount of variation or dispersion in a dataset relative to its mean value. Args: numerical_values: A list of numeric values to analyze. Returns: The standard deviation as a floating point number. Raises: ValueError: If the input list is empty or contains fewer than two values. TypeError: If the input contains non-numeric values. """ if not numerical_values: raise ValueError("Input list must not be empty.") if len(numerical_values) < 2: raise ValueError("Standard deviation requires at least two values.") if not all(isinstance(value, (int, float)) for value in numerical_values): raise TypeError("All values in the input list must be numeric.") total_count = len(numerical_values) arithmetic_mean = sum(numerical_values) / total_count squared_differences = [(value - arithmetic_mean) ** 2 for value in numerical_values] variance_value = sum(squared_differences) / (total_count - 1) standard_deviation_result = variance_value ** 0.5 return standard_deviation_result def find_outliers_using_std_deviation( numerical_values: list, threshold_multiplier: float = 2.0 ) -> list: """ Identify outliers in a dataset using standard deviation method. Values that fall more than threshold_multiplier standard deviations away from the mean are considered outliers. Args: numerical_values: A list of numeric values to analyze. threshold_multiplier: The number of standard deviations to use as the outlier threshold. Defaults to 2.0. Returns: A list of values identified as outliers. """ if not numerical_values: raise ValueError("Input list must not be empty.") arithmetic_mean = sum(numerical_values) / len(numerical_values) standard_deviation_value = calculate_standard_deviation(numerical_values) lower_bound_value = arithmetic_mean - (threshold_multiplier * standard_deviation_value) upper_bound_value = arithmetic_mean + (threshold_multiplier * standard_deviation_value) identified_outliers = [ value for value in numerical_values if value < lower_bound_value or value > upper_bound_value ] return identified_outliers def normalize_numerical_dataset(numerical_values: list) -> list: """ Normalize a list of numerical values to the range [0, 1]. Normalization is performed using min-max scaling, which transforms each value proportionally within the original range. Args: numerical_values: A list of numeric values to normalize. Returns: A list of normalized values in the range [0, 1]. """ if not numerical_values: raise ValueError("Input list must not be empty.") minimum_value = min(numerical_values) maximum_value = max(numerical_values) if minimum_value == maximum_value: return [0.0 for _ in numerical_values] value_range = maximum_value - minimum_value normalized_values = [ (value - minimum_value) / value_range for value in numerical_values ] return normalized_values def main_execution_function(): """ Main entry point demonstrating statistical analysis functions. """ sample_numerical_dataset = [12, 15, 14, 10, 18, 45, 13, 11, 16, 14] calculated_deviation = calculate_standard_deviation(sample_numerical_dataset) print(f"Standard deviation: {calculated_deviation:.4f}") detected_outliers = find_outliers_using_std_deviation(sample_numerical_dataset) print(f"Detected outliers: {detected_outliers}") normalized_dataset = normalize_numerical_dataset(sample_numerical_dataset) print(f"Normalized values: {[round(v, 3) for v in normalized_dataset]}") if __name__ == "__main__": main_execution_function()