matomo-org / matomo

Empowering People Ethically with the leading open source alternative to Google Analytics that gives you full control over your data. Matomo lets you easily collect data from websites & apps and visualise this data and extract insights. Privacy is built-in. Liberating Web Analytics. Star us on Github? +1. And we love Pull Requests!
https://matomo.org/
GNU General Public License v3.0
19.81k stars 2.64k forks source link

Improve evolution column in all websites tab #13124

Open fdellwing opened 6 years ago

fdellwing commented 6 years ago

So, there is something going on my nerves for quite some time now:

If you had 0 visits yesterday and any visit today, it shows 100%. If you had 1 visit yesterday and more than 2 today it shows a value more than 100%.

This is mathematical correct, but in imho a big problem.

Take the following scenario: Changes are like 0 -> 500 and 1 -> 20. Than it shows 100% for the first and 1900% for the second evolution. Implying that the second one increased more than the first one, which is absolutely wrong.

I do not really have a solution right now, but maybe someone else? Or do you not see a problem with that?

matomo1

tsteur commented 6 years ago

Yeah I know exactly what you mean. Not sure how to fix though, maybe in the UI could show something like "New" but I presume the API would maybe still expect some number or so.

fdellwing commented 6 years ago

I thought about using ∞ (∞) instead of 100%, but that is also not a valid number, so duh.

fdellwing commented 5 years ago

I thought about this some more.

Instead of changing the output, it might be better to change the input?

https://github.com/matomo-org/matomo/blob/c6eb52339f3fc496ac43b55c4a0de8d161edbff4/plugins/CoreHome/Columns/Metrics/EvolutionMetric.php#L109-L111

Here it is hard coded to return 100% if the old value (divisor) is 0. Well we could instead provide an arbitrary divisor for the calculation.

I think there are 2 possible arbitrary numbers to choose from:

return Piwik::getQuotientSafe($dividend, 1, $this->quotientPrecision + 2);

Will return the same as if the old value was 1.

return Piwik::getQuotientSafe($dividend, 1.0E-10, $this->quotientPrecision + 2);

Will return a huge number and is easily distinguishable from the old value 1.

What are your thoughts with this? @tsteur

tsteur commented 5 years ago

Not really sure what is best here. Maybe @mattab has some thoughts.

dev-101 commented 3 years ago

This might help: https://stackoverflow.com/questions/19908431/how-to-calculate-percentage-when-old-value-is-zero

dev-101 commented 3 years ago

Anyway, once I spoke with someone who was in financial business / calculations and told me that if initial value is 0, than whatever next positive value comes up (e.g. next month) it's assumed to be 100%. Because, strictly mathematically speaking, it would be +inf (division by 0). I think it is just an assumption / by convention, depending on department, field etc. By that logic, if you dropped from a positive value to 0, it should be -100% by that very same convention. And, if you think about it, then it makes sense.