Getting started using the forecast
package for time series data in R, as quickly as possible and no explanations.
Xts has a lot to offer to make your time series analysis fast and mistake free, but it can take some time to get used to it. This xts cheat sheet provides you not only with an overview of the xts object, how to create and inspect them, but also goes deeper into how you can manipulate time series with xts: you'll see how to replace and update. The Rstudio has also published a series of cheat sheets to make it easier for the R community. The data visualization with ggplot2 seems to be a favorite as it helps when you are working on creating graphs of your results. At cran.r-project.org: R functions for Regression Analysis; R short reference Card; R functions for Time series Analysis.
Source: Forecasting: Principles and Practice
Coerce your data to ts
format:
autoplot()
: Useful function to plot data and forecasts
Seasonality
ggseasonplot()
: Create a seasonal plotggsubseriesplot()
: Create mini plots for each season and show seasonal means
Lags and ACF
gglagplot()
: Plot the time series against lags of itselfggAcf()
: Plot the autocorrelation function (ACF)
White Noise and the Ljung-Box Test
White Noise is another name for a time series of iid data. Purely random. Ideally your model residuals should look like white noise.
You can use the Ljung-Box test to check if a time series is white noise, here’s an example with 24 lags:
p-value > 0.05 suggests data are not significantly different than white noise
The forecast
package includes a few common models out of the box. Fit the model and create a forecast
object, and then use the forecast()
function on the object and a number of h
periods to predict.
Example of the workflow:
Naive Models
Useful to benchmark against naive and seasonal naive models.
naive()
snaive()
Residuals
Residuals are the difference between the model’s fitted values and the actual data. Residuals should look like white noise and be:
- Uncorrelated
- Have mean zero
And ideally have:
- Constant variance
- A normal distribution
checkresiduals()
: helper function to plot the residuals, plot the ACF and histogram, and do a Ljung-Box test on the residuals.
Evaluating Model Accuracy
Train/Test split with window function:
window(data, start, end)
: to slice the ts
data
Use accuracy()
on the model and test set
accuracy(model, testset)
: Provides accuracy measures like MAE, MSE, MAPE, RMSE etc
Backtesting with one step ahead forecasts, aka “Time series cross validation” can be done with a helper function tsCV()
.
tsCV()
: returns forecast errors given a forecastfunction
that returns a forecast
object and number of steps ahead h
. At h
= 1 the forecast errors will just be the model residuals.
Here’s an example using the naive()
model, forecasting one period ahead:
Exponential Models
ses()
: Simple Exponential Smoothing, implement a smoothing parameter alpha on previous dataholt()
: Holt’s linear trend, SES + trend parameter. Usedamped
=TRUE for damped trendinghw()
: Holt-Winters method, incorporates linear trend and seasonality. Setseasonal
=”additive” for additive version or “multiplicative” for multiplicative version
ETS Models
The forecast
package includes a function ets()
for your exponential smoothing models. ets()
estimates parameters using the likelihood of the data arising from the model, and selects the best model using corrected AIC (AICc) * Error = {A, M} * Trend = {N, A, Ad} * Seasonal = {N, A, M}
Transformations
May need to transform the data if it is non-stationary to improve your model prediction. To deal with non-constant variance, you can use a Box-Cox transformation.
BoxCox()
: Box-Cox uses a lambda
parameter between -1 and 1 to stabilize the variance. A lambda
of 0 performs a natural log, 1/3 does a cube root, etc while 1 does nothing and -1 performs an inverse transformation.
Differencing is another transformation that uses differences between observations to model changes rather than the observations themselves.
ARIMA
Parameters: (p,d,q)(P,D,Q)m
Parameter | Description |
---|---|
p | # of autoregression lags |
d | # of lag-1 differences |
q | # of Moving Average lags |
P | # of seasonal AR lags |
D | # of seasonal differences |
Q | # of seasonal MA lags |
m | # of observations per year |
Arima()
: Implementation of the ARIMA function, set include.constant
= TRUE to include drift aka the constant
auto.arima()
: Automatic implentation of the ARIMA function in forecast
. Estimates parameters using maximum likelihood and does a stepwise search between a subset of all possible models. Can take a lambda
argument to fit the model to transformed data and the forecasts will be back-transformed onto the original scale. Turn stepwise
= FALSE to consider more models at the expense of more time.
Dynamic Regression
Regression model with non-seasonal ARIMA errors, i.e. we allow e_t to be an ARIMA process rather than white noise.
Usage example:
Dynamic Harmonic Regression
Dynamic Regression with K
fourier terms to model seasonality. With higher K
the model becomes more flexible.
Pro: Allows for any length seasonality, but assumes seasonal pattern is unchanging. Arima()
and auto.arima()
may run out of memory at large seasonal periods (i.e. >200).
TBATS
Automated model that combines exponential smoothing, Box-Cox transformations, and Fourier terms. Pro: Automated, allows for complex seasonality that changes over time.Cons: Slow.
- T: Trigonemtric terms for seasonality
- B: Box-Cox transformations for heterogeneity
- A: ARMA errors for short term dynamics
- T: Trend (possibly damped)
- S: Seasonal (including multiple and non-integer periods)
Pandas is an open-source Python library that is powerful and flexible for data analysis. If there is something you want to do with data, the chances are it will be possible in pandas. There are a vast number of possibilities within pandas, but most users find themselves using the same methods time after time. In this article, we compiled the best cheat sheets from across the web, which show you these core methods at a glance.
The primary data structure in pandas is the DataFrame used to store two-dimensional data, along with a label for each corresponding column and row. If you are familiar with Excel spreadsheets or SQL databases, you can think of the DataFrame as being the pandas equivalent. If we take a single column from a DataFrame, we have one-dimensional data. In pandas, this is called a Series. DataFrames can be created from scratch in your code, or loaded into Python from some external location, such as a CSV. This is often the first stage in any data analysis task. We can then do any number of things with our DataFrame in Pandas, including removing or editing values, filtering our data, or combining this DataFrame with another DataFrame. Each line of code in these cheat sheets lets you do something different with a DataFrame. Also, if you are coming from an Excel background, you will enjoy the performance pandas has to offer. After you get over the learning curve, you will be even more impressed with the functionality.
Whether you are already familiar with pandas and are looking for a handy reference you can print out, or you have never used pandas and are looking for a resource to help you get a feel for the library- there is a cheat sheet here for you!
1. The Most Comprehensive Cheat Sheet
This one is from the pandas guys, so it makes sense that this is a comprehensive and inclusive cheat sheet. It covers the vast majority of what most pandas users will ever need to do to a DataFrame. Have you already used pandas for a little while? And are you looking to up your game? This is your cheat sheet! However, if you are newer to pandas and this cheat sheet is a bit overwhelming, don’t worry! You definitely don’t need to understand everything in this cheat sheet to get started. Instead, check out the next cheat sheet on this list.
2. The Beginner’s Cheat Sheet
Dataquest is an online platform that teaches Data Science using interactive coding challenges. I love this cheat sheet they have put together. It has everything the pandas beginner needs to start using pandas right away in a friendly, neat list format. It covers the bare essentials of each stage in the data analysis process:
- Importing and exporting your data from an Excel file, CSV, HTML table or SQL database
- Cleaning your data of any empty rows, changing data formats to allow for further analysis or renaming columns
- Filtering your data or removing anomalous values
- Different ways to view the data and see it’s dimensions
- Selecting any combination of columns and rows within the DataFrame using loc and iloc
- Using the .apply method to apply a formula to a particular column in the DataFrame
- Creating summary statistics for columns in the DataFrame. This includes the median, mean and standard deviation
- Combining DataFrames
3. The Excel User’s Cheat Sheet
Ok, this isn’t quite a cheat sheet, it’s more of an entire manifesto on the pandas DataFrame! If you have a little time on your hands, this will help you get your head around some of the theory behind DataFrames. It will take you all the way from loading in your trusty CSV from Microsoft Excel to viewing your data in Jupyter and handling the basics. The article finishes off by using the DataFrame to create a histogram and bar chart. For migrating your spreadsheet work from Excel to pandas, this is a fantastic guide. It will teach you how to perform many of the Excel basics in pandas. If you are also looking for how to perform the pandas equivalent of a VLOOKUP in Excel, check out Shane’s article on the merge method.
4. The Most Beautiful Cheat Sheet
If you’re more of a visual learner, try this cheat sheet! Many common pandas tasks have intricate, color-coded illustrations showing how the operation works. On page 3, there is a fantastic section called ‘Computation with Series and DataFrames’, which provides an intuitive explanation for how DataFrames work and shows how the index is used to align data when DataFrames are combined and how element-wise operations work in contrast to operations which work on each row or column. At 8 pages long, it’s more of a booklet than a cheat sheet, but it can still make for a great resource!
5. The Best Machine Learning Cheat Sheet
Much like the other cheat sheets, there is comprehensive coverage of the pandas basic in here. So, that includes filtering, sorting, importing, exploring, and combining DataFrames. However, where this Cheat Sheet differs is that it finishes off with an excellent section on scikit-learn, Python’s machine learning library. In this section, the DataFrame is used to train a machine learning model. This cheat sheet will be perfect for anybody who is already familiar with machine learning and is transitioning from a different technology, such as R.
6. The Most Compact Cheat Sheet
Data Camp is an online platform that teaches Data Science with videos and coding exercises. They have made cheat sheets on a bunch of the most popular Python libraries, which you can also check out here. This cheat sheet nicely introduces the DataFrame, and then gives a quick overview of the basics. Unfortunately, it doesn’t provide any information on the various ways you can combine DataFrames, but it does all fit on one page and looks great. So, if you are looking to stick a pandas cheat sheet on your bedroom wall and nail home the basics, this one might be for you! The cheat sheet finishes with a small section introducing NaN values, which come from NumPy. These indicate a null value and arise when the indices of two Series don’t quite match up in this case.
7. The Best Statistics Cheat Sheet
While there aren’t any pictures to be found in this sheet, it is an incredibly detailed set of notes on the pandas DataFrame. This cheat shines with its complete section on time series and statistics. There are methods for calculating covariance, correlation, and regression here. So, if you are using pandas for some advanced statistics or any kind of scientific work, this is going to be your cheat sheet.
Time Series Analysis Python Cheat Sheet
Where to go from here?
For just automating a few tedious tasks at work, or using pandas to replace your crashing Excel spreadsheet, everything covered in these cheat sheets should be entirely sufficient for your purposes.
If you are looking to use pandas for Data Science, then you are only going to be limited by your knowledge of statistics and probability. This is the area that most people lack when they try to enter this field. I highly recommend checking out Think Stats by Allen B Downey, which provides an introduction to statistics using Python.
For those a little more advanced, looking to do some machine learning, you will want to start taking a look at the scikit-learn library. Data Camp has a great cheat sheet for this. You will also want to pick up a linear algebra textbook to understand the theory of machine learning. For something more practical, perhaps give the famous Kaggle Titanic machine learning competition.
Learning about pandas has many uses, and can be interesting simply for its own sake. However, Python is massively in demand right now, and for that reason, it is a high-income skill. At any given time, there are thousands of people searching for somebody to solve their problems with Python. So, if you are looking to use Python to work as a freelancer, then check out the Finxter Python Freelancer Course. This provides the step by step path to go from nothing to earning a full-time income with Python in a few months, and gives you the tools to become a six-figure developer!