Logo ROOT  
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
38 ~MetropolisHastings() override {}
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
80 virtual bool ShouldTakeStep(double d);
81 virtual double CalcNLL(double xL);
82
83 ClassDefOverride(MetropolisHastings,2) // Markov Chain Monte Carlo calculator for Bayesian credible intervals
84 };
85}
86
87
88#endif
#define d(i)
Definition: RSha256.hxx:102
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:62
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:56
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...
RooArgSet fParameters
RooRealVars that define all parameter space.
virtual void SetProposalFunction(ProposalFunction &proposalFunction)
set the proposal function for suggesting new points for the MCMC
Int_t fNumIters
number of iterations to run metropolis algorithm
virtual void SetChainParameters(const RooArgSet &set)
specify the parameters to store in the chain if not specified all of them will be stored
RooAbsReal * fFunction
function that will generate likelihood values
virtual void SetParameters(const RooArgSet &set)
specify all the parameters of interest in the interval
virtual MarkovChain * ConstructChain()
main purpose of MetropolisHastings - run Metropolis-Hastings algorithm to generate Markov Chain of po...
virtual void SetNumIters(Int_t numIters)
set the number of iterations to run the metropolis algorithm
virtual void SetType(enum FunctionType type)
set the type of the function
enum FunctionType fType
whether the likelihood is on a regular, log, (or other) scale
enum FunctionSign fSign
whether the likelihood is negative (like NLL) or positive
RooArgSet fChainParams
RooRealVars that are stored in the chain.
virtual bool ShouldTakeStep(double d)
virtual double CalcNLL(double xL)
MetropolisHastings()
default constructor
virtual void SetNumBurnInSteps(Int_t numBurnInSteps)
set the number of steps in the chain to discard as burn-in, starting from the first
virtual void SetFunction(RooAbsReal &function)
set the (likelihood) function
Int_t fNumBurnInSteps
number of iterations to discard as burn-in, starting from the first
ProposalFunction * fPropFunc
Proposal function for MCMC integration.
virtual void SetSign(enum FunctionSign sign)
set the sign of the function
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:41
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:167
Namespace for the RooStats classes.
Definition: Asimov.h:19
void RemoveConstantParameters(RooArgSet *set)
Definition: RooStatsUtils.h:67