Logo ROOT   6.16/01
Reference Guide
MetropolisHastings.h
Go to the documentation of this file.
1// @(#)root/roostats:$Id$
2// Authors: Kevin Belasco 17/06/2009
3// Authors: Kyle Cranmer 17/06/2009
4/*************************************************************************
5 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOSTATS_MetropolisHastings
13#define ROOSTATS_MetropolisHastings
14
16#include "Rtypes.h"
17#include "TObject.h"
18#include "RooArgSet.h"
21
22namespace RooStats {
23
24 class MetropolisHastings : public TObject {
25
26
27 public:
30
31 // default constructor
33
34 // alternate constructor
35 MetropolisHastings(RooAbsReal& function, const RooArgSet& paramsOfInterest,
36 ProposalFunction& proposalFunction, Int_t numIters);
37
39
40 // main purpose of MetropolisHastings - run Metropolis-Hastings
41 // algorithm to generate Markov Chain of points in the parameter space
42 virtual MarkovChain* ConstructChain();
43
44 // specify the parameters to store in the chain
45 // if not specified all of them will be stored
46 virtual void SetChainParameters(const RooArgSet& set)
48 // specify all the parameters of interest in the interval
49 virtual void SetParameters(const RooArgSet& set)
51 // set the proposal function for suggesting new points for the MCMC
52 virtual void SetProposalFunction(ProposalFunction& proposalFunction)
53 { fPropFunc = &proposalFunction; }
54 // set the number of iterations to run the metropolis algorithm
55 virtual void SetNumIters(Int_t numIters)
56 { fNumIters = numIters; }
57 // set the number of steps in the chain to discard as burn-in,
58 // starting from the first
59 virtual void SetNumBurnInSteps(Int_t numBurnInSteps)
60 { fNumBurnInSteps = numBurnInSteps; }
61 // set the (likelihood) function
63 // set the sign of the function
64 virtual void SetSign(enum FunctionSign sign) { fSign = sign; }
65 // set the type of the function
66 virtual void SetType(enum FunctionType type) { fType = type; }
67
68
69 protected:
70 RooAbsReal* fFunction; // function that will generate likelihood values
71 RooArgSet fParameters; // RooRealVars that define all parameter space
72 RooArgSet fChainParams; // RooRealVars that are stored in the chain
73 ProposalFunction* fPropFunc; // Proposal function for MCMC integration
74 Int_t fNumIters; // number of iterations to run metropolis algorithm
75 Int_t fNumBurnInSteps; // number of iterations to discard as burn-in, starting from the first
76 enum FunctionSign fSign; // whether the likelihood is negative (like NLL) or positive
77 enum FunctionType fType; // whether the likelihood is on a regular, log, (or other) scale
78
79 // whether we should take the step, based on the value of d, fSign, fType
81 virtual Double_t CalcNLL(Double_t xL);
82
83 ClassDef(MetropolisHastings,2) // Markov Chain Monte Carlo calculator for Bayesian credible intervals
84 };
85}
86
87
88#endif
#define d(i)
Definition: RSha256.hxx:102
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
#define ClassDef(name, id)
Definition: Rtypes.h:324
int type
Definition: TGX11.cxx:120
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
Definition: RooArgSet.h:88
Stores the steps in a Markov Chain of points.
Definition: MarkovChain.h:30
This class uses the Metropolis-Hastings algorithm to construct a Markov Chain of data points using Mo...
virtual void SetProposalFunction(ProposalFunction &proposalFunction)
virtual Bool_t ShouldTakeStep(Double_t d)
virtual void SetChainParameters(const RooArgSet &set)
virtual void SetParameters(const RooArgSet &set)
virtual MarkovChain * ConstructChain()
virtual void SetNumIters(Int_t numIters)
virtual void SetType(enum FunctionType type)
virtual Double_t CalcNLL(Double_t xL)
virtual void SetNumBurnInSteps(Int_t numBurnInSteps)
virtual void SetFunction(RooAbsReal &function)
virtual void SetSign(enum FunctionSign sign)
ProposalFunction is an interface for all proposal functions that would be used with a Markov Chain Mo...
Mother of all ROOT objects.
Definition: TObject.h:37
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:151
@(#)root/roostats:$Id$ Author: George Lewis, Kyle Cranmer
Definition: Asimov.h:20
void RemoveConstantParameters(RooArgSet *set)
Definition: RooStatsUtils.h:62