# How should I process music play data

I have music play data organized by the day on which each track was played, from March 1st, 2015 to August 30th, 2015. The data set contains count data for every day a song was played. I'd like to predict play counts for each track for an out-of-time window, from 2015-09-01 to 2015-09-30.

### Details of the data

The data is from Alibaba's TianChi Competition

Action Table (mars_tianchi_user_actions)

Any user’s action data for a song is indicated by a unique row

Songs Table（mars_tianchi_songs）

Result Set

The participants need to predict the artists’ plays data in the following two months (20150901-20151030).

Participant’s Result Table (mars_tianchi_artist_plays_predict)

For song id daa234f183aee2373d20987b247cd768(all the song ids are hash values). The play plot is:

As you can see it, the variance of each day's play for this track is quite large.

I also have data on who played each track, with each user ids represented as a hash value.

I'd like some guidance on which analysis method I could use here. I am considering time series analysis.

• What else do you know; who played which song, perhaps? – Emre May 4 '16 at 6:02
• @Emre, yes, and I got the data who played the song. I have update the question. – GoingMyWay May 4 '16 at 7:33
• So your data is one row for every time a song is played, with the exact time (to the second?), the song identifier, and the user identifier? How many different songs, how many different users, how many different songs per user, etc etc etc. Do a bit more basic exploration and tell us the summaries before asking. – Spacedman May 4 '16 at 16:11
• @Spacedman, I have updated the question and added detail information of the data. – GoingMyWay May 5 '16 at 11:12

Interesting problem. You certainly could use time series methods for this, but you should consider whether you think there is face-validity to song plays following a temporal pattern. From your plot above, I don't see any structure in the variation, but perhaps there is something that an algorithm can pick up. A good starting point would be R's auto.arima function for autoregressive integrated moving average (ARIMA). The ARIMA method is more fully described elsewhere (e.g., here), but an interesting extension to this approach might be using exogenous predictors in your model. For example, does the presence or absence of rain affect the likelihood of some songs being played? My guess would be yes (I love listening to post-rock bands on rainy days), but perhaps that's not true of everyone. This extension to ARIMA is referred to as ARIMAX in the literature. A really nice breakdown of how to handle covariates in your type of analysis can be found on Rob Hyndman's blog.