Estimated Total Knowledge graph over time

This is essentially a duplicate of [Feature request] Estimated Total Knowledge over time by @Expertium but that post is a mess because of dozens of comments and is also closed.

Anki is a learning tool and a user would expect its Stats to show how their total knowledge changed over time. So, this graph seems to be a must-have feature. Such a graph clearly demonstrates the main selling point of Anki, i.e., its ability to continuously increase the user’s total knowledge.

@A_Blokee implemented this in his Search Stats Extended add-on but this must be implemented natively too for the reason I mentioned above.

There are two main problems in implementing this. I hope that we can solve both.

  • The calculation of the ETK over time is slow. For this, we can add a button so that the graph is plotted only when the user wants to see it.
  • If “all history” is not selected, the graph would have to use partial review history, which would make it inaccurate.
9 Likes

Agreed. I originally wanted it to be native.

1 Like

If you have solutions for the mentioned problems I would be more than happy to implement it natively.

The performance problem can be partially fixed simply by having it implemented in rust. It would run about as fast as the simulator.

4 Likes

I have already proposed a solution for the performance issue.

The same solution can work for the review history issue too. If the user clicks the button to load the graph, the Stats page can load the complete review data for plotting the graph.

3 Likes

As vaibhav said, we can make it so that the user has to click a button, in other words, the chart doesn’t render (and the underlying data isn’t calculated) unless the user explicitly requested it.
And we can make it so that it’s always “all history”, with no “last week” or “last month” options.

3 Likes

On Discord you said that you will work on it. Make sure to link the PR here!

@dae I’d like your thoughts before I would start working on this. Though it is a low priority for me as it:

  • Already exists in addon form.
  • Would be difficult.
  • I’m not positive on exactly what an implementation would look like
3 Likes

I’m not positive on exactly what an implementation would look like

Why not just make it look like in SuperMemo? I mean, not literally, but “Sum of probabilities of recall on the Y axis and date on the X axis”. Unless there are some technical difficulties with that.
And with zooming in, of course.

By “what the implementation would look like” I meant more the finer details of where it would go and how it would operate. A SuperMemo-like graph like you describe would already be the plan.

Ah, my bad.

1 Like

@dae I don’t want this topic to die, and I don’t want Total Knowledge Over Time to die either :sad_but_relieved_face:

1 Like

Nice graph.

2 Likes

Just how reliable is this graph for someone who started with SM-2 and, after switching to FSRS, optimized the parameters regularly?

To put it differently, how much of this graph is historical facts vs depends on current parameters?

It’s perfectly fine if you used SM-2 before, no worries.
As for parameters, since parameters determine the exact probability of recall, they will also affect the graph. I can’t say how much, though, and I’m too lazy to switch to default parameters just to test.
EDIT: alright, I’ll do it for one deck
Well, either something is bugged or there is no (noticeable) difference

EDIT 2: ok, there is a difference, but I had to use a small deck to see it

It seems that optimized vs default parameters changes the total value on the graph by less than 1%

2 Likes

I’d be interested in seeing something like this as well!

No objection in theory, but if it’s noticeably slower, putting it behind a button does sound justified - hopefully it could be done in a way that doesn’t look out of place.

3 Likes

Yeah, that’s what vaibhav and me said: Estimated Total Knowledge graph over time - #5 by Expertium

It will require the user to press a button to run the calculations. And it will be “all history”, no “last week” or “last month” options. Instead, it will be zoomable.

Some more things that we will have to consider:

  1. How will it handle deleted and suspended cards?
  2. Where to place it? Directly under Card Retrievability makes the most sense IMO

Maybe use radio buttons (like some graphs in stats do)? Something like this:
O Include suspended cards.
O Include deleted cards.

actually we should use checkboxes, that’s what all the toggle-able buttons use

1 Like

@A_Blokee, no pressure but I wanted to point out that this seems to be one of the most requested features on this forum, considering the number of hearts on the OP. So, a lot of people would be happy when this feature lands in Anki.

1 Like