# How to automatically find patterns in (time series) datasets?

I would like to find methods, algorithms, procedures or even concrete solutions of my problem.

The Problem:

Imagine a dataset of the historic performance and general behavior of 1000 athletes. We have 5 years worth of daily entries for a variety of features. Each day the athletes have entered their consumed calories, weight, height, the temperature, their mood, their best 1 mile of that day in seconds, their hair-length, the food their pet ate that day.

I want a system, that is smart enough to be able to "tell me", that n-grams of carbohydrates, where n is 40% of your body weight, results on average in better 1-mile times.

This is supposed to happen automatically between entering the data and receiving the the described output.

I don't want the system be biased by my rational understanding of nutrition, but to empirically find out patterns (i don't know if this rather complex relationship is still called correlation) in data. What if the hair-length affects the performance? Or the temperature affects the weight?

I understand that this is a vague / complex question and there probably are a lot of steps of theory and research involved until i solve my problem, but at the moment i don't even know where to start researching. Colleagues have told me to research principal analysis and clustering. And while i understand their point and see the relevance, it feels like there are pieces missing to my puzzle.

Can anyone tip me in the right direction? Any help is much appreciated. Thank you very much, in advance! :)

Remark: I have previously posted this in SO, but was told that CV would be a better place for this question.

If one of the features was a string, for example a free-text description of the meals the athlete ate that day. I.e. "Had an apple, fish and lasagna".

How would I have the system tell me, for example, that 1 week after having seen the word "apple" in the meal-description, the bodyweight decreased. Autocorrelation obviously does not work with non-numerical values. Would i have to somehow encrypt the text to numbers?

• Is one mile performance your dependant variable y? Or do you simply want to find relationships between all the variables you listed? – Oliver Angelil Jan 26 '18 at 3:26
• @OliverAngelil Ideally I don't want to give the system any clue of a "fitness measurement parameter". The system is supposed to find relationships between everything. I will however, as a next step, mark some of the features as "weighted", in order for the rest of the business logic to use those. But the statistical model should not have any idea of importance between the variables. – Sam Bokai Jan 26 '18 at 10:30
• Why not simply start by plotting a correlation matrix using pearson correlation coefficients – Oliver Angelil Jan 26 '18 at 10:33
• That would not take into consideration the historical data / time axis. Another user suggested auto correlation which basically correlates across each unit of time. – Sam Bokai Jan 26 '18 at 10:40
• No I meant correlate each pair of variables with each other. So basically you have a time series for each variable (a 1D vector). So for each pair of time series calculate a correlation coefficient. That considers historical data. – Oliver Angelil Jan 26 '18 at 11:40