# Limiti noti ed estensioni ## Limiti noti | Limite | Perché | Effetto | Dove | |---|---|---|---| | **Intervalli di confidenza troppo stretti** | l'errore su $\tau$ ha deviazione standard 3.7 volte l'errore standard calcolato: gli scarti casuali sono concentrati all'inizio del raffreddamento (dove la sensibilità a $\tau$ è massima), quindi non stazionari (A14, A17) | su 60 seed il $\tau$ vero cade nell'intervallo al 95 % nel **73 %** dei casi (88 su 120), con errori comunque sotto il 2 %. **Provati e scartati**: correzione a più lag di Bartlett (77 %) e stimatore sandwich HAC (≤ 62 %, peggio dell'attuale AR(1)). Non si risolve con un fattore di correzione scalare: servirebbe un modello dei disturbi | [assunzioni.md](assunzioni.md) A14, A17 | | **Il $\sigma$ stimato ignora la parte lenta del rumore** | la derivata seconda elimina la deriva (A13) | $\sigma$ sottostimata di ≈ 0–25 % (rapporto stimato/vero 0.73–1.35, mediana 1.00); servono 8 campioni, sotto $\sigma$ è «non stimabile» e l'adeguatezza non valutabile | A13 | | **Il riscaldamento non è fittato** | 2–4 campioni, meno dei parametri utili (A23) | si riporta il salto $\Delta$: dai modelli adiacenti (errore medio +0.33 %, massimo 3.16 % su 124 salti), altrimenti dalla misura corretta con $c$, $\tau$ del finale, altrimenti misurato sui campioni (per difetto, fino a ≈ 10–20 %) | [algoritmi.md](algoritmi.md) §7 | | **Incertezze condizionate nei raffreddamenti intermedi** | $c$ e $\tau$ sono fissi, la loro incertezza non si propaga (A18) | gli intervalli di $A$ sono troppo stretti | A18 | | **Nessun vincolo di continuità** | ogni dominio è indipendente (A11) | gli intermedi non sono vincolati a combaciare col gradino | A11 | | **Un solo esponenziale per raffreddamento** | modello `esp_decad` (A7) | un raffreddamento con due processi (conduzione e convezione) non è descritto bene | A7 | | **Gradini cercati su una sola serie** | `serie_riferimento` (A4) | serie con gradini diversi richiedono due analisi | A4 | | **Soglia dei gradini fissa e non derivata dai dati** | `soglia_gradino_c` = 20 °C assoluti in config (A5): un valore scelto a mano, non misurato sul file | funziona perché sui 60 seed i gruppi di campioni in salita che non sono gradini arrivano al massimo a 2.1 °C (7 casi) e i gradini veri partono da 33 °C: la soglia sta in un vuoto di circa 16 volte. Va però adattata a gradini più piccoli di ≈ 30 °C o a scarti più grandi. **Provato e scartato**: usare la caduta massima come scala dei disturbi (le cadute arrivano a 57.8 °C per il raffreddamento veloce). **Alternative oggettive non implementate**: interruzione naturale tra le salite osservate (richiede almeno un gradino nel file) e persistenza della salita rispetto a $\sigma$ (confonde un gradino piccolo con un disturbo); entrambe renderebbero gradino un salto isolato di 10 °C con rumore 0.1 °C, contro i test attuali | [configurazione.md](configurazione.md), A5 | | **File senza gradini non validato sui dati generati** | `gen_data` produce sempre 1–3 gradini | il caso «nessun gradino» (un solo riposo) è coperto solo da test sintetici; con rumore forte e senza gradini la soglia fissa evita falsi gradini, un criterio derivato dai dati dovrebbe gestirlo esplicitamente | [test.md](test.md) | | **Validato solo su dati sintetici** | 60 seed di `gen_data` (gradini, $\tau$, rumore e scarti sorteggiati): gradini 60/60, $\tau$ con scarto quadratico medio 0.39 % (massimo 1.99 %), ampiezze $A$ 0.59 % (massimo 2.14 %), nessun tratto indeterminato | nessuna validazione su dati reali o su rumore molto diverso dagli intervalli del generatore | [test.md](test.md) | | **Piccola sovrastima di $A$** | il modello non include il ritardo di risposta del sensore (A25) | $A$ è sovrastimata di circa $\tau_\text{sensore}/\tau \approx 0.5$ % (misurato +0.45 % in media); $\tau$ non è affetta | A25 | | **«Non adeguato» sui raffreddamenti intermedi corti** | $\sigma$ è stimata sui soli 8–30 campioni del tratto e $c$, $\tau$ sono fissi ai valori del finale (A8): la scala robusta dei residui risulta 1.5–1.9 volte $\sigma$ pur con il modello giusto | in 10 raffreddamenti intermedi su 23 in 20 seed casuali (3 su 9 nel primo lotto, 7 su 14 nel secondo; 8–29 campioni, scala fino a 1.85 $\sigma$; altri 2 non valutabili perché troppo corti); i raffreddamenti finali sono sempre adeguati (0 casi su 140). $\tau$ e $A$ restano corretti: è un falso allarme del criterio, non un errore del fit | [algoritmi.md](algoritmi.md) §6 | | **Modello del riposo non unico** | il segnale a riposo contiene l'assestamento dell'ambiente più una deriva lenta casuale (Ornstein-Uhlenbeck in `gen_data`): su 10–20 s la sua forma non è ricostruibile e `T_C` e `dT_C` possono avere modelli diversi | su 120 riposi: `costante` 76, `lineare` 41, `esp_decad` 3; in questi 3 il $\tau$ è incerto (IC 95 % da metà del valore in su, sempre su `T_C`). Né la correzione per l'autocorrelazione dei residui ($n_\text{eff}$, $\bar\rho_1 \approx 0.1$, cambia 4 scelte su 120) né una soglia sull'incertezza relativa risolvono senza un parametro scelto a mano | [assunzioni.md](assunzioni.md) A10 | | **Tratti tra gradini troppo ravvicinati** | meno di `n_min_punti_parametri_fissi` (4) campioni, cioè gradini a meno di ≈ 1 s l'uno dall'altro (nel generatore la distanza minima è 1 s: nei 60 seed nessun caso) | il raffreddamento tra i due gradini è indeterminato; i salti adiacenti usano la misura corretta con $c$, $\tau$ del finale, o la sola misura | [configurazione.md](configurazione.md) | ## Estensioni possibili (non presenti) | Estensione | Cosa servirebbe | |---|---| | Modello a due esponenziali per il raffreddamento | voce in `modelli.MODELLI` con 5 parametri, partenza su griglia a due $\tau$, ordinamento $\tau_1 < \tau_2$, nome nelle liste di `modelli_per_tipo` ([moduli.md](moduli.md)) | | Modelli di transizione liscia (logistica) o polinomi superiori | stessa procedura; limitare il centro della logistica al dominio per evitare che degeneri in esponenziale | | Fit congiunto con continuità tra domini | un unico problema ai minimi quadrati con penalità sul salto residuo ai confini | | Fit del riscaldamento | richiede più campioni (sensore più lento o campionamento più fitto) | | Scelta dei modelli guidata da un agente (Claude Code) | era nel progetto iniziale e **è stata tolta**: la regola automatica ([algoritmi.md](algoritmi.md) §6) basta per questi dati | | Rumore colorato nel fit (minimi quadrati generalizzati) | modello AR(1) dei residui per correggere intervalli e pesi invece del solo fattore $\sqrt{(1+\rho_1)/(1-\rho_1)}$ | ## Scelte progettuali già fatte | Scelta | Alternativa scartata | Motivo | |---|---|---| | Domini dai gradini di `T_C` | PELT + fusione per BIC | i regimi qui sono determinati dai gradini; PELT con costo quadratico spezzerebbe gli esponenziali lisci | | Riscaldamento non fittato, descritto come salto | fit su 2–3 punti | parametri non identificabili | | $c$ e $\tau$ fissati negli intermedi | $\tau$ libero ovunque | $\tau$ non identificabile con 12–25 campioni e scarti casuali | | Partenza per griglia su $\tau$ (proiezione delle variabili) | partenze casuali | deterministico e più robusto per $\tau$ | | Perdita robusta `soft_l1` | minimi quadrati | gli scarti casuali sono outlier | | Output per CSV in sottocartelle numerate | cartella piatta | ogni passo è ispezionabile separatamente | | Un modulo per responsabilità, CLI a due comandi | script per fase, pacchetti `motore/` e `uscita/` | meno codice, nessuna duplicazione |