reconnect moved files to git repo
This commit is contained in:
@ -0,0 +1,79 @@
|
||||
"""Descriptive Statistics for Time Series
|
||||
|
||||
Created on Sat Oct 30 14:24:08 2010
|
||||
|
||||
Author: josef-pktd
|
||||
License: BSD(3clause)
|
||||
"""
|
||||
|
||||
import numpy as np
|
||||
from . import stattools as stt
|
||||
|
||||
|
||||
#todo: check subclassing for descriptive stats classes
|
||||
class TsaDescriptive:
|
||||
'''collection of descriptive statistical methods for time series
|
||||
|
||||
'''
|
||||
|
||||
def __init__(self, data, label=None, name=''):
|
||||
self.data = data
|
||||
self.label = label
|
||||
self.name = name
|
||||
|
||||
def filter(self, num, den):
|
||||
from scipy.signal import lfilter
|
||||
xfiltered = lfilter(num, den, self.data)
|
||||
return self.__class__(xfiltered, self.label, self.name + '_filtered')
|
||||
|
||||
def detrend(self, order=1):
|
||||
from . import tsatools
|
||||
xdetrended = tsatools.detrend(self.data, order=order)
|
||||
return self.__class__(xdetrended, self.label, self.name + '_detrended')
|
||||
|
||||
def fit(self, order=(1,0,1), **kwds):
|
||||
from .arima_model import ARMA
|
||||
self.mod = ARMA(self.data)
|
||||
self.res = self.mod.fit(order=order, **kwds)
|
||||
#self.estimated_process =
|
||||
return self.res
|
||||
|
||||
def acf(self, nlags=40):
|
||||
return stt.acf(self.data, nlags=nlags)
|
||||
|
||||
def pacf(self, nlags=40):
|
||||
return stt.pacf(self.data, nlags=nlags)
|
||||
|
||||
def periodogram(self):
|
||||
#does not return frequesncies
|
||||
return stt.periodogram(self.data)
|
||||
|
||||
# copied from fftarma.py
|
||||
def plot4(self, fig=None, nobs=100, nacf=20, nfreq=100):
|
||||
data = self.data
|
||||
acf = self.acf(nacf)
|
||||
pacf = self.pacf(nacf)
|
||||
w = np.linspace(0, np.pi, nfreq, endpoint=False)
|
||||
spdr = self.periodogram()[:nfreq] #(w)
|
||||
|
||||
if fig is None:
|
||||
import matplotlib.pyplot as plt
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(2,2,1)
|
||||
namestr = ' for %s' % self.name if self.name else ''
|
||||
ax.plot(data)
|
||||
ax.set_title('Time series' + namestr)
|
||||
|
||||
ax = fig.add_subplot(2,2,2)
|
||||
ax.plot(acf)
|
||||
ax.set_title('Autocorrelation' + namestr)
|
||||
|
||||
ax = fig.add_subplot(2,2,3)
|
||||
ax.plot(spdr) # (wr, spdr)
|
||||
ax.set_title('Power Spectrum' + namestr)
|
||||
|
||||
ax = fig.add_subplot(2,2,4)
|
||||
ax.plot(pacf)
|
||||
ax.set_title('Partial Autocorrelation' + namestr)
|
||||
|
||||
return fig
|
||||
Reference in New Issue
Block a user