Dominio correlation: motori deterministici di correlazione e intervento #2
No reviewers
Labels
No labels
Doing
P1: critical
P2: important
P3: useful
P4: nice to have
P5: reminder
To Do
bug
invalid
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
peacelink/mcp-peacedata!2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "nicolasmoerynck/correlation-engine"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cosa fa
Sposta il calcolo statistico fuori dal modello linguistico. Chiesto «benzene e NO₂ sono
correlati?», l'assistente dichiarava un coefficiente che non può calcolare (r=0.72
dichiarato; ricalcolato sugli stessi dati ISPRA: 0.569 grezzo, 0.334 tolto il ciclo
giornaliero, N efficace 53.5 — dettagli nel docstring di
domains/correlation.py).Questo dominio dà al modello due tool che i numeri li calcolano davvero e che, quando i
dati non permettono una risposta, restituiscono un rifiuto esplicito invece di un numero.
Principio di progetto: i tool scaricano da sé i dati (ISPRA WFS / EEA parquet) — il
modello passa solo selettori (stazione, inquinante, finestra), mai valori. Un errore del
modello può produrre una domanda sbagliata, mai un dato sbagliato.
Tool esposti su
/correlationcorrelate_pollutants— Spearman come stima primaria, N efficace corretto perl'autocorrelazione (Bretherton 1999), correlazione ricontrollata dopo la rimozione del
ciclo giornaliero e di un trend comune. Verdetti:
reportable,confounded_by_cycle,confounded_by_trend,identical_source_trivial,insufficient_overlap,cannot_compute— ciascuno con una fraseplainin italiano che l'assistente devecitare testualmente.
intervention_effect— «X è cambiato alla data D?»: regressione segmentata con seriedi controllo opzionale (difference-in-differences) ed errori Newey-West. Senza
controllo il risultato è marcato descrittivo, mai causale.
File
correlation_engine.pyintervention.pydomains/correlation.py/correlationexamples/correlation_endpoints_test.pyserver.py,README.md,CLAUDE.mdPrimo commit, separato — due indurimenti piccoli ai domini esistenti:
domains/ispra_air_quality.py(3 righe). Oggi quelcanale omette le ore invalidate invece di segnalarle, quindi la guardia non scatta
mai — ma la sorgente ha già cambiato comportamento senza preavviso (aprile 2026):
meglio fallire rumorosi che in silenzio.
→diventa->nelle print di ispra ed eea).Trovato rilanciando i test il 6 agosto su Windows: con stdout non-UTF-8 (pipe,
cp1252) la print sollevava UnicodeEncodeError dentro il tool e l'errore riemergeva
come un finto
cannot_compute. Sul server Linux non può manifestarsi — ma megliotogliere la mina.
Test e auto-audit
pyarrow 25.0.0; su Windows serve anche
tzdataperZoneInfo("Europe/Rome")).legittimo su dati vivi produceva un KeyError nel report invece di un
[FAIL]pulito.l'inferenza Newey-West sovra-dichiarava (falsi positivi 8–32% a seconda della
persistenza). Mitigazione inclusa: verdetto ristretto a p<0.01 più rifiuto esplicito
inference_unreliablequando i residui restano troppo autocorrelati. Sul nullo, confinestre ≥1 anno, i falsi positivi tornano all'1.8–5%. La simulazione è nel test,
eseguibile.
Fuori da questa MR (lato assistant)
/correlationin_load_mcp_serverspostgres/10-intents.sql)di
correlatione riportareverdicteplaintestualmente — mai r, p o nessicausali riformulati dal modello.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.