Version 1.0 and 1.2 were the first 2 releases of DESeq2, in April and October 2013. We received a lot of feedback from users and so v1.4 incorporated those changes. Since v1.4, the methods for parameter estimation have remained much more stable, which leads to more stable list of DEG. Since v1.4 we focus on usability and extra features, but not on changing methods for parameter estimation. All important changes are documented in the NEWS file accompanying the package (although this might not be useful as it's hard to tell which changes are the ones that contributed to a difference).

~~~

**General advice on why numbers of DEG change with small changes in parameters:**

For more detail on how the number of DEG could have changed, it's important to remember that p-values are *tail probabilities*. This makes them especially sensitive to change in how you estimate parameters.

For an example of how tail probabilities are sensitive, suppose we observe 10,000 random variables from a standard normal distribution. How many of these are in the lower 1% tail of the distribution we drew these from?

> set.seed(1)
> z <- rnorm(10000, 0, 1)
> sum(pnorm(z, 0, 1) < .01)
[1] 115

We expect this to be around 100. Note there is already variance because Z is a random sample.

Now, suppose we make a 5% change in the standard deviation of the distribution we use to evaluate Z:

> sum(pnorm(z, 0, 0.95) < .01)
[1] 167

After a 5% change in a parameter -- here, underestimating the standard deviation -- we observe a 45% increase in the number of random variables in the lower tail.

What if we increase the parameter by 5%:

> sum(pnorm(z, 0, 1.05) < .01)
[1] 83

This gives a 28% decrease in the number in the lower tail.

My point with this example is that small changes in parameters are amplified when we compute the number of observations (for differential expression, read: number of genes), that fall into the tails.