1
$\begingroup$

I have a dataset:

Days compound-1 compound-1rep compound-2 compound-2rep
0 133.77 136.11 3.86 3.91
50 44.26 45.92 1.33 1.21
100 39.71 41.75 0.29 0.34
150 46.23 48.31 1.62 1.71
200 22.11 24.02 1.19 1.38

I want to interpret these results in percent change or some other easily understandable form. I calculated the percent change as

difference = New Number - Original Number

% change = difference ÷ Original Number × 100.

The problem I face here is the percent change overestimates my data, for e.g the percent change of compound-1 from 0-100 day is 70% decrease and compound-2 is 91% decrease

but,

from 100-150 days the percent change is 16% increase for compound-1 and ~400% increase for compound -2.

In reality, the initial data changa in compound-2 at 150 days is less than half the value at 0 days.

I know that the percent change with the current data is not the correct way to represent these results.

Is there any alternate way, maybe by normalizing the data? if yes, how to?

$\endgroup$

1 Answer 1

0
$\begingroup$

Fold-change (or percentage change) is a perfectly reasonable way to want to interpret data, but indeed, just normalizing as you have done creates the issue you've noticed. It's actually worse than just visual interpretation - if you have a model that assumes additive errors, normalizing as you've done causes the errors to become multiplicative. This makes interpretation and statistics much more difficult - after all, a drug that halves your response and a drug that doubles your response have equal effects (in opposite directions), but 200% and 50% don't average to 100%!

Fortunately, there's a pretty simple solution: take the log of your data! Here, I've taken the log base 10.

Days compound-1 compound-1rep compound-2 compound-2rep
0 2.126359 2.13389 0.586587 0.592177
50 1.646011 1.662002 0.123852 0.082785
100 1.5989 1.620656 -0.5376 -0.46852
150 1.664924 1.684037 0.209515 0.232996
200 1.344589 1.380573 0.075547 0.139879

Then, you can normalize the Day 0 value to 0, if you want (which is equivalent to dividing all your values by the first value in the time course). Since you have multiple replicates for each compound, I normalized to the average Day 0 value for each compound.

Days compound-1 compound-1rep compound-2 compound-2rep
0 -0.00377 0.003766 -0.00279 0.002795
50 -0.48411 -0.46812 -0.46553 -0.5066
100 -0.53122 -0.50947 -1.12698 -1.0579
150 -0.4652 -0.44609 -0.37987 -0.35639
200 -0.78554 -0.74955 -0.51384 -0.4495

These values can be directly interpreted as fold-changes in whatever this metric is compared to day 0 for each time course. To compute that, you'd just compute 10 to the power of any element in the table and you'd have the fold-change (which you can convert to a percentage if you like).

This approach expresses your data as a fold-change while having your data still make sense - a 10-fold increase would be +1, while a 10-fold increase would be -1, rather than 10x and 0.1x. In fact, this is why log-fold-change is a common metric in chemical and biological studies. This also helps make more visual sense of your data - you can see that the original data is hard to interpret:

enter image description here

On the other hand, the log-fold-change graph makes it more clear that while both compounds have similar effects.

enter image description here

$\endgroup$
5
  • $\begingroup$ Thanks for the quick and elaborative response. I did not get after the log transformation of the initial data. Do you mean "dividing all your values by the first value in the time course.." is to divide the log-transformed data points at each day by its day 0 value (averaged)? In that case, dividing the day 0 value by itself won't be 1? (sorry i am not good with numbers) $\endgroup$
    – Shail
    Commented Jul 13, 2021 at 6:12
  • $\begingroup$ Normally, when you'd want to talk about fold change, you'd want to divide all values by the initial value, right? In log space, this is the same as subtracting log(initial value) from every other value. So instead of doing a division operation, which causes the issues you discovered above, we take the log and then do a subtraction, which is fine. The identity of interest is here: en.wikipedia.org/wiki/List_of_logarithmic_identities under log(x/y) = log(x) - log(y). $\endgroup$
    – rishi-k
    Commented Jul 13, 2021 at 6:16
  • $\begingroup$ @risi-k Thanks. got it. Yes, indeed the visual representation now looks more clear. How do I convert the log fold transformed data into percentage? $\endgroup$
    – Shail
    Commented Jul 13, 2021 at 6:59
  • $\begingroup$ Just take 10^(log value) to turn it into a fractional change. Multiply the fractional change by 100 to make it a percentage change. Note that if you're doing any statistics or modeling, you should do it on the log data. $\endgroup$
    – rishi-k
    Commented Jul 13, 2021 at 7:02
  • $\begingroup$ Thanks. got it. $\endgroup$
    – Shail
    Commented Jul 13, 2021 at 7:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.