Explanation: Imagine two values, x and y, and you divide them by each other (x/y) there are two options if values are not logged:
- x >= y will give you results from 1 to infinity.
- x < y will give you a result between 0 and 1
Obviously compressing values between 0 and 1 is not optimal. This is evident when you plot values from option 1 and 2, which will result in a highly assymetrical graph (because the space from 1 to Inf is visually larger than between 0 and 1). Therefore, one uses log2(x/y) which will transform fold changes from option 2 into a range of equal size as option 1.
1000 / 10 = 100
10/1000 = 0.01
=> pretty wide range
but:
log2(1000/10) = 6.64
log2(10/1000 = -6.64
=> symmetrical around 0
You should note that no negative values can be calculated from non-logged count data., as any x < y will be somewhere between 0 and 1.