-
Notifications
You must be signed in to change notification settings - Fork 0
/
TSA.py
71 lines (61 loc) · 1.99 KB
/
TSA.py
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
67
68
69
70
71
# -*- coding: utf-8 -*-
"""
Created on Mon Jan 23 21:58:35 2017
##Time series analysis
##Given time series, plot: 1. signal, 2.autocorrelation,
3. particial autocorrelation,
4. Quantile vs. Quantile
@author: Sunrise
"""
import os
import sys
import pandas as pd
import numpy as np
import statsmodels.tsa.api as smt
import statsmodels.api as sm
import scipy.stats as scs
import matplotlib.pyplot as plt
plt.close('all')
p = print
#data input: cat: us-0, jp-1, kr-2
us = pd.read_csv("us.csv")
jp = pd.read_csv("jp.csv")
kr = pd.read_csv("kr.csv")
#plotting
def tsplot(y, lags=30, figsize=(10, 8), style='bmh'):
if not isinstance(y, pd.Series):
y = pd.Series(y)
with plt.style.context(style):
fig = plt.figure(figsize=figsize)
layout = (3, 2)
ts_ax = plt.subplot2grid(layout, (0, 0), colspan=2)
acf_ax = plt.subplot2grid(layout, (1, 0))
acf_ax.set_ylim([-0.3,1.1])
pacf_ax = plt.subplot2grid(layout, (1, 1))
pacf_ax.set_ylim([-0.3,1.1])
qq_ax = plt.subplot2grid(layout, (2, 0))
qq_ax.set_ylim([-6,6])
pp_ax = plt.subplot2grid(layout, (2, 1))
pp_ax.set_ylim([-6,6])
y.plot(ax=ts_ax)
ts_ax.set_title('Time Series Analysis Plots')
smt.graphics.plot_acf(y, lags=lags, ax=acf_ax, alpha=0.5)
smt.graphics.plot_pacf(y, lags=lags, ax=pacf_ax, alpha=0.5)
sm.qqplot(y, line='s', ax=qq_ax)
qq_ax.set_title('QQ Plot')
scs.probplot(y, sparams=(y.mean(), y.std()), plot=pp_ax)
plt.tight_layout()
return
#random IID normal(0,1)
rants = np.random.normal(size=2520)
tsplot(rants)
tsplot(rants**2)
#random sample from US, JP and Kr
CAT = [us, jp, kr]
for cat in CAT:
for i in range(1):
s =np.random.randint(0,cat.shape[0])
p(s)
dat = cat.loc[s,'0':]
tsplot(dat)
tsplot(dat**2)