-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add "Performance Index" for GSD #122
Comments
Should be possible, timeline TBD. Let me take a look.
|
@felixkluge Any updates on this? :) |
No, not yet, do you have a timeline in mind? |
As soon as possible, latest end of June ;) |
Micó-Amigo (https://pubmed.ncbi.nlm.nih.gov/37316858/) used:
Kluge et al (https://doi.org/10.2196/50035) used (see also Multimedia Appendix 1):
|
The latter work added Relative absolute # gait sequence error for the following reason (based on a thought experiment) Assumptions
-> Fragmentation of gait not captured in previously used metrics (which look fine), but in the new one:
|
@AKuederle : Please check 9fa1b27 , I added a new example for performance index calculation. Basically, we define a dictionary which includes information about a) which underlying score, b) which normalization (cost/benefit/none), c) which aggregation (mean/std/other), and the respective weight to use. The performance index is the sum of all above defined metrics. |
Great! I am a little concerned by the normalization. Shouldn't we scale the theoretical limits instead of the observed limits? Otherwise the performance index is not at all comparable between groups of participants. E.g. let's say in the HA population the worst accuracy was 0.8 and the best accuracy was 0.9, then 0.8 will be considered a 0 (aka worst possible score). |
For the standard metrics (precision, recall, ...) which are defined in the interval [0, 1], normalization is set to None -> no normalization is performed but original values are used:
It might not be the most elegant way, as recall is actually a "benefit" criterion. Maybe an additional parameter should be added to separate "normalization" (True/False) and "criterion_type" ("cost"/"benefit"). E.g.,
Regarding the other metrics (e.g., based on duration), there are no theoretical limits, so those will be based on the data itself. @AKuederle : Please check 68858d1 |
I think for the other values, we also need to "hard code" the value ranges to make them comparable. So we need to define what we consider best and worst, also for things like duration error |
Yes, it is kind of problematic to have this dynamic (data dependent) normalization range, but this is how it was originally implemented. The current definition of the performance index has this limitation:
The challenge is, that the error of the duration might be unlimited, so it will be hard to hard code theoretical (especially upper) limits. We could add a capping or transformation (e.g. sigmoid or 1 - exp(-x)) function. This would be a change compared to the current Mobilise-D validation, but better in the long run, I suppose. What do you think? |
Do you think sigmoid is required? Or would "capping" be sufficient. Let's say for duration error, we define no error 0s -> 1, worst case 60s -> 0. If the error is larger 60s it is just a zero? But of course that also heavily depends on the length of the recording etc... difficult... |
For duration error within [0,inf), f(x) = 1 - exp(-x) could make sense (as sigmoid would rather consider (-inf, inf)). |
In addition, if I understand correctly, we would also not be in line with the cost/benefit definition of Bonci et al. any more |
That seems reasonable!
Is the higher level definition not as simple as: Benefit -> best value = 0, Cost -> best_value = 0 So it is either the value or 1-value after normalization. I think it makes sense to separate the normalization and the cost-benefit transformation mentally :) |
Makes sense. I decoupled and added the different normalization methods in 1a5d055 |
Hi @AKuederle , I created a respective pull request. The discussed changes should be included now. Please check. |
In https://preprints.jmir.org/preprint/50035/accepted and https://pubmed.ncbi.nlm.nih.gov/37316858/ we use variations of the weighted performance index introduced in https://www.mdpi.com/1424-8220/20/22/6509
It would be nice to also implement that here. @felixkluge you already implemented a custom version for GSD. Would it be feasible to port this?
The text was updated successfully, but these errors were encountered: