Changes

Jump to navigation Jump to search
no edit summary
Line 59: Line 59:     
== Conclusions ==
 
== Conclusions ==
Overall, this "scoring" approach seems to work in principle, even if I might have to tweak the cutoff/boundary values a bit. But what good is that score? To actually make use of it, I went ahead and updated the little script that populates my website footer, to display the overall values for the current day<ref>https://tzovar.as/</ref>. Which means I can now sync my Oura ring in the morning and then check my website to see what the predicted day looks like: Will I feel fine (score <3), ''maybe'' a bit under the weather (score between 3-4) and ''likely'' a bit under the weather (score >4). Time will tell if this is more useful than my own mental heuristics.
+
Overall, this "scoring" approach seems to work in principle, even if I might have to tweak the cutoff/boundary values a bit. But what good is that score? To actually make use of it, I went ahead and updated the little script that populates my website footer, to display the overall values for the current day<ref>https://tzovar.as/</ref>. Which means I can now sync my Oura ring in the morning and then check my website to see what the predicted day looks like: Will I feel fine (score <3), ''maybe'' a bit under the weather (score between 3-4) and ''likely'' a bit under the weather (score >4). Time will tell if this is more useful than my own mental heuristics. '''Update:''' As I've moved from an Oura Ring to an an Apple Watch as my main wearable device, I'll have to update this approach, as the data export doesn't work in the same way.
   −
== EDIT 2023-06-08: Using historical data to "validate" approach ==
+
==EDIT 2023-06-08: Using historical data to "validate" approach==
 
[[File:QF symptom distribution.png|thumb|200x200px|Total distribution of my observed daily symptom scores. For most of the ~1100 days I have no reported any symptoms (score of zero). ]]
 
[[File:QF symptom distribution.png|thumb|200x200px|Total distribution of my observed daily symptom scores. For most of the ~1100 days I have no reported any symptoms (score of zero). ]]
 
During one of the [[Personal Science Community|recent self-research chats]] I got inspired to use some of my existing data to explore whether it can be used to validate my heuristic to some level. Because in addition to all of my wearable data, I do happen to have around 3 years (or 1100 days) worth of self-reported symptom data through being a daily user of the [[Quantified Flu]] (QF) project.  
 
During one of the [[Personal Science Community|recent self-research chats]] I got inspired to use some of my existing data to explore whether it can be used to validate my heuristic to some level. Because in addition to all of my wearable data, I do happen to have around 3 years (or 1100 days) worth of self-reported symptom data through being a daily user of the [[Quantified Flu]] (QF) project.  
   −
=== Looking at my daily symptom reports. ===
+
=== Looking at my daily symptom reports.===
 
Each day at around 6pm local time I report whether I experience any symptoms of infection (e.g. cough, headache, fever, nausea, diarrhea, …). Each of these symptoms is scored as a Likert-item between 0-4. As for this validation we don't care too much for the different kinds of symptoms but rather a more abstract high-level view, we can just sum up all the symptom scores into one total score. As there is 12 scored symptoms at the moment, this gives us a daily symptom score between 0 – 48.  
 
Each day at around 6pm local time I report whether I experience any symptoms of infection (e.g. cough, headache, fever, nausea, diarrhea, …). Each of these symptoms is scored as a Likert-item between 0-4. As for this validation we don't care too much for the different kinds of symptoms but rather a more abstract high-level view, we can just sum up all the symptom scores into one total score. As there is 12 scored symptoms at the moment, this gives us a daily symptom score between 0 – 48.  
    
As seen in the score distribution on the right, those combined scores are be either zero or at least hover close to zero for the most part. And even for the extremes my values during this period never got larger than a total symptom score of 13. Overall, this distribution looks quite similar to the scores I created for my heuristic (see above).  
 
As seen in the score distribution on the right, those combined scores are be either zero or at least hover close to zero for the most part. And even for the extremes my values during this period never got larger than a total symptom score of 13. Overall, this distribution looks quite similar to the scores I created for my heuristic (see above).  
   −
=== Combining the symptom scores from QF with my heuristic ===
+
===Combining the symptom scores from QF with my heuristic===
 
[[File:Boxplot prediction syptoms.png|thumb|A boxplot comparing the physiological deviation scores used for the heuristic to my symptom scores as recorded in Quantified Flu. ]]
 
[[File:Boxplot prediction syptoms.png|thumb|A boxplot comparing the physiological deviation scores used for the heuristic to my symptom scores as recorded in Quantified Flu. ]]
 
With those daily symptom scores in hand, I could now merge the data with the "feeling fine"-scores from my heuristic by just matching them on the date. This results in ~1100 combined data points for which I have both the daily symptom score as well as the heuristic prediction.  
 
With those daily symptom scores in hand, I could now merge the data with the "feeling fine"-scores from my heuristic by just matching them on the date. This results in ~1100 combined data points for which I have both the daily symptom score as well as the heuristic prediction.  
   −
==== Visual validation ====
+
====Visual validation====
 
This now allows making a simple boxplot for some visual validation of the approach (see figure on the right). On the X-axis we can see the "physiological deviation" score that is calculated according to the approach outlined above. To recap, higher scores indicate a larger deviation of my physiological parameters away from my personal "norm", which I assume to indicate somehow not feeling 100% okay. On the Y-axis we see the "symptom score" – the sum of my reported symptom intensities.  
 
This now allows making a simple boxplot for some visual validation of the approach (see figure on the right). On the X-axis we can see the "physiological deviation" score that is calculated according to the approach outlined above. To recap, higher scores indicate a larger deviation of my physiological parameters away from my personal "norm", which I assume to indicate somehow not feeling 100% okay. On the Y-axis we see the "symptom score" – the sum of my reported symptom intensities.  
   Line 83: Line 83:  
Additionally, I experienced what's known as a ''smoker's or quitter's flu''<ref>https://www.verywellmind.com/quitters-flu-2824817</ref> when I stopped smoking in early 2023. During this the body can exhibit a lot of symptoms that look like a cold or flu, but that are just the body recovering. Curiously, most of my physiological data during that time looked quite unaffected.  
 
Additionally, I experienced what's known as a ''smoker's or quitter's flu''<ref>https://www.verywellmind.com/quitters-flu-2824817</ref> when I stopped smoking in early 2023. During this the body can exhibit a lot of symptoms that look like a cold or flu, but that are just the body recovering. Curiously, most of my physiological data during that time looked quite unaffected.  
   −
==== Statistical validation: Permutation test ====
+
====Statistical validation: Permutation test====
 
[[File:Heuristic-validation-permutation-test.png|thumb|Results of the permutation test. Randomly generated differences in blue, pink vertical bar gives observed difference.]]
 
[[File:Heuristic-validation-permutation-test.png|thumb|Results of the permutation test. Randomly generated differences in blue, pink vertical bar gives observed difference.]]
 
Based on the visual examination through the boxplot it looks like this heuristic might indeed be quite promising, with larger deviations on average having higher symptom counts/intensities than less-deviating days. And given that both the physiological deviation scores (by definition) and the symptom scores skew towards lower numbers it seems unlikely that this would be purely by chance. But just to feel a bit more confident in these results I decided to perform a permutation test to explore how extreme the actually observed difference between those values is<ref>https://mac-theobio.github.io/QMEE/lectures/permutation_examples.notes.html</ref>.  
 
Based on the visual examination through the boxplot it looks like this heuristic might indeed be quite promising, with larger deviations on average having higher symptom counts/intensities than less-deviating days. And given that both the physiological deviation scores (by definition) and the symptom scores skew towards lower numbers it seems unlikely that this would be purely by chance. But just to feel a bit more confident in these results I decided to perform a permutation test to explore how extreme the actually observed difference between those values is<ref>https://mac-theobio.github.io/QMEE/lectures/permutation_examples.notes.html</ref>.  
Line 91: Line 91:  
If we now repeat the random shuffle some hundreds or thousands of times, we can create an expectation of how often one would randomly find that the values between the two groups are at least as extreme as the actually observed difference. In the figure on the right we can see the results: The real average difference in symptom score between the sick and not-sick groups is above 1.5 (pink vertical line), and across the 10,000 random shuffles we see that the majority of score differences centers around zero (blue bars). The corresponding [[Is it chance? Use a T-Test to identify how likely an intervention worked|p-value]] calculated for this comes out as being tiny, with ''p-value: < 2.2e-16''.   
 
If we now repeat the random shuffle some hundreds or thousands of times, we can create an expectation of how often one would randomly find that the values between the two groups are at least as extreme as the actually observed difference. In the figure on the right we can see the results: The real average difference in symptom score between the sick and not-sick groups is above 1.5 (pink vertical line), and across the 10,000 random shuffles we see that the majority of score differences centers around zero (blue bars). The corresponding [[Is it chance? Use a T-Test to identify how likely an intervention worked|p-value]] calculated for this comes out as being tiny, with ''p-value: < 2.2e-16''.   
   −
=== A validated heuristic? ===
+
===A validated heuristic?===
 
Overall, I feel like this makes me somewhat more confident in the predictions given by the heuristic, in particular for the more extreme deviations (e.g. only very rarely are there cases where the score is ≥5 and I don't report any symptoms – which might also just have been me not recording properly). It's also interesting how my previously chosen cutoff of values of 4 or larger seems to be right on the borderline, with more than half of the days where a 4 is reported not having any symptoms associated. It could be interesting to explore if that assessment changes on the following day, i.e. whether the symptom report just lags by day!
 
Overall, I feel like this makes me somewhat more confident in the predictions given by the heuristic, in particular for the more extreme deviations (e.g. only very rarely are there cases where the score is ≥5 and I don't report any symptoms – which might also just have been me not recording properly). It's also interesting how my previously chosen cutoff of values of 4 or larger seems to be right on the borderline, with more than half of the days where a 4 is reported not having any symptoms associated. It could be interesting to explore if that assessment changes on the following day, i.e. whether the symptom report just lags by day!
    
Equally interesting to me are the outliers: Days where the physiological data is perfectly normal, but I still experience a lot of symptoms. It might be worth looking deeper into those days in particular!
 
Equally interesting to me are the outliers: Days where the physiological data is perfectly normal, but I still experience a lot of symptoms. It might be worth looking deeper into those days in particular!
   −
== EDIT 2023-06-15: A drifting baseline ==
+
==EDIT 2023-06-15: A drifting baseline==
 
[[File:Respiratory-rate-over-time.png|thumb|Respiratory rate over time. Grey lines: Data from 2018 – 2022. Red line: data from 2023. Blue line: loess fit for data from 2018 – 2022]]
 
[[File:Respiratory-rate-over-time.png|thumb|Respiratory rate over time. Grey lines: Data from 2018 – 2022. Red line: data from 2023. Blue line: loess fit for data from 2018 – 2022]]
 
One thing I noticed during the data exports and preparations for the validation work (see above), was an impression that my respiratory rate was showing more outliers now than it used to – or than one would expect given the distribution of the data.  
 
One thing I noticed during the data exports and preparations for the validation work (see above), was an impression that my respiratory rate was showing more outliers now than it used to – or than one would expect given the distribution of the data.  
Line 104: Line 104:  
But more relevant for that shift in outliers is that this trend does not hold for 2023, instead my respiratory rate this year is actually going down in summer! So, what's going on? I (once again) stopped smoking – since mid-February I neither smoke nor vape. And that lowering in my respiratory rate seems to coincide quite well with that time frame. It'll be worth to keep an eye on that respiratory rate and see if that lowering (by about 2 breaths / minute compared to previous years) will remain a constant effect. If so, it might be necessary to through out earlier years when calculating the baseline deviations for this heuristic!
 
But more relevant for that shift in outliers is that this trend does not hold for 2023, instead my respiratory rate this year is actually going down in summer! So, what's going on? I (once again) stopped smoking – since mid-February I neither smoke nor vape. And that lowering in my respiratory rate seems to coincide quite well with that time frame. It'll be worth to keep an eye on that respiratory rate and see if that lowering (by about 2 breaths / minute compared to previous years) will remain a constant effect. If so, it might be necessary to through out earlier years when calculating the baseline deviations for this heuristic!
   −
== References ==  
+
== References==  
    
<references />
 
<references />
      
[[Category:Projects]]
 
[[Category:Projects]]

Navigation menu