arviz.InferenceData.isel#

InferenceData.isel(groups: Optional[Union[str, List[str]]] = None, filter_groups: Optional[Literal['like', 'regex']] = None, inplace: bool = False, **kwargs: Any) Optional[arviz.data.inference_data.InferenceDataT][source]#

Perform an xarray selection on all groups.

Loops groups to perform Dataset.isel(key=item) for every kwarg if key is a dimension of the dataset. One example could be performing a burn in cut on the InferenceData object or discarding a chain. The selection is performed on all relevant groups (like posterior, prior, sample stats) while non relevant groups like observed data are omitted. See xarray.Dataset.isel()

Parameters
groupsstr or list of str, optional

Groups where the selection is to be applied. Can either be group names or metagroup names.

filter_groups{None, “like”, “regex”}, optional

If None (default), interpret groups as the real group or metagroup names. If “like”, interpret groups as substrings of the real group or metagroup names. If “regex”, interpret groups as regular expressions on the real group or metagroup names. A la pandas.filter.

inplacebool, optional

If True, modify the InferenceData object inplace, otherwise, return the modified copy.

kwargsdict, optional

It must be accepted by xarray.Dataset.isel().

Returns
InferenceData

A new InferenceData object by default. When inplace==True perform selection in-place and return None

See also

xarray.Dataset.isel

Returns a new dataset with each array indexed along the specified dimension(s).

sel

Returns a new dataset with each array indexed by tick labels along the specified dimension(s).

Examples

Use isel to discard one chain of the InferenceData object. We first check the dimensions of the original object:

import arviz as az
idata = az.load_arviz_data("centered_eight")
idata
arviz.InferenceData
    • <xarray.Dataset>
      Dimensions:  (chain: 4, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0 1 2 3
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          mu       (chain, draw) float64 ...
          theta    (chain, draw, school) float64 ...
          tau      (chain, draw) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:37.315398
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2
          sampling_time:              7.480114936828613
          tuning_steps:               1000

    • <xarray.Dataset>
      Dimensions:  (chain: 4, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0 1 2 3
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (chain, draw, school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:41.460544
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (chain: 4, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0 1 2 3
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (chain, draw, school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:37.487399
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:              (chain: 4, draw: 500)
      Coordinates:
        * chain                (chain) int64 0 1 2 3
        * draw                 (draw) int64 0 1 2 3 4 5 6 ... 494 495 496 497 498 499
      Data variables: (12/16)
          max_energy_error     (chain, draw) float64 ...
          energy_error         (chain, draw) float64 ...
          lp                   (chain, draw) float64 ...
          index_in_trajectory  (chain, draw) int64 ...
          acceptance_rate      (chain, draw) float64 ...
          diverging            (chain, draw) bool ...
          ...                   ...
          smallest_eigval      (chain, draw) float64 ...
          step_size_bar        (chain, draw) float64 ...
          step_size            (chain, draw) float64 ...
          energy               (chain, draw) float64 ...
          tree_depth           (chain, draw) int64 ...
          perf_counter_diff    (chain, draw) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:37.324929
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2
          sampling_time:              7.480114936828613
          tuning_steps:               1000

    • <xarray.Dataset>
      Dimensions:  (chain: 1, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          tau      (chain, draw) float64 ...
          theta    (chain, draw, school) float64 ...
          mu       (chain, draw) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.602116
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (chain: 1, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (chain, draw, school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.604969
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (school: 8)
      Coordinates:
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.606375
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (school: 8)
      Coordinates:
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          scores   (school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.607471
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

In order to remove the third chain:

idata_subset = idata.isel(chain=[0, 1, 3], groups="posterior_groups")
idata_subset
arviz.InferenceData
    • <xarray.Dataset>
      Dimensions:  (chain: 3, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0 1 3
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          mu       (chain, draw) float64 ...
          theta    (chain, draw, school) float64 ...
          tau      (chain, draw) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:37.315398
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2
          sampling_time:              7.480114936828613
          tuning_steps:               1000

    • <xarray.Dataset>
      Dimensions:  (chain: 3, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0 1 3
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (chain, draw, school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:41.460544
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (chain: 3, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0 1 3
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (chain, draw, school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:37.487399
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:              (chain: 3, draw: 500)
      Coordinates:
        * chain                (chain) int64 0 1 3
        * draw                 (draw) int64 0 1 2 3 4 5 6 ... 494 495 496 497 498 499
      Data variables: (12/16)
          max_energy_error     (chain, draw) float64 ...
          energy_error         (chain, draw) float64 ...
          lp                   (chain, draw) float64 ...
          index_in_trajectory  (chain, draw) int64 ...
          acceptance_rate      (chain, draw) float64 ...
          diverging            (chain, draw) bool ...
          ...                   ...
          smallest_eigval      (chain, draw) float64 ...
          step_size_bar        (chain, draw) float64 ...
          step_size            (chain, draw) float64 ...
          energy               (chain, draw) float64 ...
          tree_depth           (chain, draw) int64 ...
          perf_counter_diff    (chain, draw) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:37.324929
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2
          sampling_time:              7.480114936828613
          tuning_steps:               1000

    • <xarray.Dataset>
      Dimensions:  (chain: 1, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          tau      (chain, draw) float64 ...
          theta    (chain, draw, school) float64 ...
          mu       (chain, draw) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.602116
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (chain: 1, draw: 500, school: 8)
      Coordinates:
        * chain    (chain) int64 0
        * draw     (draw) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (chain, draw, school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.604969
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (school: 8)
      Coordinates:
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          obs      (school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.606375
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

    • <xarray.Dataset>
      Dimensions:  (school: 8)
      Coordinates:
        * school   (school) object 'Choate' 'Deerfield' ... "St. Paul's" 'Mt. Hermon'
      Data variables:
          scores   (school) float64 ...
      Attributes:
          created_at:                 2022-10-13T14:37:26.607471
          arviz_version:              0.13.0.dev0
          inference_library:          pymc
          inference_library_version:  4.2.2

You can expand the groups and coords in each group to see how now only the chains 0, 1 and 3 are present.