MCMCSamplesDict class
pesummary handles multiple MCMC chains through a custom MCMCSamplesDict class. This MCMCSamplesDict class is inhertied from the core dict class and stores multiple SamplesDict objects, one for each chain. See SanplesDict class for more information. This MCMCSamplesDict class has many useful properties, for example working out the Gelman-Rubin statistic.
Initializing the MCMCSamplesDict class
The MCMCSamplesDict class is initialized with an array of parameters and an array containing the samples for each parameter for each chain,
>>> from pesummary.utils.samples_dict import MCMCSamplesDict
>>> parameters = ["a", "b"]
>>> samples = [
... [
... [1, 1.2, 1.7, 1.1, 1.4, 0.8, 1.6],
... [10.2, 11.3, 11.6, 9.5, 8.6, 10.8, 10.9]
... ], [
... [0.8, 0.5, 1.7, 1.4, 1.2, 1.7, 0.9],
... [10, 10.5, 10.4, 9.6, 8.6, 11.6, 16.2]
... ]
... ]
>>> dataset = MCMCSamplesDict(parameter, samples)
>>> print(dataset.keys())
dict_keys(['chain_0', 'chain_1'])
>>> print(dataset["chain_0"])
idx a b
0 1.000000 10.200000
1 1.200000 11.300000
2 1.700000 11.600000
3 1.100000 9.500000
4 1.400000 8.600000
5 0.800000 10.800000
6 1.600000 10.900000
Using the MCMCSamplesDict properties
Below we show some of the useful properties of the MCMCSamplesDict class. For full details see the doc string,
>>> dataset.nchains
2
>>> transpose = dataset.T
>>> transpose["a"]
idx chain_0 chain_1
0 1.000000 0.800000
1 1.200000 0.500000
2 1.700000 1.700000
3 1.100000 1.400000
4 1.400000 1.200000
5 0.800000 1.700000
6 1.600000 0.900000
>>> dataset.average
idx a b
0 0.900000 10.100000
1 0.850000 10.900000
2 1.700000 11.000000
3 1.250000 9.550000
4 1.300000 8.600000
5 1.250000 11.200000
6 1.250000 13.550000
Using the MCMCSamplesDict function
Below we show some of the useful function of the MCMCSamplesDict class. For full details see the doc string,
>>> dataset.gelman_rubin("a")
1.02018