JifengJiang / beast-mcmc

Automatically exported from code.google.com/p/beast-mcmc
GNU Lesser General Public License v2.1
0 stars 0 forks source link

BEAUti should explicitly generate uniform priors #409

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Currently, BEAUti generates uniform priors between bounds by setting upper and 
lower attributes on the parameters. This should change to adding a 
<uniformPrior> element to the priors block so all priors are explicitly defined 
in one place. As a consequence the 'upper' and 'lower' attributes of a 
parameter should reflect the actual range of values the parameter can take 
(i.e., in most cases these will be some combination of -Inf, +Inf, 0 or 1).

Original issue reported on code.google.com by ramb...@gmail.com on 30 Sep 2010 at 9:58

GoogleCodeExporter commented 9 years ago
But it seems some BEAUti default boundaries have problem:

- <logNormalPrior mean="1.0" stdev="1.25" offset="0.0" meanInRealSpace="false">
  <parameter idref="CP1+2.kappa" /> 
  </logNormalPrior>
- <logNormalPrior mean="1.0" stdev="1.25" offset="0.0" meanInRealSpace="false">
  <parameter idref="CP3.kappa" /> 
  </logNormalPrior>
- <uniformPrior lower="0.0" upper="Infinity">
  <parameter idref="CP1+2.mu" /> 
  </uniformPrior>
- <uniformPrior lower="0.0" upper="Infinity">
  <parameter idref="CP3.mu" /> 
  </uniformPrior>
- <uniformPrior lower="0.0" upper="1.0">
  <parameter idref="CP1+2.frequencies" /> 
  </uniformPrior>
- <uniformPrior lower="0.0" upper="1.0">
  <parameter idref="CP3.frequencies" /> 
  </uniformPrior>
- <uniformPrior lower="0.0" upper="1000.0">
  <parameter idref="CP1+2.alpha" /> 
  </uniformPrior>
- <uniformPrior lower="0.0" upper="1000.0">
  <parameter idref="CP3.alpha" /> 
  </uniformPrior>
- <oneOnXPrior>
  <parameter idref="exponential.popSize" /> 
  </oneOnXPrior>
- <uniformPrior lower="-Infinity" upper="Infinity">
  <parameter idref="exponential.growthRate" /> 
  </uniformPrior>
  <coalescentLikelihood idref="coalescent" /> 

Result:

 CompoundLikelihood(compoundModel)=(
    DistributionLikelihood=-1.8654, 
    DistributionLikelihood=-1.8654, 
    DistributionLikelihood=-Inf, 
    DistributionLikelihood=-Inf, 
    DistributionLikelihood=0.0, 
    DistributionLikelihood=0.0, 
    DistributionLikelihood=-6.9078, 
    DistributionLikelihood=-6.9078, 
    OneOnX(exponential.popSize)=4.0174, 
    DistributionLikelihood=-Inf, 
    CoalescentLikelihood(coalescentLikelihood)=54.4972
  ), 
  CompoundLikelihood(compoundModel)=(
    TreeLikelihood(treeLikelihood)=-2061.0466, 
    TreeLikelihood(treeLikelihood)=-916.1405
  )

Original comment by dong.w.xie@gmail.com on 8 Oct 2010 at 2:02

Attachments:

GoogleCodeExporter commented 9 years ago
Do not add explicit uniform prior if one or other bound is infinity. The issue 
was if you (say) set a uniform prior on clock.rate of [0, 100], BEAUti 
generates this by setting the upper limit on the parameter which obscures the 
fact this prior is there. I think the upper and lower on the parameters should 
only be used to define 'hard' bounds.

Original comment by ramb...@gmail.com on 8 Oct 2010 at 6:44

GoogleCodeExporter commented 9 years ago

Original comment by dong.w.xie@gmail.com on 20 Mar 2011 at 11:00