%23%20%2F%2F%2F%20script%0A%23%20requires-python%20%3D%20%22%3E%3D3.11%22%0A%23%20dependencies%20%3D%20%5B%0A%23%20%20%20%20%20%22yohou%5Bplotting%5D%22%2C%0A%23%20%5D%0A%23%20%2F%2F%2F%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.23.8%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20import%20polars%20as%20pl%0A%0A%20%20%20%20from%20yohou.datasets%20import%20fetch_electricity_demand%2C%20fetch_hospital%0A%20%20%20%20from%20yohou.plotting%20import%20(%0A%20%20%20%20%20%20%20%20plot_correlation_heatmap%2C%0A%20%20%20%20%20%20%20%20plot_cross_correlation%2C%0A%20%20%20%20%20%20%20%20plot_lag_scatter%2C%0A%20%20%20%20%20%20%20%20plot_scatter_matrix%2C%0A%20%20%20%20)%0A%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20fetch_electricity_demand%2C%0A%20%20%20%20%20%20%20%20fetch_hospital%2C%0A%20%20%20%20%20%20%20%20pl%2C%0A%20%20%20%20%20%20%20%20plot_correlation_heatmap%2C%0A%20%20%20%20%20%20%20%20plot_cross_correlation%2C%0A%20%20%20%20%20%20%20%20plot_lag_scatter%2C%0A%20%20%20%20%20%20%20%20plot_scatter_matrix%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20Correlation%20and%20Scatter%20Diagnostics%0A%0A%20%20%20%20This%20notebook%20shows%20how%20to%20create%20pairwise%20correlation%20heatmaps%2C%20scatter%20matrices%2C%20cross-correlation%20at%20multiple%20lags%2C%20and%20lag%20scatter%20plots%20for%20multivariate%20time%20series%20diagnostics.%0A%0A%20%20%20%20**Prerequisites%3A**%20Basic%20understanding%20of%20correlation%20and%20scatter%20plots.%20Familiarity%20with%20multivariate%20time%20series%20concepts.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Load%20and%20Prepare%20Data%0A%0A%20%20%20%20We%20load%20two%20datasets%20using%20%5B%60fetch_electricity_demand%60%5D(%2Fpages%2Fapi%2Fgenerated%2Fyohou.datasets._fetchers.fetch_electricity_demand%2F)%20and%20%5B%60fetch_hospital%60%5D(%2Fpages%2Fapi%2Fgenerated%2Fyohou.datasets._fetchers.fetch_hospital%2F).%0A%20%20%20%20The%20electricity%20demand%20data%20is%20downsampled%20from%20half-hourly%20to%20daily%20means%20for%0A%20%20%20%20three%20Australian%20states%20(Victoria%2C%20NSW%2C%20South%20Australia).%20The%20hospital%20data%0A%20%20%20%20provides%20three%20monthly%20patient%20count%20series.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(fetch_electricity_demand%2C%20fetch_hospital%2C%20pl)%3A%0A%20%20%20%20_elec%20%3D%20fetch_electricity_demand().frame%0A%20%20%20%20%23%20Downsample%20to%20daily%2C%20rename%20to%20plain%20columns%20for%20multivariate%20analysis%0A%20%20%20%20vic_daily%20%3D%20_elec.group_by_dynamic(%22time%22%2C%20every%3D%221d%22).agg(%0A%20%20%20%20%20%20%20%20pl.col(%22vic__demand%22).mean().alias(%22Victoria%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22nsw__demand%22).mean().alias(%22NSW%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22sa__demand%22).mean().alias(%22SA%22)%2C%0A%20%20%20%20)%0A%20%20%20%20_hosp%20%3D%20fetch_hospital().frame%0A%20%20%20%20%23%20Select%203%20series%20and%20rename%20for%20multivariate%20analysis%0A%20%20%20%20hospital%20%3D%20_hosp.select(%0A%20%20%20%20%20%20%20%20%22time%22%2C%0A%20%20%20%20%20%20%20%20pl.col(%22T1__patients%22).alias(%22patients_1%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22T2__patients%22).alias(%22patients_2%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22T3__patients%22).alias(%22patients_3%22)%2C%0A%20%20%20%20)%0A%20%20%20%20return%20hospital%2C%20vic_daily%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%201.%20Correlation%20Heatmap%0A%0A%20%20%20%20%5B%60plot_correlation_heatmap%60%5D(%2Fpages%2Fapi%2Fgenerated%2Fyohou.plotting.diagnostics.plot_correlation_heatmap%2F)%20computes%20pairwise%20Pearson%20correlations%20and%20renders%0A%20%20%20%20them%20as%20a%20heatmap.%20Vary%20the%20**colorscale**%2C%20toggle%20**show_values**%2C%20and%20restrict%0A%20%20%20%20to%20a%20subset%20of%20**columns**.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_correlation_heatmap%2C%20vic_daily)%3A%0A%20%20%20%20plot_correlation_heatmap(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20title%3D%22Pearson%20Correlation%20--%20Default%20(RdBu_r%2C%20Values%20Shown)%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_correlation_heatmap%2C%20vic_daily)%3A%0A%20%20%20%20plot_correlation_heatmap(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20colorscale%3D%22Viridis%22%2C%0A%20%20%20%20%20%20%20%20show_values%3DFalse%2C%0A%20%20%20%20%20%20%20%20title%3D%22Pearson%20Correlation%20--%20Viridis%2C%20No%20Annotations%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_correlation_heatmap%2C%20vic_daily)%3A%0A%20%20%20%20plot_correlation_heatmap(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20columns%3D%5B%22Victoria%22%2C%20%22NSW%22%5D%2C%0A%20%20%20%20%20%20%20%20title%3D%22Pearson%20Correlation%20--%20Column%20Subset%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%202.%20Scatter%20Matrix%0A%0A%20%20%20%20%5B%60plot_scatter_matrix%60%5D(%2Fpages%2Fapi%2Fgenerated%2Fyohou.plotting.diagnostics.plot_scatter_matrix%2F)%20creates%20an%20N%20x%20N%20grid%20of%20pairwise%20scatter%20plots.%0A%20%20%20%20The%20**diagonal**%20can%20be%20%60%22kde%22%60%2C%20%60%22histogram%22%60%2C%20or%20%60%22none%22%60.%20The%20**seasonality**%0A%20%20%20%20parameter%20colors%20points%20by%20season%2C%20and%20**show_correlation**%20overlays%20Pearson%20r.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_scatter_matrix%2C%20vic_daily)%3A%0A%20%20%20%20plot_scatter_matrix(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20title%3D%22Scatter%20Matrix%20--%20Default%20(KDE%20Diagonal)%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_scatter_matrix%2C%20vic_daily)%3A%0A%20%20%20%20plot_scatter_matrix(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20diagonal%3D%22histogram%22%2C%0A%20%20%20%20%20%20%20%20title%3D%22Scatter%20Matrix%20--%20Histogram%20Diagonal%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_scatter_matrix%2C%20vic_daily)%3A%0A%20%20%20%20plot_scatter_matrix(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20diagonal%3D%22none%22%2C%0A%20%20%20%20%20%20%20%20show_correlation%3DFalse%2C%0A%20%20%20%20%20%20%20%20title%3D%22Scatter%20Matrix%20--%20Scatter%20Only%2C%20No%20Statistics%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_scatter_matrix%2C%20vic_daily)%3A%0A%20%20%20%20plot_scatter_matrix(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20columns%3D%5B%22Victoria%22%2C%20%22NSW%22%5D%2C%0A%20%20%20%20%20%20%20%20seasonality%3D%22month%22%2C%0A%20%20%20%20%20%20%20%20title%3D%22Scatter%20Matrix%20--%20Month-Colored%20Points%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%203.%20Cross-Correlation%0A%0A%20%20%20%20%5B%60plot_cross_correlation%60%5D(%2Fpages%2Fapi%2Fgenerated%2Fyohou.plotting.diagnostics.plot_cross_correlation%2F)%20computes%20the%20cross-correlation%20function%20(CCF)%20between%0A%20%20%20%20two%20columns%20at%20integer%20lags.%20Vary%20**lags**%2C%20**alpha**%20(significance%20level)%2C%0A%20%20%20%20and%20reverse%20the%20column%20pair%20to%20inspect%20asymmetry.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_cross_correlation%2C%20vic_daily)%3A%0A%20%20%20%20plot_cross_correlation(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20columns%3D%5B%22Victoria%22%2C%20%22NSW%22%5D%2C%0A%20%20%20%20%20%20%20%20max_lags%3D40%2C%0A%20%20%20%20%20%20%20%20title%3D%22CCF%3A%20Victoria%20vs%20NSW%20(40%20Lags)%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_cross_correlation%2C%20vic_daily)%3A%0A%20%20%20%20plot_cross_correlation(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20columns%3D%5B%22Victoria%22%2C%20%22NSW%22%5D%2C%0A%20%20%20%20%20%20%20%20max_lags%3D20%2C%0A%20%20%20%20%20%20%20%20confidence_level%3D0.99%2C%0A%20%20%20%20%20%20%20%20title%3D%22CCF%3A%20Victoria%20vs%20NSW%20(20%20Lags%2C%2099%25%20CI)%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plot_cross_correlation%2C%20vic_daily)%3A%0A%20%20%20%20plot_cross_correlation(%0A%20%20%20%20%20%20%20%20vic_daily%2C%0A%20%20%20%20%20%20%20%20columns%3D%5B%22NSW%22%2C%20%22Victoria%22%5D%2C%0A%20%20%20%20%20%20%20%20max_lags%3D40%2C%0A%20%20%20%20%20%20%20%20title%3D%22CCF%3A%20NSW%20vs%20Victoria%20(Reversed%20Direction)%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%204.%20Lag%20Scatter%0A%0A%20%20%20%20%5B%60plot_lag_scatter%60%5D(%2Fpages%2Fapi%2Fgenerated%2Fyohou.plotting.diagnostics.plot_lag_scatter%2F)%20plots%20%24y(t)%24%20vs%20%24y(t%20-%20k)%24%20for%20one%20or%20more%20**lags**.%0A%20%20%20%20Passing%20a%20list%20of%20lags%20produces%20a%20subplot%20grid.%20The%20**seasonality**%20parameter%0A%20%20%20%20colors%20points%20by%20season%2C%20**show_regression**%20adds%20a%20trend%20line%2C%20and%0A%20%20%20%20**show_diagonal**%20draws%20the%20%24y%20%3D%20x%24%20identity.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(hospital%2C%20plot_lag_scatter)%3A%0A%20%20%20%20plot_lag_scatter(%0A%20%20%20%20%20%20%20%20hospital%2C%0A%20%20%20%20%20%20%20%20columns%3D%22patients_1%22%2C%0A%20%20%20%20%20%20%20%20lags%3D1%2C%0A%20%20%20%20%20%20%20%20title%3D%22Lag%201%20Scatter%20--%20Hospital%20patients_1%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(hospital%2C%20plot_lag_scatter)%3A%0A%20%20%20%20plot_lag_scatter(%0A%20%20%20%20%20%20%20%20hospital%2C%0A%20%20%20%20%20%20%20%20columns%3D%22patients_1%22%2C%0A%20%20%20%20%20%20%20%20lags%3D%5B1%2C%206%2C%2012%2C%2024%5D%2C%0A%20%20%20%20%20%20%20%20title%3D%22Multi-Lag%20Grid%20--%20patients_1%20at%20Lags%201%2C%206%2C%2012%2C%2024%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(hospital%2C%20plot_lag_scatter)%3A%0A%20%20%20%20plot_lag_scatter(%0A%20%20%20%20%20%20%20%20hospital%2C%0A%20%20%20%20%20%20%20%20columns%3D%22patients_1%22%2C%0A%20%20%20%20%20%20%20%20lags%3D%5B1%2C%2012%5D%2C%0A%20%20%20%20%20%20%20%20seasonality%3D%22month%22%2C%0A%20%20%20%20%20%20%20%20show_regression%3DTrue%2C%0A%20%20%20%20%20%20%20%20title%3D%22Lag%20Scatter%20--%20Month-Colored%20with%20Regression%20Line%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(hospital%2C%20plot_lag_scatter)%3A%0A%20%20%20%20plot_lag_scatter(%0A%20%20%20%20%20%20%20%20hospital%2C%0A%20%20%20%20%20%20%20%20columns%3D%22patients_1%22%2C%0A%20%20%20%20%20%20%20%20lags%3D%5B1%2C%207%5D%2C%0A%20%20%20%20%20%20%20%20show_diagonal%3DFalse%2C%0A%20%20%20%20%20%20%20%20marker_opacity%3D0.3%2C%0A%20%20%20%20%20%20%20%20title%3D%22Lag%20Scatter%20--%20No%20Diagonal%2C%20Transparent%20Markers%22%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Next%20Steps%0A%0A%20%20%20%20-%20%5BVisualize%20Forecasts%5D(%2Fpages%2Fhow-to%2Fvisualize-forecasts%2F)%20for%20the%20full%20guide%0A%20%20%20%20-%20%5BExploratory%20Visualization%20Tutorial%5D(%2Fpages%2Ftutorials%2Fexploratory-visualization%2F)%20for%20related%20techniques%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
27fbbee67e0ec9ba7bd7272055f33b17