Timmeey86 / CustomTrainingStatisticsPlugin

GNU General Public License v3.0
2 stars 1 forks source link

Feature: session progression stats #57

Open maggaou opened 2 years ago

maggaou commented 2 years ago

Assume a session that contains 60 attempts. We calculate succession rate in every 20 shots. Let's say these numbers are 10%, 20%, 15%. Note that peak succession rate is in range [20, 35] with shot number being 40, 41, 42 or 43. Peak rate and its placement don't tell much about the overall progression 10, 20, 15. How we could describe that progression without listing every number? We could calculate differences 20-10 = 5, 15-20 = -5 and then make distribution about these numbers: +5: one, -5: one. Doing so we lose information about the direction of progress: was +5% first and then -5% or the other way.

We are not interested in too detailed progress (although plotting that could be useful). We could divide progress to 4 checkpoints: first 25% of attempts, second 25% of attempts, third 25% of attempts and fourth 25% of attempts. If we keep track of every shot like 1:goal, 2:no goal, 3:goal, 4:goal, etc then progression can be calculated afterwards very easily. We can also calculate progression based on 20 shot information but this is more inaccurate. Progress can also be calculated in realtime without keeping every shot in memory (but then plotting is not possible).

Timmeey86 commented 2 years ago

That's an interesting idea. The main focus of the plugin has been to display the progression over several sessions lately, rather than within the current session, with the exception for peak rate as a very rough indicator. I used the peak rate when I did 1000 attempts of a shot per day, and found out that it usually gets worse after 200-300 so I went down to 250 a day, spent less time and improved more since I didn't overtrain. I see your suggestion as a valid use case, but I will probably implement other features like notifications first.

maggaou commented 2 years ago

Some mathematical notes:

The problem is to divide the session to four sections which keep track of number goals. If these numbers are updated in every 4 shots, this means these sections cover equal number of shots. Example:

goal, no goal, no goal, goal:

section 1: 100%, section 2: 0%, section 3: 0%, section 4: 100%

Now this same session continues with additional data:

no goal, goal, goal, goal

Every section covers now two shots, meaning the number of goals is 0, 1 or 2

The problem is update every section number based on that new information (no goal, goal, goal, goal). If we look section 1, it turns out that this number is updated based on the first shot of section 2. Similarly section 2 is updated based on the first shot of the next section. We know that every section consists two shots and section 3 is no goal, goal and section 4 is goal, goal. If we analyze four more shots, then every section has three shots and again section 4 can be calculated based on the new data. Section 3 gets one shot from the new data. After this step only section 4 is dependent on new data and sections 1-3 are updated based on the shot of the next section.

In summary: every section keep track of two numbers, number of goals in that section and false/true information about the closest shot in the next section. Steps 1, 2 and 3 are kind of special steps but after that all sections are calculated using the same formula.