本文整理汇总了C++中Parm::lnPriorRatio方法的典型用法代码示例。如果您正苦于以下问题:C++ Parm::lnPriorRatio方法的具体用法?C++ Parm::lnPriorRatio怎么用?C++ Parm::lnPriorRatio使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Parm
的用法示例。
在下文中一共展示了Parm::lnPriorRatio方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runChain
void Mcmc::runChain(void) {
// get initial likelihood
modelPtr->updateAllFlags();
double oldLnL = modelPtr->lnLikelihood();
for (int n=1; n<=numCycles; n++)
{
// pick a parameter to change
Parm* parm = modelPtr->pickParmAtRandom();
// propose a new state for the parameter
double lnProposalRatio = parm->change();
// calculate the prior ratio
double lnPriorRatio = parm->lnPriorRatio();
// calculate the likelihood
modelPtr->updateQ(parm);
double lnL = modelPtr->lnLikelihood();
double lnLikelihoodRatio = lnL - oldLnL;
// calculate the acceptance probability of the proposed state
double r = safeExp( lnLikelihoodRatio + lnPriorRatio + lnProposalRatio );
// accept or reject the proposed state as the next state of the chain
bool acceptState = false;
if (ranPtr->uniformRv() < r)
acceptState = true;
// print information to the screen
if ( n % printFrequency == 0 )
{
std::cout << std::setw(5) << n << " -- ";
std::cout << std::fixed << std::setprecision(8) << oldLnL << " -> " << lnL;
if (acceptState == true)
std::cout << " -- Accepted change to " << parm->getName() << std::endl;
else
std::cout << " -- Rejected change to " << parm->getName() << std::endl;
}
// update the state of the chain
if (acceptState == true)
{
parm->incrementNumAccepted();
oldLnL = lnL;
modelPtr->keep(parm);
}
else
{
modelPtr->restore(parm);
modelPtr->restoreQ(parm);
}
// print out current chain state
if ( n == 1 || n % sampleFrequency == 0 || n == numCycles )
printChainState(n, oldLnL);
// print summary of chain
if ( n % summarizeFrequency == 0 )
treeSummary->printSummary();
}
treeSummary->print();
modelPtr->printAcceptanceInfo();
}