spacediver and ad8e public collaboration [reaction research]
Posted: 12 Jul 2019, 00:13
I decided that for useful stuff that everyone would learn from, I'll post it publically rather than in our PMs.
Here's a specific description of the model method. The model says, "as long as the mouse continues to move downward, I predict the next movement point will be within a 99.99% confidence interval that is determined by the typical characteristics of a downward sweep." Then you try to bound this confidence interval as tightly as possible, using what you know of downward sweeps. Once you receive a leftward movement point that isn't in this confidence interval, you return the flag "behavior is different from expected! the leftward jerk has started!"
Model bounds are generally holistic in some way, so when considering a new timepoint, you can't necessarily assume that all the previous timepoints were part of a downward sweep, even though you haven't thrown the "jerk started" flag yet. Some of those timepoints may be under suspicion already, and the last timepoint is just the last straw that triggers the flag. You can see where things can get complicated and sophisticated real fast.
These models also usually let you tune the 99.99% number to other values like 75%, but I don't particularly recommend that for a beginner, just make something that works well on your own hand.
Here's a picture.
This is an illustration of one possible example input. 1 2 3 4 5 are the previous timepoints. 4 and 5 are already starting to look suspiciously like a left jerk, but the code isn't sure yet. The green region is the region where the code thinks, "if the next movement point is here, it's plausible that the person is still moving downward, and I'll return the 'not yet' value". The orange region is the region where the code thinks, "if the next movement point is here, I no longer have any expectation that the person is still moving downward, he has clearly started a left jerk, so I'll return the 'it's started' value". The green and orange regions together should cover all, or nearly all inputs. There might be some leftover space outside the green and orange regions which the mouse rarely achieves. When it's sufficiently unlikely that the mouse ends up in that leftover space, it doesn't matter what is returned. (For example, if the next movement point teleports back to 1 again in an extremely unlikely scenario, then the most likely explanation is that the mouse is bugged, and the code can return whatever it wants.)
Here's a picture of another possible situation.
In this example, 4 and 5 are not suspicious. Since there isn't suspicion yet, the acceptable region is larger.
The regions you eventually settle on may look very different from my MS Paint pictures; they're only illustrative of a model technique, not what I think the correct model will be.
Here's a specific description of the model method. The model says, "as long as the mouse continues to move downward, I predict the next movement point will be within a 99.99% confidence interval that is determined by the typical characteristics of a downward sweep." Then you try to bound this confidence interval as tightly as possible, using what you know of downward sweeps. Once you receive a leftward movement point that isn't in this confidence interval, you return the flag "behavior is different from expected! the leftward jerk has started!"
Model bounds are generally holistic in some way, so when considering a new timepoint, you can't necessarily assume that all the previous timepoints were part of a downward sweep, even though you haven't thrown the "jerk started" flag yet. Some of those timepoints may be under suspicion already, and the last timepoint is just the last straw that triggers the flag. You can see where things can get complicated and sophisticated real fast.
These models also usually let you tune the 99.99% number to other values like 75%, but I don't particularly recommend that for a beginner, just make something that works well on your own hand.
Here's a picture.
This is an illustration of one possible example input. 1 2 3 4 5 are the previous timepoints. 4 and 5 are already starting to look suspiciously like a left jerk, but the code isn't sure yet. The green region is the region where the code thinks, "if the next movement point is here, it's plausible that the person is still moving downward, and I'll return the 'not yet' value". The orange region is the region where the code thinks, "if the next movement point is here, I no longer have any expectation that the person is still moving downward, he has clearly started a left jerk, so I'll return the 'it's started' value". The green and orange regions together should cover all, or nearly all inputs. There might be some leftover space outside the green and orange regions which the mouse rarely achieves. When it's sufficiently unlikely that the mouse ends up in that leftover space, it doesn't matter what is returned. (For example, if the next movement point teleports back to 1 again in an extremely unlikely scenario, then the most likely explanation is that the mouse is bugged, and the code can return whatever it wants.)
Here's a picture of another possible situation.
In this example, 4 and 5 are not suspicious. Since there isn't suspicion yet, the acceptable region is larger.
The regions you eventually settle on may look very different from my MS Paint pictures; they're only illustrative of a model technique, not what I think the correct model will be.