# Using TBATS model to determine if a customer is seasonal

I am working on a project to determine seasonal customers in the customer database.

The company sells email marketing. So our customers are people who send emails to their customers (either with newsletters/announcements, to sell a product, or otherwise engage their customers).

I can look at the number of email sends a customer is doing by month.

Our hypothesis is, that there are a number of customers who have seasonal needs for our product. As an example, and ice cream store might shut down for the cold winter and not need to send emails to their customers.

We wouldn't want to assume that this person's lack of using the product in the winter is them being unengaged with the product, but maybe be able to tell from historical data that they just typically go dormant in the winter, and are not at risk of cancelling their service with us.

To do this. I was fitting a TBATS model for customers with at least 2 years worth of data and at least 15 sends throughout the year.

for each customer I'm basically saying that the data is monthly, and then I check for a seasonal period of length 12 for their "SENDS" data (email sends). Then I save the fit$seasonal.periods, which is basically [12] if they are annually seasonal, or null if it does not determine seasonal behavior of that length. TS = ts(SENDS, start = c(startYR, startMNTH), end = c(endYR, endMNTH), frequency=12) fit<-tbats(TS, use.damped.trend = FALSE, seasonal.periods = 12) fit$seasonal.periods


Any chance you would know if this approach sounds reasonable?

Also, I would assume this model uses autocorrelation to determine if the seasonal periods are a good fit? Can someone confirm this?

If you have any context, or any idea about some problems there may be with this methodology I would greatly appreciate it.

Any chance you would know if this approach sounds reasonable?

It might work, but it would be overkill. TBATS was developed for complex seasonalities, for example daily sales data which exhibits both weekly and yearly seasonality.

You have 2 years of monthly data - that's not granular enough to exhibit any complex seasonalities - at most you can detect a yearly seasonality with that level of data.

An easier approach would be to use the stl() function in R.

Or you can use the ETS or Auto.arima functions from the forecast library. If one or the other returns a seasonal model, then your time series is likely seasonal.

Also, I would assume this model uses autocorrelation to determine if the seasonal periods are a good fit? Can someone confirm this?

TBATS uses the State Space approach, which is a general approach that covers many different classes of time series models.

TBATS uses Fourier analysis to model seasonality (the first 'T' stands for 'trigonomic').

• @KrissyK if this answers your question, can you please mark it as accepted? – Reinstate Monica May 24 '18 at 17:17
• Just did, sorry, this is my first time using cross-validated :) – Krissy K May 24 '18 at 17:19
• @KrissyK I apologize for not giving the customary "Welcome to Cross Validated". – Reinstate Monica May 24 '18 at 18:08
• Thanks for the belated welcome! I have so many silly questions to ask, I finished an MS in stats 8 years ago, and I'm finally in a place to be using stats again. And I forgot so much :( – Krissy K May 24 '18 at 18:25