File size: 1,777 Bytes
8641c96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8260d44
8641c96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8de24b5
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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)}"}