irongit
time-series-cookbook/ch1/1.06_computing_autocorrelation.py
41 lines1.1 KBPython
1"""
2# Computing autocorrelation
3Correlation against itself at different lags to quantify how past values
4effect the future.
5
6Partial correlation has more control by comparing at shorter lags
7"""
8import os
9from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
10import pandas as pd
11import matplotlib.pyplot as plt
12
13# Chart config
14plt.rcParams['figure.figsize'] = (12, 6)
15
16# Ensure assets directory
17os.makedirs("assets", exist_ok=True)
18
19# Load solar data
20data = pd.read_csv(
21 "../assets/datasets/time_series_solar.csv",
22 parse_dates=["Datetime"],
23 index_col="Datetime",
24)
25series = data["Incoming Solar"]
26
27# Resample to daily
28series_daily = series.resample("D").sum()
29
30# Compute autocorrelation, acf = Auto Correlation Function
31# Compares against lags up to a year away
32# acf_scores = acf(x=series_daily, nlags=365)
33
34# Compute partial autocorrelation
35# pacf_scores = pacf(x=series_daily, nlags=365)
36
37# Convience functions to do math and plot
38plot_acf(series_daily, lags=365)
39plt.savefig("assets/autocorrelation.png")
40plot_pacf(series_daily, lags=365)
41plt.savefig("assets/partion_autocorrelation.png")