Spaces:
Paused
Paused
| """ | |
| Stats Generator - Generate statistical analysis and reports | |
| """ | |
| from typing import List, Dict | |
| import statistics | |
| class StatsGenerator: | |
| """Generate statistical analysis and reports.""" | |
| def generate_summary_statistics(self, data: List[float]) -> str: | |
| """Generate summary statistics report.""" | |
| if not data: | |
| return "No data available" | |
| analysis = { | |
| "Count": len(data), | |
| "Mean": f"{statistics.mean(data):.2f}", | |
| "Median": f"{statistics.median(data):.2f}", | |
| "Std Dev": f"{statistics.stdev(data):.2f}" if len(data) > 1 else "N/A", | |
| "Min": f"{min(data):.2f}", | |
| "Max": f"{max(data):.2f}", | |
| } | |
| report = "STATISTICAL SUMMARY\n" + "=" * 30 + "\n\n" | |
| for key, value in analysis.items(): | |
| report += f"{key:.<20} {value:>10}\n" | |
| return report | |
| def generate_correlation_analysis(self, data_x: List[float], data_y: List[float]) -> str: | |
| """Generate correlation analysis.""" | |
| if len(data_x) != len(data_y) or len(data_x) < 2: | |
| return "Invalid data for correlation" | |
| mean_x = statistics.mean(data_x) | |
| mean_y = statistics.mean(data_y) | |
| numerator = sum((data_x[i] - mean_x) * (data_y[i] - mean_y) for i in range(len(data_x))) | |
| denom_x = sum((x - mean_x) ** 2 for x in data_x) ** 0.5 | |
| denom_y = sum((y - mean_y) ** 2 for y in data_y) ** 0.5 | |
| correlation = numerator / (denom_x * denom_y) if denom_x * denom_y != 0 else 0 | |
| return f"Correlation Coefficient: {correlation:.3f}" | |