Riscaldamento e raffreddamento esponenziali con c e tau condivisi; grafici per dominio nel report
- modelli per tipo di dominio ([fit.modelli_per_tipo]) - nei domini di riscaldamento c e tau fissati ai valori del raffreddamento - un grafico dati/modelli per dominio e serie, incorporato in report.md Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d4fbd02a51
commit
b8c8aeb60e
11 files changed
+167
-58
No files matched your search
+13
-4
@@ -59,7 +59,7 @@ I domini devono essere contigui; in caso contrario exit 6.
|
||||
| `esp_doppio` | `y = c + A1·exp(−t'/τ1) + A2·exp(−t'/τ2)`, τ1 < τ2 | c, A1, τ1, A2, τ2 |
|
||||
| `logistica` | `y = c + A / (1 + exp(−(t'−t_m)/w))`, 0 ≤ t_m ≤ L | c, A, t_m, w |
|
||||
|
||||
Nuovo modello = nuova voce nel registro `MODELLI` e nuova riga qui. Nel raffreddamento `c` è la temperatura asintotica (≈ ambiente) e
|
||||
Nuovo modello = nuova voce nel registro `MODELLI` e nuova riga qui. I modelli provati dipendono dal tipo di dominio (`[fit.modelli_per_tipo]`): `riposo` → `costante`, `lineare`, `esp_decad`; `riscaldamento` e `raffreddamento` → solo `esp_decad` (sono decadimenti esponenziali). Nel raffreddamento `c` è la temperatura asintotica (≈ ambiente) e
|
||||
`τ = 1/k`; nel riposo `costante`/`lineare` descrivono la baseline.
|
||||
|
||||
## 5. Fit
|
||||
@@ -72,6 +72,13 @@ Nuovo modello = nuova voce nel registro `MODELLI` e nuova riga qui. Nel raffredd
|
||||
5. Metriche: RSS, RMSE, R², AICc, BIC, ACF1 dei residui, parametri a limite, numero di condizione (jacobiano normalizzato).
|
||||
**Non identificabile** se condizione > `soglia_condizione` oppure un parametro (escluso il primo) ha IC 95 % > |valore|.
|
||||
|
||||
### 5.2 Costanti condivise tra riscaldamento e raffreddamento
|
||||
Dopo ogni gradino la temperatura decade con la stessa legge del raffreddamento finale (stessa costante di tempo, stesso asintoto ≈ ambiente).
|
||||
I domini di raffreddamento si fittano per primi; nei domini di riscaldamento i parametri di `riscaldamento_fissa_da_raffreddamento`
|
||||
(default `c` e `tau`) sono **fissati** ai valori del raffreddamento e resta libera solo l'ampiezza `A`. Motivo: in 2–4 s di dati τ non si
|
||||
identifica da solo. Gli IC 95 % di `A` sono condizionati ai valori fissi (l'incertezza di `c` e `τ` non si propaga); i parametri fissi sono
|
||||
marcati "(fisso)" nel report. Se manca un raffreddamento valido, o la lista è vuota, i parametri restano liberi. Con `[]` si torna al fit libero.
|
||||
|
||||
### 5.3 Regola di scelta (`selezione.py`)
|
||||
Scarta non convergenti, con parametri a limite o non identificabili. Se esistono modelli con `RMSE ≤ rmse_vs_rumore_max·σ` ("adeguati")
|
||||
si sceglie tra questi, altrimenti tra tutti i validi; tra i modelli entro `soglia_delta_aicc` dal miglior AICc vince quello con meno
|
||||
@@ -99,7 +106,8 @@ Exit code: 0 ok · 2 uso errato · 3 config non valida · 4 CSV illeggibile · 6
|
||||
| `out/risultati.json` | tutti i fit per (dominio, serie), con metriche e scelta |
|
||||
| `out/modello_finale.json` | per dominio e serie: modello scelto e parametri |
|
||||
| `out/report.md`, `out/equazioni.md` | tabelle di confronto, equazioni con IC 95 % |
|
||||
| `out/fit_<serie>.png` | dati, fit a tratti (colore per tipo di dominio) e residui |
|
||||
| `out/fit_<serie>.png` | panoramica: dati, fit a tratti (colore per tipo di dominio) e residui |
|
||||
| `out/dominio<k>_<serie>.png` | per dominio e serie: dati grezzi vs modello scelto e altri modelli validi, residui; incorporati nel `report.md` |
|
||||
|
||||
## 8. Test (`uv run pytest`, dati in `dati/gen_<seed>.csv`)
|
||||
|
||||
@@ -107,6 +115,7 @@ Exit code: 0 ok · 2 uso errato · 3 config non valida · 4 CSV illeggibile · 6
|
||||
|---|---|---|
|
||||
| T1 | Domini sui seed 1–3 | `riposo, riscaldamento, riscaldamento, raffreddamento` ✔ |
|
||||
| T2 | Raffreddamento | `esp_decad` scelto per T e ΔT, τ entro il 10 % di 15.9 s ✔ (seed 1: τ = 16.08 ± 0.07 s) |
|
||||
| T2b | Riscaldamento | `esp_decad` con `c` e `τ` fissi uguali a quelli del raffreddamento, `A` > 0 ✔ |
|
||||
| T3 | Riposo | `costante` per ΔT ✔ |
|
||||
| — | da fare | più seed, robustezza a config diverse (nessun gradino, un solo gradino), `domini.toml` manuale, riproducibilità |
|
||||
|
||||
@@ -114,7 +123,7 @@ Exit code: 0 ok · 2 uso errato · 3 config non valida · 4 CSV illeggibile · 6
|
||||
|
||||
- **Residui autocorrelati nel raffreddamento** (ACF1 ≈ 0.7, RMSE ≈ 0.36 contro σ ≈ 0.15): scarti casuali e deriva lenta non sono
|
||||
nel modello; i parametri sono buoni ma gli IC 95 % sono troppo stretti (nonostante la correzione) e il dominio risulta "non adeguato".
|
||||
- **Domini di riscaldamento corti** (14–26 campioni, 2–4 s): il decadimento è quasi lineare, τ non identificabile; vince un modello
|
||||
semplice (`lineare`, talvolta `logistica`, che qui è solo una curva flessibile e non ha significato fisico).
|
||||
- **Domini di riscaldamento corti** (14–26 campioni, 2–4 s): τ non è identificabile da solo, per questo è fissato al valore del raffreddamento (§5.2).
|
||||
Il secondo tratto di riscaldamento ha ACF1 ≈ 0.7 e RMSE ≈ 2 σ (scarti casuali): risulta "non adeguato" anche se la forma è giusta.
|
||||
- La soglia `soglia_gradino_c` va adattata se i gradini reali sono più piccoli di 20 °C o gli scarti più grandi.
|
||||
- Il vincolo di continuità tra domini è solo ignorato: ogni dominio è fittato in modo indipendente.
|
||||
+2
-2
@@ -19,9 +19,9 @@ cd ../gen_data && .venv/bin/python genera.py config.toml --seed 4 -o ../Equation
|
||||
.venv/bin/fitseg valuta lavoro/out/modello_finale.json --t 10 20 50
|
||||
.venv/bin/pytest # test (singolo: -k raffreddamento)
|
||||
```
|
||||
Il report è in `lavoro/out/report.md`: per ogni dominio e serie, modello scelto con parametri ± IC 95 %, metriche e tabella di
|
||||
Il report è in `lavoro/out/report.md` (con i grafici dati-contro-equazioni incorporati, uno per dominio e serie): per ogni dominio e serie, modello scelto con parametri ± IC 95 %, metriche e tabella di
|
||||
confronto di tutti i modelli. Leggi sempre la riga "non adeguato" e l'ACF1: indicano residui che il modello non spiega.
|
||||
|
||||
## 4. Configurazione
|
||||
Tutto in [config.toml](../config.toml) (nessun default nel codice). Chiavi di rilievo: `[domini] soglia_gradino_c`,
|
||||
`scarta_dopo_salto_n`, `n_min_punti`; `[fit] modelli_abilitati`, `soglia_delta_aicc`, `rmse_vs_rumore_max`, `seed`.
|
||||
`scarta_dopo_salto_n`, `n_min_punti`; `[fit.modelli_per_tipo]`, `riscaldamento_fissa_da_raffreddamento`, `soglia_delta_aicc`, `rmse_vs_rumore_max`, `seed`.
|
||||
Reference in new issue
Block a user