campus-Me / src /data_engine /stats_generator.py
Mithun-999's picture
Complete AI Academic Document Suite
342973b
"""
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}"