I’m adapting the tutorial from here LKJ Cholesky Covariance Priors for Multivariate Normal Models — PyMC example gallery
For my own use case, I want to plot the trace of “chol_corr”. Now, chol_corr is a 2x2 correlation matrix and the diagonals are always 1’s in every sample of the trace – the off-diagonal terms are identical and will vary from sample to sample. When I do
I get an error:
File /opt/anaconda3/envs/pymc/lib/python3.11/site-packages/arviz/plots/kdeplot.py:267, in plot_kde(values, values2, cumulative, rug, label, bw, adaptive, quantiles, rotated, contour, hdi_probs, fill_last, figsize, textsize, plot_kwargs, fill_kwargs, rug_kwargs, contour_kwargs, contourf_kwargs, pcolormesh_kwargs, is_circular, ax, legend, backend, backend_kwargs, show, return_glyph, **kwargs) 264 if bw == "default": 265 bw = "taylor" if is_circular else "experimental" --> 267 grid, density = kde(values, is_circular, bw=bw, adaptive=adaptive, cumulative=cumulative) 268 lower, upper = grid, grid[-1] 270 density_q = density if cumulative else density.cumsum() / density.sum() File /opt/anaconda3/envs/pymc/lib/python3.11/site-packages/arviz/stats/density_utils.py:498, in kde(x, circular, **kwargs) 495 else: 496 kde_fun = _kde_linear --> 498 return kde_fun(x, **kwargs) File /opt/anaconda3/envs/pymc/lib/python3.11/site-packages/arviz/stats/density_utils.py:590, in _kde_linear(x, bw, adaptive, extend, bound_correction, extend_fct, bw_fct, bw_return, custom_lims, cumulative, grid_len, **kwargs) 588 grid, pdf = _kde_adaptive(x, bw, grid_edges, grid_counts, grid_len, bound_correction) 589 else: --> 590 grid, pdf = _kde_convolution(x, bw, grid_edges, grid_counts, grid_len, bound_correction) 592 if cumulative: 593 pdf = pdf.cumsum() / pdf.sum() File /opt/anaconda3/envs/pymc/lib/python3.11/site-packages/arviz/stats/density_utils.py:708, in _kde_convolution(x, bw, grid_edges, grid_counts, grid_len, bound_correction, **kwargs) 704 # See: https://stackoverflow.com/questions/2773606/gaussian-filter-in-matlab 706 grid = (grid_edges[1:] + grid_edges[:-1]) / 2 --> 708 kernel_n = int(bw * 2 * np.pi) 709 if kernel_n == 0: 710 kernel_n = 1 OverflowError: cannot convert float infinity to integer
I think it’s because plot_trace is trying to do the kdeplot of the chol_corr[0,0] element trace which is always 1. How do I tell plot_trace to only plot the trace of the chol_corr[0,1] or chol_corr[1,0] element (just one of them, not both, since they are identical)?