class_docstr: This is a contextual dataset that is constructed from either a single
  dateset containing overall outcome or a list of datasets that each corresponds
  to a context breakdown.
docstr: Concatenates the Yvars from the child datasets to create the Y expected
  by LCEM model if there are multiple datasets; Or return the Yvar expected
  by LCEA model if there is only one dataset.
code: def Yvar(self) -> Tensor:
      """Concatenates the Yvars from the child datasets to create the Y expected
      by LCEM model if there are multiple datasets; Or return the Yvar expected
      by LCEA model if there is only one dataset.
      """
      if len(self.datasets) == 1:
          # use LCEA model
          return self.datasets[self.outcome_names[0]].Yvar
      elif self.datasets[self.outcome_names[0]].Yvar is None:
          return None
      else:
          return torch.cat(
              [
                  self.datasets[outcome_name].Yvar
                  for outcome_name in self.outcome_names
              ],
              dim=-1,
          )
  
imports: from __future__ import annotations
  import collections
  import warnings
  from typing import Any, Dict, List, Optional, Union
  import torch
  from botorch.exceptions.errors import InputDataError, UnsupportedError
  from botorch.utils.containers import BotorchContainer, SliceContainer
  from torch import long, ones, Tensor
label_desc: Use image node_id 4 for calling the ContextualDataset obj's underlying member method code with example usage: obj.Yvar() and returns: self, None, torch