Summarize
Extract summary values
mean(chn) and summarystats(chn) return a ChainDataFrame with parameter names in the parameters column:
using MCMCChains
chn = Chains(reshape(1:120, 20, 3, 2), [:a, :b, :c])
summary = mean(chn)Mean
parameters mean
Symbol Float64
a 40.5000
b 60.5000
c 80.5000
Index by parameter and statistic to get a value or vector:
summary[:a, :mean]40.5summary[[:a, :c], :mean]2-element Vector{Float64}:
40.5
80.5Use : to keep all columns in a smaller table:
summary[[:a, :c], :]Mean
parameters mean
Symbol Float64
a 40.5000
c 80.5000
Use Tables.jl to extract named columns, or convert to a DataFrame:
using Tables
Tables.columntable(summary).mean3-element Vector{Float64}:
40.5
60.5
80.5using DataFrames
DataFrame(summary)| Row | parameters | mean |
|---|---|---|
| Symbol | Float64 | |
| 1 | a | 40.5 |
| 2 | b | 60.5 |
| 3 | c | 80.5 |
Array(summary) returns a vector for one statistic or a matrix for several statistics. Matrix rows follow summary[:, :parameters], and columns follow names(summary)[2:end].
convert(Array, summary) keeps the two-dimensional table layout even for one statistic.
The vector follows the parameter order in the chain. Sort the grouped chain first if you need natural index order:
grouped_chn = Chains(reshape(1:120, 20, 3, 2), ["x[2]", "x[1]", "y"])
grouped_mean = mean(sort(group(grouped_chn, :x)))
Array(grouped_mean)2-element Vector{Float64}:
60.5
40.5The conversion interface preserves the statistic dimension:
size(convert(Array, grouped_mean))(2, 1)API
The methods listed below are defined in src/summarize.jl.
MCMCChains.ChainDataFrame — Type
ChainDataFrameA table returned by summary functions such as mean and summarystats. Index rows by parameter name and columns by statistic name, as in summary[:a, :mean]. One parameter and one statistic return a scalar. Multiple parameters and one statistic return a vector. The table also supports the Tables.jl interface.
MCMCChains.summarize — Method
summarize(chains, funs...[; sections, func_names = [], name = "", append_chains = true])Summarize chains in a ChainsDataFrame.
Examples
summarize(chns): Complete chain summarysummarize(chns[[:parm1, :parm2]]): Chain summary of selected parameterssummarize(chns; sections=[:parameters]): Chain summary of :parameters sectionsummarize(chns; sections=[:parameters, :internals]): Chain summary for multiple sections