Nutrient tracking experiment

Amazing amount of work @forestglip and I love the safe form of self experimentation and ingenuity/creativity involved.

I can understand some disappointment at finding no significant associations but am sure and hope you took something positive from the exercise. No doubt a few things learnt in the process itself at least! And thank you vey much fir sharing it all with us.
 
I had not seen this thread before. I am totally blown away by all the work you did with this.
Thanks! I'm mostly out of my depth and got completely exhausted from it. It took me two months after the analysis to post this because I could barely think about it after all the energy expended trying to do this correctly in the weeks/months before the analysis.

I may have missed it (I've been jumping around reading chunks of your posts) but do you have a sense of the accuracy/variance of the nutritional information you were using?
Unfortunately, I'm not sure exactly how accurate the data is. The data source (NCCDB) seems to be from a reputable organization based in a university, and it is used in a large number of nutrient tracking studies. Though, as I noted in the half-written manuscript, sometimes I would compare the values in the app to the label on something like a can of beans, and the values for nutrients like calcium or iron would be way off. So I was just hoping it was accurate enough to detect an association. I'm not sure if there's a better data source than this which contains a huge number of foods.

Do you feel like the 'spikiness' in your upright time data reflects how variable your ME/CFS is one day to the next?
You know, I'm really not sure. It's hard to tell how much of this is just day to day noise and how much is fluctuations due to overdoing it. I feel like I need to lie down more when in a crash. But looking at the plot, I would expect that after the days with really high upright time, I would have a really low time, far below the average, the next day or two, but that doesn't seem to be the case.

And did sleep also show no correlation with upright time?
Good question. I hadn't tested it, but I just did, and sleep does not appear to significantly predict upright time up to 7 days later, or vice versa.
Screenshot from 2026-03-22 10-07-26.png1774188479909.png

When looking at the individual covariates in the two equations, it looks like the best predictor of sleep time is the amount of sleep time the night before, with a negative association (i.e. the more I sleep one day, the less I'll sleep the next). There's also a less significant positive association of upright time predicted by upright time the day before.

Screenshot from 2026-03-22 09-58-49.jpg

I've been dreaming of finding a way to compare my wellness to historical weather data, but I've been stuck on the "find an objective measure" step. I don't think there's much hope of me tracking upright time the way you did haha.
Depending on how many times you switch from upright to lying down, it might be too much work, but the beauty of the metric is that no technology is really needed. If my watch ever malfunctioned, my plan was to just keep a journal noting down the time I got up or vice versa. But it would probably only be feasible long term for a person with ME/CFS if there were only a few switches per day maximum, if that.

But otherwise, maybe step count with something like a Fitbit will do the job? It's definitely possible that upright time isn't actually superior to step count.

Apart from these, I haven't had other good ideas (there was a failed experiment trying to track anosmia as an objective metric since that's a symptom I have, though I didn't update that post. It might work with a better setup, but I my ability to detect a given smell seemed to wildly fluctuate too much. And I don't even know if my anosmia changes day to day.).
 
I'm sorry to see Iodine wasn't in your analysis as it is easy to miss, and I am very curious to how it is correlated with nutrients in other countries than Norway since we are one of the few special cases with little-to-none iodine fortification in food.
Ah, sorry, after seeing your post, I realized that the large image above with all the time series did not actually include all the raw nutrients in the first column. It was after the initial filtering for null data. I updated it with the full list of nutrients. Iodine is there, but I filtered it out because in roughly half of the individual food entries I saved, iodine data was missing, and I thought it would thus likely be too inaccurate.

But here is the correlation matrix with no nutrients removed (except those where every single value is 0):
correlation_heatmap_unfiltered.png

For iodine, I see correlations with with sodium, fluoride, and ash, which is probably because my main source of iodine is fortified table salt, which includes those others (ash is another with a lot of missing data. I didn't know what it was, but it's apparently a crude measure of total mineral content.) Also smaller correlations with B6 and potassium.

- I didn't see a comparison against nutrient needs
Yeah, it might be interesting. But I'm just totally out of steam for this project at this point.

- A weekly or even monthly intake might be better to look for associations as for some nutrients you don't need to eat them every day to have enough of them in your body to maintain function
Yes maybe, though the sample size of data points might be too small to detect associations with upright time if grouping into weekly or monthly intake.

- For the same reason above, removing outlier foods/high nutrient peaks might not be necessary as your body stores some nutrients for later use, and others are excreted etc. There's not a lot of them, but for example nuts, olive oil and omega-3 supplements would be foods that could influence cell membrane fluidity, which could influence blood flow. These foods are also high in fats which would be stored in your body for a while and not just influence the specific day they were eaten.
Good point about there potentially being interesting associations with these peaks, though the reason I removed them was more because that as I understand it, many large outliers could make the specific statistical test I was using unreliable.

- Food combinations matter, for example in the heat map zinc seems to be consumed together with fibre. If I saw this in a client's data I would ask if they consumed a lot of whole grains together with zinc rich foods, or if the zinc also comes from the whole grains. Zinc in whole grains have different bioavailability depending on how the grains have been prepared, so even if it looks to be an adequate intake on paper it could be deficient.
As a very rough look at the sources of zinc, I combined the total nutrient intake for each food. So this shows which foods were responsible for the most zinc, and also how much each food contributed in fiber:
Screenshot from 2026-03-22 10-59-43.png

Oysters provided the most zinc over the year, even though I only ate them about 15 times throughout the year. They have a huge amount of zinc and they were excluded from the main analysis for this reason, as the outliers were extremely high. Apart from that, it looks like potatoes were the second highest source of zinc at 718 mg over the year. I do eat a lot of potatoes, and it looks like potatoes are also my leading source of fiber, so that probably explains the correlation.

A general note as it didn't seem to affect your analysis much: I'm not sure how well it works to remove nutrients with > 0.2 missing values. Since Cronometer has amino acids and lacks iodine I'm assuming it's based on US data, but at the same time food composition datatables often contain "borrowed foods" from other food composition datatables. If the Cronometer database "borrows" from for example Norway, you would not get amino acid information (but you could get fatty acid information). If I used this cutoff in the Norwegian food composition datatable I would lose a lot of information as few foods have fatty acids for example, since that is a rather new addition and not all foods have been analyzed with it in mind.
Cronometer borrows a lot from the USDA database, and fills in from other sources like scientific papers, and imputing based on similar foods. It's a good point about thresholds, but I was most concerned with accurate data, so wanted as little missing data as possible.

I wonder if number of days in a row/in a week/month with "adequate" nutrient intake would create different results. Though on a personal note I eat pretty similarly from day to day and I still have symptoms. The joker would be that we don't know if something happens in our bodies that increase the need for/excretion of specific nutrients so that even if intake doesn't change the effect on the body might still not be the same. Maybe nutrient intake around times where there is a change in time spent upright (+- two weeks maybe?) could say something about that.
Interesting thoughts, maybe there could be all sorts of less straightforward associations like this.
 
What seemed to work was the use of derived variables to group specific factors for example adding a variable that would flag a day with increased cholesterol content.
Yes, maybe that could produce interesting results.

Also forgive me if you mentioned this or this is in your code but how did you ensure that you captured the joint probability distributions adequately ?
I'm not sure what you mean, but my analysis basically consisted of trying to make sure the time series were more or less stationary, and then just doing a basic granger causality test using the Python statsmodels VAR package. The actual code for the statistical test is in this file.

For example introducing certain nutrients at a certain time point can have an additive effect days later.
I used a pre-selected lag of 7 days in my model to try to capture effects up to a week later, as this seemed like a plausible time frame where nutrients might affect upright time.

The test is basically asking: does a linear regression model which includes 7 days of prior nutrients and 7 days of prior upright time (called the unrestricted model) predict upright time better than a model which only includes 7 days of prior upright time (restricted model). Both models also included 7 days of energy intake or energy intake + sleep. (I ran it twice, with and without sleep).

There may be effects further out which might be interesting to look for though.
 
Amazing amount of work @forestglip and I love the safe form of self experimentation and ingenuity/creativity involved.

I can understand some disappointment at finding no significant associations but am sure and hope you took something positive from the exercise. No doubt a few things learnt in the process itself at least! And thank you vey much fir sharing it all with us.
Thanks! Yes, I try to always keep a mindset of every experience being a learning experience, even if a task isn't "successful" (see my favorite quote).

I've learned a lot about the basics of time series analysis, and also now at least don't have to worry that I'm missing some very large associations with nutrient intake that could have potentially led to some helpful supplementation.

Edit: And I just want to add that there is a very good chance that I did something wrong in my analysis, as I didn't have prior experience, and only small amounts of "practice" analyses, so there may be associations that I missed. So while I'm pretty sure this should have detected large associations, I would caution against people assuming this means that there are definitely no nutrient associations with ME/CFS. And of course, even if there are no associations in my case, it might be different with other people.
 
Last edited:
Just to complicate matters, rate of change of nutrients can be important too. For me, a dose of iodine had dramatic effects in <24 hrs ... but only for the first couple of doses. I had two responses: temporary remission, and later it seemed to counter a increase in my baseline symptoms. For the latter, I needed one dose every 21 days; if I forgot, I'd start feeling significantly worse, and see that it was day 22. If I took iodine daily, it stopped providing the benefit.

I think the latter effect involved T2 production, so the thyroid response to fluctuations in blood iodine and thyroid hormones would have played a role.
 
I try to always keep a mindset of every experience being a learning experience, even if a task isn't "successful"
I appreciate the "failed" food intolerance experiments that allow me to eat foods I enjoy. I had to give up chocolate for a year or more, so I'm glad that a recent retesting showed that I'd lost that intolerance ... for now.
 
Back
Top Bottom