def test_ld(self): pacfyw = pacf_yw(self.x, nlags=40, method="mle") pacfld = pacf(self.x, nlags=40, method="ldb") assert_almost_equal(pacfyw, pacfld, DECIMAL_8) pacfyw = pacf(self.x, nlags=40, method="yw") pacfld = pacf(self.x, nlags=40, method="ldu") assert_almost_equal(pacfyw, pacfld, DECIMAL_8)
def test_ld(self): pacfyw = pacf_yw(self.x, nlags=40, method="mle") pacfld = pacf(self.x, nlags=40, method="ldb") assert_almost_equal(pacfyw, pacfld, DECIMAL_8) pacfyw = pacf(self.x, nlags=40, method="yw") pacfld = pacf(self.x, nlags=40, method="ldu") assert_almost_equal(pacfyw, pacfld, DECIMAL_8)
def d_param(self, diff): '''function takes different values for difference step, and returns true or false flag if acf and pacf values lie into the threshold area''' THRESHOLD = 0.08 if diff == 0: acf = tss.acf(self.val) pacf = tss.pacf(self.val) # acf and pacf plots fig = plt.figure(figsize = (12,8)) ax1 = fig.add_subplot(121) fig = plot_acf(self.val,lags =40 ,ax=ax1) ax2 = fig.add_subplot(122, sharey=ax1) fig= plot_pacf(self.val, lags = 40, ax =ax2) plt.savefig('ACF_vs_PACF.jpg') plt.close() # check if most acf and pacf are lie in the accepted region for diff0 acf_percent = len(acf[np.abs(acf) <= THRESHOLD])/float(len(acf)) pacf_percent = len(pacf[np.abs(pacf) <= THRESHOLD])/float(len(pacf)) return (acf_percent >= .65) and (pacf_percent >= 0.65) elif diff == 1: diff1_acf = tss.acf(self.diff1_val.dropna()) diff1_pacf = tss.pacf(self.diff1_val.dropna()) # for acf and pacf plots fig = plt.figure(figsize = (12,8)) ax1 = fig.add_subplot(121) fig = plot_acf(self.diff1_val.dropna(),lags =40 ,ax=ax1) ax2 = fig.add_subplot(122, sharey=ax1) fig= plot_pacf(self.diff1_val.dropna(), lags = 40, ax =ax2) plt.savefig('ACF_vs_PACF_diff1.jpg') plt.close() # check if most acf and pacf are lie in the accepted region for diff1 acf_percent = len(diff1_acf[np.abs(diff1_acf) <= THRESHOLD])/float(len(diff1_acf)) pacf_percent = len(diff1_pacf[np.abs(diff1_pacf) <= THRESHOLD])/float(len(diff1_pacf)) return (acf_percent >= .65) and (pacf_percent >= 0.65) elif diff == 2: diff2_acf = tss.acf(self.diff2_val.dropna()) diff2_pacf = tss.pacf(self.diff2_val.dropna()) # check save fig for acf and pacf plots fig = plt.figure(figsize = (12,8)) ax1 = fig.add_subplot(121) fig = plot_acf(self.diff2_val.dropna(),lags =40 ,ax=ax1) ax2 = fig.add_subplot(122, sharey=ax1) fig = plot_pacf(self.diff2_val.dropna(), lags = 40, ax =ax2) plt.savefig('ACF_vs_PACF_diff2.jpg') plt.close() # check if most acf and pacf are lie in the accepted region for diff2 acf_percent = len(diff2_acf[np.abs(diff2_acf) <= THRESHOLD])/float(len(diff2_acf)) pacf_percent = len(diff2_pacf[np.abs(diff2_pacf) <= THRESHOLD])/float(len(diff2_pacf)) return (acf_percent >= .65) and (pacf_percent >= 0.65) else: raise InvalidParamError
def plot_acf(y, lags=100, partial=False, ax=None): from scikits.statsmodels.tsa.stattools import acf, pacf if partial: the_acf = pacf(y, nlags=lags) else: the_acf = acf(y, nlags=lags) if ax is None: fig = plt.figure(figsize=(10, 5)) ax = fig.add_subplot(111) ax.vlines(np.arange(lags + 1), [0], the_acf) ax.axhline(0, color='k')
def plot_acf(y, lags=100, partial=False, ax=None): from scikits.statsmodels.tsa.stattools import acf, pacf if partial: the_acf = pacf(y, nlags=lags) else: the_acf = acf(y, nlags=lags) if ax is None: fig = plt.figure(figsize=(10, 5)) ax = fig.add_subplot(111) ax.vlines(np.arange(lags+1), [0], the_acf) ax.axhline(0, color='k')