Importamos la librería
In [18]:
import pytimeseries
import pandas
import matplotlib
pytimeseries recibe una serie de pandas para analizar. A continuación se muestra la preparación de los datos para una serie que inicialmente está en csv.
Elegir una serie de tiempo
In [9]:
tserie = pandas.read_csv('champagne.csv', index_col='Month')
print(tserie)
Convertir en fechas la columna que indica los meses
In [11]:
rng = pandas.to_datetime(tserie.index)
print(rng)
Asignar las fechas a los datos
In [12]:
tserie.reindex(rng)
Out[12]:
Inferir la frecuencia de los datos automáticamente
In [14]:
frq = pandas.infer_freq(tserie.index)
print(frq)
Análisis exploratorio de los datos
Gráfica de la serie
In [20]:
pytimeseries.series_viewer(tserie).time_plot()
matplotlib.pyplot.show()
ACF
In [21]:
pytimeseries.series_viewer(tserie).ACF_plot()
matplotlib.pyplot.show()
PACF
In [22]:
pytimeseries.series_viewer(tserie).PACF_plot()
matplotlib.pyplot.show()
QQ Plot
In [23]:
pytimeseries.series_viewer(tserie).qq_plot()
matplotlib.pyplot.show()
Histograma
In [24]:
pytimeseries.series_viewer(tserie).histogram()
matplotlib.pyplot.show()
Gráfica de densidad
In [25]:
pytimeseries.series_viewer(tserie).density_plot()
matplotlib.pyplot.show()
Test de normalidad
In [29]:
nt = pytimeseries.series_viewer(tserie).normality()
print(nt)
El modelo puede recibir una serie de tiempo transformada de la siguiente manera:
trans = Transformaciones directas de la serie:
trend = Eliminando la tendencia:
seasonal = Estacionalidad (de acuerdo a la frecuencia):
También la combinación de ellas
In [33]:
matplotlib.pyplot.plot(tserie.values)
pytimeseries.base_model(ts = tserie).specify(trans = 'log')
matplotlib.pyplot.show()
Utilizando el modelo de statsmodels
X = base_model(self.ts).specify(trans = self.trans, trend = self.trend, seasonal = self.seasonal)
model = statsmodels.tsa.ar_model.AR(X.residuals)
model_fit = model.fit()
estimation = model_fit.predict()
X.estimation = estimation
X.restore(trans = self.trans, trend = self.trend, seasonal = self.seasonal)
super().set_residuals(X.residuals)
In [40]:
model = pytimeseries.AR_p(ts = tserie, trans='sqrt', trend = 'linear', seasonal = 'poly2')
result = model.estimate()
matplotlib.pyplot.plot(tserie.values)
matplotlib.pyplot.plot(result.X.original)
matplotlib.pyplot.plot(result.X.residuals)
matplotlib.pyplot.plot(result.X.estimation)
matplotlib.pyplot.show()
Utilizando el modelo de pytimeseries
In [ ]: