How to calculate block generation time from block's data?
Block generation time for block#n= (timestamp of block#n+1) - (timestamp of block#n)



I'd say the block generation time for block#n should be:

genTime(block#n) = timestamp(block#n) - timestamp(block#n-1)


However, this doesn't explain the huge discrepancy.

If you're sure that 1) you're using the same dataset, i.e. the same window of blocks!, and 2) calculating exactly the same quantity as they are, and still arrive at different results, you might want to get in touch with the authors of the paper to compare notes and see where your calculations differ.