Let's say I have an user that uses the application one time every monday exactly... That means once a week. If I do the dfft I can see a peak in this frequency

How can I analyse the general case for many users and with apparently random frequencies of use?

Is the fft the best choice?

I can use mat lab or excel to try something

This is the fft of an user of the app by day

enter image description here

I am assuming by it that I can say he uses the app mostly each 2.3 days (1/0.4219)... It is a coeherent conclusion? How can I get the information of all the other peaks?

EDIT This is the signal I am making the dft enter image description here

  • $\begingroup$ What's the signal that you feed into DFT to analyse its frequency content? $\endgroup$
    – Fat32
    Jul 16 '17 at 17:40
  • $\begingroup$ @Fat32 I added the origin sinal $\endgroup$ Jul 16 '17 at 18:37
  • $\begingroup$ ok. So everyday the signal value equals the number of times the program is used; zero if not used. $\endgroup$
    – Fat32
    Jul 16 '17 at 18:37
  • $\begingroup$ yes exactly @Fat32 $\endgroup$ Jul 16 '17 at 19:14

I think a Fourier based frequency spectrum analysis may not be the best (most suitable) approach in providing you the necessary and useful information about that random service usage data.

Instead I would suggest you to use statistical data analysis methods. These methods are the primary tools that are used to analyse user behaviour by collecting usage data and computing the resulting statistics upon them.

Creating the related random variables and estimating their associated probability density functions will allow you to formulate the average quantities such as the expected number of days (or hours) between two consequetive logins, expected day of week (or hour of day) of maximum usage, minimum usage etc, and therefore enable you to make optimizations of resource utilizations based upon them.

  • $\begingroup$ I was checking the use of autocorrelation, would it be a nice approoach? Or other method would it be better? $\endgroup$ Jul 16 '17 at 19:16
  • $\begingroup$ Correlation gives you the similarity between multiple users or options of a given user. But what you want to achieve is daily usage characterizaiton fo such you shall better start with histogram and pdf estimation. $\endgroup$
    – Fat32
    Jul 16 '17 at 19:21
  • $\begingroup$ I am trying to identify with which frequency each user uses the app. Once a week, once every 10 days, etc... like the measuremt of the habit $\endgroup$ Jul 16 '17 at 19:26
  • $\begingroup$ so your last statement says that you wopuld compute the expected number of days between two consequetive usage. If it's 6 days (or 7 including the day of usage) then it will be once a week, it will be 3 days, it will be once per 3 days (or 7/3 times per week). So just get the statistics. $\endgroup$
    – Fat32
    Jul 16 '17 at 19:38
  • $\begingroup$ I am assuming that each user has a principal frequency of usage (e.g: once a week) and other frequencies that acts like a noise in the usage. I want to transform all the data of use in two numbers: the "mean frequency" and the strength of this mean frequency (this last would diferenciate between somebody that use the app every sunday 2 times and another that uses 1 time every sunday == same frequency but different amplitude) $\endgroup$ Jul 16 '17 at 20:30

If I had to solve your problem, I would do as FAT32 suggested an go with a statistical approach before using the FFT. Here is what I would propose that might give you more meaningful insights on the usage of your app.

  1. Each time a user open the app, measure the time difference between the last usage.
  2. Save that time delta somewhere you can use for analysis (like a database).
  3. Find your maximum/minimum value and creates equally separated range of value. For example (0 to 6 hours, 6 to 12 hours, etc.)
  4. Add 1 to each bin for each measurement that fits into it. Then generate an histogram from that.

You will get a distribution of the usage that will be more meaningful and you may discover some tendencies. Here's how could the result looks like.

enter image description here

Of course you wil have to tune your measurement technique by adjusting the interval to get good resolution. Minimum and maximum to remove erratic data, etc

You can even do the same exercise to measure the usage time of your app (from opening to closure).

Well, you get the idea Hope that helps.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.