Hi, I'm running a phylobayes tree analysis under LG+CAT+Gamma like this:
pb -d mygenetree.phy -s -x 2 5000 -dgam 4 -lg -cat mygenetree.pb
Afterwards, I am surprised that the Effective Sample Sizes (ESS) are different between Tracer and the phylobayes tool "tracecomp":
$ tracecomp -x 500 mygenetree.pb.trace
initialising random
seed was : 690294
setting upper limit to : 5000
name effsize rel_diff
loglik 188 0
length 400 0
alpha 337 0
nmode 1357 0
stat 127 0
statalpha 184 0
kappa 3808 0
allocent 1457 0
For tracer, I have to slightly reformat the trace file: remove the columns "treegen" and "time", and strip the hash from the header line:
$ cut -f1,4- mygenetree.pb.trace | sed 's/^#//' > mygenetree.pb.tracer
$ tracer mygenetree.pb.tracer # also uses a burnin of 500.
Mean | ESS | |
---|---|---|
loglik | -914.967 | 159 |
length | 13.362 | 164 |
alpha | 0.524 | 330 |
nmode | 28.047 | 132 |
stat | 1.977 | 107 |
statalpha | 7.035 | 86 |
kappa | 29.143 | 237 |
allocent | 3.166 | 126 |
EDIT
In phylobayes doc, it says that the ESS calculation is based on Gerger 1992, Practical Markov Chain Monte Carlo. Could not find precise info for Tracer. Could the discrepancy be due to the fact that Phylobayes also records the Tree generations between samples ("treegen")?
EDIT 2
Let's add a third way : R package Coda
Its effectiveSize()
function "requires estimating the spectral density at frequency zero".
On the same dataset, this outputs
loglik length alpha nmode stat statalpha kappa allocent
181.07111 183.09962 417.52715 145.89390 106.98334 91.99326 371.50370 139.65857