forked from HaojiHu/HUMI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAutocorrelation.py
More file actions
66 lines (45 loc) · 1.35 KB
/
Copy pathAutocorrelation.py
File metadata and controls
66 lines (45 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import pandas as pd
import numpy as np
from scipy.stats import pearsonr
# Load data
data1 = pd.read_csv('./data/traffic/51_6_7.csv', header=None)
# data1.plot()
# plt.show()
#
# plot_acf(data1)
# plt.show()
data2 = pd.read_csv('./data/traffic/51_12_1.csv', header=None)
# data2.plot()
# plt.show()
#
# plot_acf(data2)
# plt.show()
data1 = np.squeeze(data1.to_numpy())
data2 = np.squeeze(data2.to_numpy())
def normalize(conts):
scale = np.max(conts) - np.min(conts)
res = (conts - np.min(conts)) / scale
return res
# s = min(len(data1), len(data2))
s = 7
print(pearsonr(data1[:-s], data1[s:]))
normalized_data2 = normalize(data2[:s])
print(pearsonr(data2[:-s], data2[s:]))
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import STL
from statsmodels.tsa.stattools import acf
# Data
data = pd.read_csv('./data/traffic/51_6_7.csv', header=None)
N = len(data)
# --- STL decomposition ---
# Try STL with a range of possible periods; choose based on minimal residuals
p = 7
stl = STL(data, period=p, robust=True)
res = stl.fit()
print(pearsonr(res.seasonal[:-s], res.seasonal[s:]))
data = pd.read_csv('./data/traffic/51_12_1.csv', header=None)
p = 7
stl = STL(data, period=p, robust=True)
res = stl.fit()
print(pearsonr(res.seasonal[:-s], res.seasonal[s:]))