import numpy as np from scipy import stats from smolagents.tools import tool from typing import List, Dict, Any @tool def analyze_dataset(data: List[float]) -> Dict[str, Any]: """ Analisa um conjunto de dados numéricos e retorna as principais medidas estatísticas. Esta função é útil para interpretar e comparar conjuntos de dados (EM13MAT407). Args: data: Uma lista de números (int ou float) para ser analisada. Returns: Um dicionário contendo as medidas de tendência central (média, mediana, moda), a amplitude e as medidas de dispersão (variância, desvio padrão). """ if not data: return {"erro": "A lista de dados não pode estar vazia."} try: # Medidas de Tendência Central mean_val = np.mean(data) median_val = np.median(data) # A moda pode ter múltiplos valores ou nenhum mode_result = stats.mode(data, keepdims=False) mode_val = mode_result.mode.tolist() if mode_result.count > 0 else 'Não há moda única' # Amplitude amplitude = np.ptp(data)# (max - min) # Medidas de Dispersão variance_val = np.var(data) std_dev_val = np.std(data) return { "medidas_de_tendencia_central": { "media": round(mean_val, 2), "mediana": round(median_val, 2), "moda": mode_val }, "amplitude": round(amplitude, 2), "medidas_de_dispersao": { "variancia": round(variance_val, 2), "desvio_padrao": round(std_dev_val, 2) }, "total_de_elementos": len(data) } except Exception as e: return {"erro": f"Erro ao analisar os dados: {str(e)}"}