Skip to content

Commit

Permalink
v1.0.2.19.05.2019
Browse files Browse the repository at this point in the history
  • Loading branch information
Bhavesh committed May 19, 2019
1 parent 512dc41 commit 7dd50c1
Show file tree
Hide file tree
Showing 21 changed files with 11,525 additions and 0 deletions.
Binary file added .DS_Store
Binary file not shown.

Large diffs are not rendered by default.

1,411 changes: 1,411 additions & 0 deletions time_series_arima/ARIMA.ipynb

Large diffs are not rendered by default.

1,335 changes: 1,335 additions & 0 deletions time_series_arima/ARIMA_on_Airline_Dataset.ipynb

Large diffs are not rendered by default.

3,240 changes: 3,240 additions & 0 deletions time_series_arima/Germany_temp.csv

Large diffs are not rendered by default.

145 changes: 145 additions & 0 deletions time_series_arima/airline.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
Month,Data
1949-01,112
1949-02,118
1949-03,132
1949-04,129
1949-05,121
1949-06,135
1949-07,148
1949-08,148
1949-09,136
1949-10,119
1949-11,104
1949-12,118
1950-01,115
1950-02,126
1950-03,141
1950-04,135
1950-05,125
1950-06,149
1950-07,170
1950-08,170
1950-09,158
1950-10,133
1950-11,114
1950-12,140
1951-01,145
1951-02,150
1951-03,178
1951-04,163
1951-05,172
1951-06,178
1951-07,199
1951-08,199
1951-09,184
1951-10,162
1951-11,146
1951-12,166
1952-01,171
1952-02,180
1952-03,193
1952-04,181
1952-05,183
1952-06,218
1952-07,230
1952-08,242
1952-09,209
1952-10,191
1952-11,172
1952-12,194
1953-01,196
1953-02,196
1953-03,236
1953-04,235
1953-05,229
1953-06,243
1953-07,264
1953-08,272
1953-09,237
1953-10,211
1953-11,180
1953-12,201
1954-01,204
1954-02,188
1954-03,235
1954-04,227
1954-05,234
1954-06,264
1954-07,302
1954-08,293
1954-09,259
1954-10,229
1954-11,203
1954-12,229
1955-01,242
1955-02,233
1955-03,267
1955-04,269
1955-05,270
1955-06,315
1955-07,364
1955-08,347
1955-09,312
1955-10,274
1955-11,237
1955-12,278
1956-01,284
1956-02,277
1956-03,317
1956-04,313
1956-05,318
1956-06,374
1956-07,413
1956-08,405
1956-09,355
1956-10,306
1956-11,271
1956-12,306
1957-01,315
1957-02,301
1957-03,356
1957-04,348
1957-05,355
1957-06,422
1957-07,465
1957-08,467
1957-09,404
1957-10,347
1957-11,305
1957-12,336
1958-01,340
1958-02,318
1958-03,362
1958-04,348
1958-05,363
1958-06,435
1958-07,491
1958-08,505
1958-09,404
1958-10,359
1958-11,310
1958-12,337
1959-01,360
1959-02,342
1959-03,406
1959-04,396
1959-05,420
1959-06,472
1959-07,548
1959-08,559
1959-09,463
1959-10,407
1959-11,362
1959-12,405
1960-01,417
1960-02,391
1960-03,419
1960-04,461
1960-05,472
1960-06,535
1960-07,622
1960-08,606
1960-09,508
1960-10,461
1960-11,390
1960-12,432
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
127 changes: 127 additions & 0 deletions time_series_eda_and_white_noise_test/ljungbox.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@

import numpy as np
import scipy.stats


def sac(x, k=1):
"""
Sample autocorrelation (As used in statistics with normalization)
http://en.wikipedia.org/wiki/Autocorrelation
Parameters
----------
x : 1d numpy array
Signal
k : int or list of ints
Lags to calculate sample autocorrelation for
Returns
-------
res : scalar or np array
The sample autocorrelation. A scalar value if k is a scalar, and a
numpy array if k is a interable.
"""
try:
res = []
for ki in k:
res.append(sac(x, ki))
return np.array(res)
except:
pass
mx = np.mean(x)
if k==0:
N = np.sum((x-mx)*(x-mx))
else:
N = np.sum((x[:-k]-mx)*(x[k:]-mx))
D = len(x) * np.var(x)
return N/D


def ljungbox(x, lags, alpha=0.1):
"""
The Ljung-Box test for determining if the data is independently distributed.
Parameters
----------
x : 1d numpy array
Signal to test
lags : int
Number of lags being tested
Returns
-------
Q : float
Test statistic
"""
n = len(x)
Q = 0
for k in range(1, lags+1):
Q += (sac(x, k)**2) / (n-k)
Q = n*(n+2)*Q
return Q

def boxpierce(x, lags, alpha=0.1):
"""
The Box-Pierce test for determining if the data is independently distributed.
Parameters
----------
x : 1d numpy array
Signal to test
lags : int
Number of lags being tested
Returns
-------
Q : float
Test statistic
"""
n = len(x)
Q = 0
for k in range(1, lags+1):
Q += (sac(x, k)**2)
Q = n*Q
return Q

def lbqtest(x, lags, alpha=0.1, method='lb'):
"""
The Ljung-Box test for determining if the data is independently distributed.
Parameters
----------
x : 1d numpy array
Signal to test
lags : list of ints
Lags being tested
alpha : float
Significance level used for the tests
method : string
Can be either 'lb' for Ljung-Box, or 'bp' for Box-Pierce
Returns
-------
h : np array
Numpy array of bool values, True == H0 hypothesis rejected
pV : np array
Test statistics p-values
Q : np array
Test statistics
cV : np array
Critical values used for determining if H0 should be rejected. The
critical values are calculated from the given alpha and lag.
"""
if method=='lb':
findq = ljungbox
else:
findq = boxpierce
n = len(x)
Q = np.zeros(len(lags))
pV = np.zeros(len(lags))
cV = np.zeros(len(lags))
for i, lag in enumerate(lags):
Q[i] = findq(x, lag)
pV[i] = 1.0 - scipy.stats.chi2.cdf(Q[i], lag)
cV[i] = scipy.stats.chi2.ppf(1-alpha, lag)
h = Q>cV
return h, pV, Q, cV
Loading

0 comments on commit 7dd50c1

Please sign in to comment.