Files

44 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 |