70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
# scripts/plot_lagged_correlations.py
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from meteo.dataset import load_raw_csv
|
|
from meteo.variables import VARIABLES_BY_KEY
|
|
from meteo.analysis import compute_lagged_correlation
|
|
from meteo.plots import plot_lagged_correlation
|
|
|
|
|
|
CSV_PATH = Path("data/weather_minutely.csv")
|
|
OUTPUT_DIR = Path("figures/lagged_correlations")
|
|
|
|
|
|
# Paires à analyser (clé de variable X, clé de variable Y)
|
|
# Convention : X précède potentiellement Y
|
|
INTERESTING_PAIRS: list[tuple[str, str]] = [
|
|
("temperature", "humidity"),
|
|
("temperature", "rain_rate"),
|
|
("pressure", "rain_rate"),
|
|
("pressure", "wind_speed"),
|
|
("pressure", "illuminance"),
|
|
("illuminance", "temperature"),
|
|
("humidity", "rain_rate"),
|
|
]
|
|
|
|
|
|
def main() -> None:
|
|
if not CSV_PATH.exists():
|
|
print(f"⚠ Fichier introuvable : {CSV_PATH}")
|
|
return
|
|
|
|
df = load_raw_csv(CSV_PATH)
|
|
print(f"Dataset minuté chargé : {CSV_PATH}")
|
|
print(f" Lignes : {len(df)}")
|
|
print(f" Colonnes : {list(df.columns)}")
|
|
print()
|
|
|
|
for key_x, key_y in INTERESTING_PAIRS:
|
|
var_x = VARIABLES_BY_KEY[key_x]
|
|
var_y = VARIABLES_BY_KEY[key_y]
|
|
|
|
print(f"→ Corrélation décalée : {var_x.key} → {var_y.key}")
|
|
|
|
lag_df = compute_lagged_correlation(
|
|
df=df,
|
|
var_x=var_x,
|
|
var_y=var_y,
|
|
max_lag_minutes=360, # ± 6 heures
|
|
step_minutes=10, # pas de 10 minutes
|
|
method="pearson",
|
|
)
|
|
|
|
filename = f"lagcorr_{var_x.key}_to_{var_y.key}.png"
|
|
output_path = OUTPUT_DIR / filename
|
|
|
|
plot_lagged_correlation(
|
|
lag_df=lag_df,
|
|
var_x=var_x,
|
|
var_y=var_y,
|
|
output_path=output_path,
|
|
)
|
|
|
|
print("✔ Graphiques de corrélation décalée générés.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|