aradzie / keybr.com

The smartest way to learn touch typing and improve your typing speed.
https://www.keybr.com/
GNU Affero General Public License v3.0
1.99k stars 178 forks source link

Feature Request: Add accuracy ranking to Typing Test #286

Open MichaelMrt opened 1 month ago

MichaelMrt commented 1 month ago

It would be nice to have an accuracy comparison similar to the typing speed after a Typing Test: Faster than 63.3% of all other people. You are in the top 36.7%.

something like "Your accuracy is higher than 82.5% of all other people. You are in the top 17.5% for precision."

aradzie commented 1 month ago

That is a really nice idea!

aradzie commented 1 month ago

image I really like the idea (I have an unhealthy obsession with graphs), and I've got a working prototype. I hope to finish this feature in the following few days.

MichaelMrt commented 1 month ago

Nice thanks😄 I am already curious to see my ranking.

I also have a follow-up idea. Combine accuracy and speed to get a score.

The simplest way would probably be: accuracy[%] * speed[keys_pressed] or something like (accuracy[%] * speed[%]) / 2)

Adding weights would be a nice way to balance things out. For example punish accuracy harder.

ColdCactus commented 1 month ago

Possibly, the same logic could be integrated into the WPM/CPM flyout menu and graph that appears when hovering over the individual unlocked letters?

The database may likely not contain the data yet, but eventually, computing the score from the joint distribution of speed/accuracy for the statistics to compare against would be wonderful! Until then, giving the "better than x% and more accurate than y% from separate statistics (and as a score like you suggested) is more than plenty.

New users may also benefit from a brief note/guidance on focusing on speed or accuracy, depending on where they are in their learning path. After I finally unlocked all letters, I googled around on /r/typing to find the (helpful, for me) advice of focusing primarily on accuracy over speed and speed would follow. At the same time, avoiding perfection is important, or some people may get unreasonably hung up on individual mistakes.

aradzie commented 1 month ago

image

Enjoy your accuracy rankings!

aradzie commented 1 month ago

Possibly, the same logic could be integrated into the WPM/CPM flyout menu and graph that appears when hovering over the individual unlocked letters?

The database may likely not contain the data yet, but eventually, computing the score from the joint distribution of speed/accuracy for the statistics to compare against would be wonderful! Until then, giving the "better than x% and more accurate than y% from separate statistics (and as a score like you suggested) is more than plenty.

New users may also benefit from a brief note/guidance on focusing on speed or accuracy, depending on where they are in their learning path. After I finally unlocked all letters, I googled around on /r/typing to find the (helpful, for me) advice of focusing primarily on accuracy over speed and speed would follow. At the same time, avoiding perfection is important, or some people may get unreasonably hung up on individual mistakes.

@ColdCactus, Are you suggesting to overlay an accuracy graph over the speed graph in this popup window?

image

I think we can do this. As far as I remember (lol), we keep the number of errors for each individual letter in each result. So, this seems to be doable, and would be a cool feature to see how your accuracy changes along with the speed.

aradzie commented 1 month ago

Nice thanks😄 I am already curious to see my ranking.

I also have a follow-up idea. Combine accuracy and speed to get a score.

The simplest way would probably be: accuracy[%] * speed[keys_pressed] or something like (accuracy[%] * speed[%]) / 2)

Adding weights would be a nice way to balance things out. For example punish accuracy harder.

@MichaelMrt This is how we compute scores for the high scores table

score = ((speed * complexity) / (errors + 1)) * (length / 50)

where speed is in chars per minute, complexity is the number of different characters used (the alphabet size, we reward for the variety of letters), errors is the numbers of errors, and length is the length of a text fragment (it should be not shorter than 50 characters).

A similar (or identical) scoring system can be added to the typing test. I have quite a few new features planned, this could be one of them.

MichaelMrt commented 1 month ago

Nice thanks😄 I am already curious to see my ranking.

I also have a follow-up idea. Combine accuracy and speed to get a score.

The simplest way would probably be: accuracy[%] * speed[keys_pressed] or something like (accuracy[%] * speed[%]) / 2)

Adding weights would be a nice way to balance things out. For example punish accuracy harder.

@MichaelMrt This is how we compute scores for the high scores table


score = ((speed * complexity) / (errors + 1)) * (length / 50)

where speed is in chars per minute, complexity is the number of different characters used (the alphabet size, we reward for the variety of letters), errors is the numbers of errors, and length is the length of a text fragment (it should be not shorter than 50 characters).

A similar (or identical) scoring system can be added to the typing test. I have quite a few new features planned, this could be one of them.

Thank you for explaining the score system and your hard work.

ColdCactus commented 1 month ago

@ColdCactus, Are you suggesting to overlay an accuracy graph over the speed graph in this popup window?

Yes, pretty much! :) Like the graph that exists on the stats page (for overall accuracy), just letter-specific and in the flyout menu in the screenshot. :)

ColdCactus commented 1 month ago

Your all time average accuracy beats 76.07% of all other people

Huzzah! Accuracy rankings! Thank you!! 🤗 (Only now had time to practice again, after traveling for work this week..).

And I'm not sure whether I am happy for my result or slightly surprised (and scared) about everyone else. But, I suppose, people who are happy with their typing speed and accuracy are less likely to use the site and raise the bar to begin with so it makes sense from a self-selecting sampling perspective. 🤔