code: def observed_data_to_xarray(self):
          
          # This next line is brittle and may not work forever, but is a secret
          # way to access the model from the trace.
          model = self.trace._straces[0].model  # pylint: disable=protected-access
  
          observations = {obs.name: obs.observations for obs in model.observed_RVs}
          if self.dims is None:
              dims = {}
          else:
              dims = self.dims
          observed_data = {}
          for name, vals in observations.items():
              vals = np.atleast_1d(vals)
              val_dims = dims.get(name)
              val_dims, coords = generate_dims_coords(
                  vals.shape, name, dims=val_dims, coords=self.coords
              )
              # filter coords based on the dims
              coords = {key: xr.IndexVariable((key,), data=coords[key]) for key in val_dims}
              observed_data[name] = xr.DataArray(vals, dims=val_dims, coords=coords)
          return xr.Dataset(data_vars=observed_data, attrs=make_attrs(library=self.pymc3))
docs: Convert observed data to xarray.