class_docstr: Impacts of data revisions and news on estimates of variables of interest
  
  Parameters
  ----------
  news_results : SimpleNamespace instance
      Results from `KalmanSmoother.news`.
  model : MLEResults
      The results object associated with the model from which the NewsResults
      was generated.
  updated : MLEResults
      The results object associated with the model containing the updated
      dataset.
  previous : MLEResults
      The results object associated with the model containing the previous
      dataset.
  impacted_variable : str, list, array, or slice, optional
      Observation variable label or slice of labels specifying particular
      impacted variables to display in output. The impacted variable(s)
      describe the variables that were *affected* by the news. If you do not
      know the labels for the variables, check the `endog_names` attribute of
      the model instance.
  tolerance : float, optional
      The numerical threshold for determining zero impact. Default is that
      any impact less than 1e-10 is assumed to be zero.
  row_labels : iterable
      Row labels (often dates) for the impacts of the revisions and news.
  
  Attributes
  ----------
  total_impacts : pd.DataFrame
      Updates to forecasts of impacted variables from both news and data
      revisions, E[y^i | post] - E[y^i | previous].
  update_impacts : pd.DataFrame
      Updates to forecasts of impacted variables from the news,
      E[y^i | post] - E[y^i | revisions] where y^i are the impacted variables
      of interest.
  revision_impacts : pd.DataFrame
      Updates to forecasts of impacted variables from all data revisions,
      E[y^i | revisions] - E[y^i | previous].
  news : pd.DataFrame
      The unexpected component of the updated data,
      E[y^u | post] - E[y^u | revisions] where y^u are the updated variables.
  weights : pd.DataFrame
      Weights describing the effect of news on variables of interest.
  revisions : pd.DataFrame
      The revisions between the current and previously observed data, for
      revisions for which detailed impacts were computed.
  revisions_all : pd.DataFrame
      The revisions between the current and previously observed data,
      y^r_{revised} - y^r_{previous} where y^r are the revised variables.
  revision_weights : pd.DataFrame
      Weights describing the effect of revisions on variables of interest,
      for revisions for which detailed impacts were computed.
  revision_weights_all : pd.DataFrame
      Weights describing the effect of revisions on variables of interest,
      with a new entry that includes NaNs for the revisions for which
      detailed impacts were not computed.
  update_forecasts : pd.DataFrame
      Forecasts based on the previous dataset of the variables that were
      updated, E[y^u | previous].
  update_realized : pd.DataFrame
      Actual observed data associated with the variables that were
      updated, y^u
  revisions_details_start : int
      Integer index of first period in which detailed revision impacts were
      computed.
  revision_detailed_impacts : pd.DataFrame
      Updates to forecasts of impacted variables from data revisions with
      detailed impacts, E[y^i | revisions] - E[y^i | grouped revisions].
  revision_grouped_impacts : pd.DataFrame
      Updates to forecasts of impacted variables from data revisions that
      were grouped together, E[y^i | grouped revisions] - E[y^i | previous].
  revised_prev : pd.DataFrame
      Previously observed data associated with the variables that were
      revised, for revisions for which detailed impacts were computed.
  revised_prev_all : pd.DataFrame
      Previously observed data associated with the variables that were
      revised, y^r_{previous}
  revised : pd.DataFrame
      Currently observed data associated with the variables that were
      revised, for revisions for which detailed impacts were computed.
  revised_all : pd.DataFrame
      Currently observed data associated with the variables that were
      revised, y^r_{revised}
  prev_impacted_forecasts : pd.DataFrame
      Previous forecast of the variables of interest, E[y^i | previous].
  post_impacted_forecasts : pd.DataFrame
      Forecast of the variables of interest after taking into account both
      revisions and updates, E[y^i | post].
  revisions_iloc : pd.DataFrame
      The integer locations of the data revisions in the dataset.
  revisions_ix : pd.DataFrame
      The label-based locations of the data revisions in the dataset.
  revisions_iloc_detailed : pd.DataFrame
      The integer locations of the data revisions in the dataset for which
      detailed impacts were computed.
  revisions_ix_detailed : pd.DataFrame
      The label-based locations of the data revisions in the dataset for
      which detailed impacts were computed.
  updates_iloc : pd.DataFrame
      The integer locations of the updated data points.
  updates_ix : pd.DataFrame
      The label-based locations of updated data points.
  state_index : array_like
      Index of state variables used to compute impacts.
  
  References
  ----------
  .. [1] Bańbura, Marta, and Michele Modugno.
         "Maximum likelihood estimation of factor models on datasets with
         arbitrary pattern of missing data."
         Journal of Applied Econometrics 29, no. 1 (2014): 133-160.
  .. [2] Bańbura, Marta, Domenico Giannone, and Lucrezia Reichlin.
         "Nowcasting."
         The Oxford Handbook of Economic Forecasting. July 8, 2011.
  .. [3] Bańbura, Marta, Domenico Giannone, Michele Modugno, and Lucrezia
         Reichlin.
         "Now-casting and the real-time data flow."
         In Handbook of economic forecasting, vol. 2, pp. 195-237.
         Elsevier, 2013.
class_docstr_tok: ["Impacts","of","data","revisions","and","news","on","estimates","of","variables","of","interest","Parameters","--","--","--","--","--","news_results",":","SimpleNamespace","instance","Results","from","`","KalmanSmoother.news","`",".","model",":","MLEResults","The","results","object","associated","with","the","model","from","which","the","NewsResults","was","generated",".","updated",":","MLEResults","The","results","object","associated","with","the","model","containing","the","updated","dataset",".","previous",":","MLEResults","The","results","object","associated","with","the","model","containing","the","previous","dataset",".","impacted_variable",":","str",",","list",",","array",",","or","slice",",","optional","Observation","variable","label","or","slice","of","labels","specifying","particular","impacted","variables","to","display","in","output",".","The","impacted","variable","(","s",")","describe","the","variables","that","were","*","affected","*","by","the","news",".","If","you","do","not","know","the","labels","for","the","variables",",","check","the","`","endog_names","`","attribute","of","the","model","instance",".","tolerance",":","float",",","optional","The","numerical","threshold","for","determining","zero","impact",".","Default","is","that","any","impact","less","than","1e-10","is","assumed","to","be","zero",".","row_labels",":","iterable","Row","labels","(","often","dates",")","for","the","impacts","of","the","revisions","and","news",".","Attributes","--","--","--","--","--","total_impacts",":","pd.DataFrame","Updates","to","forecasts","of","impacted","variables","from","both","news","and","data","revisions",",","E","[","y^i","|","post","]","-","E","[","y^i","|","previous","]",".","update_impacts",":","pd.DataFrame","Updates","to","forecasts","of","impacted","variables","from","the","news",",","E","[","y^i","|","post","]","-","E","[","y^i","|","revisions","]","where","y^i","are","the","impacted","variables","of","interest",".","revision_impacts",":","pd.DataFrame","Updates","to","forecasts","of","impacted","variables","from","all","data","revisions",",","E","[","y^i","|","revisions","]","-","E","[","y^i","|","previous","]",".","news",":","pd.DataFrame","The","unexpected","component","of","the","updated","data",",","E","[","y^u","|","post","]","-","E","[","y^u","|","revisions","]","where","y^u","are","the","updated","variables",".","weights",":","pd.DataFrame","Weights","describing","the","effect","of","news","on","variables","of","interest",".","revisions",":","pd.DataFrame","The","revisions","between","the","current","and","previously","observed","data",",","for","revisions","for","which","detailed","impacts","were","computed",".","revisions_all",":","pd.DataFrame","The","revisions","between","the","current","and","previously","observed","data",",","y^r_","{","revised","}","-","y^r_","{","previous","}","where","y^r","are","the","revised","variables",".","revision_weights",":","pd.DataFrame","Weights","describing","the","effect","of","revisions","on","variables","of","interest",",","for","revisions","for","which","detailed","impacts","were","computed",".","revision_weights_all",":","pd.DataFrame","Weights","describing","the","effect","of","revisions","on","variables","of","interest",",","with","a","new","entry","that","includes","NaNs","for","the","revisions","for","which","detailed","impacts","were","not","computed",".","update_forecasts",":","pd.DataFrame","Forecasts","based","on","the","previous","dataset","of","the","variables","that","were","updated",",","E","[","y^u","|","previous","]",".","update_realized",":","pd.DataFrame","Actual","observed","data","associated","with","the","variables","that","were","updated",",","y^u","revisions_details_start",":","int","Integer","index","of","first","period","in","which","detailed","revision","impacts","were","computed",".","revision_detailed_impacts",":","pd.DataFrame","Updates","to","forecasts","of","impacted","variables","from","data","revisions","with","detailed","impacts",",","E","[","y^i","|","revisions","]","-","E","[","y^i","|","grouped","revisions","]",".","revision_grouped_impacts",":","pd.DataFrame","Updates","to","forecasts","of","impacted","variables","from","data","revisions","that","were","grouped","together",",","E","[","y^i","|","grouped","revisions","]","-","E","[","y^i","|","previous","]",".","revised_prev",":","pd.DataFrame","Previously","observed","data","associated","with","the","variables","that","were","revised",",","for","revisions","for","which","detailed","impacts","were","computed",".","revised_prev_all",":","pd.DataFrame","Previously","observed","data","associated","with","the","variables","that","were","revised",",","y^r_","{","previous","}","revised",":","pd.DataFrame","Currently","observed","data","associated","with","the","variables","that","were","revised",",","for","revisions","for","which","detailed","impacts","were","computed",".","revised_all",":","pd.DataFrame","Currently","observed","data","associated","with","the","variables","that","were","revised",",","y^r_","{","revised","}","prev_impacted_forecasts",":","pd.DataFrame","Previous","forecast","of","the","variables","of","interest",",","E","[","y^i","|","previous","]",".","post_impacted_forecasts",":","pd.DataFrame","Forecast","of","the","variables","of","interest","after","taking","into","account","both","revisions","and","updates",",","E","[","y^i","|","post","]",".","revisions_iloc",":","pd.DataFrame","The","integer","locations","of","the","data","revisions","in","the","dataset",".","revisions_ix",":","pd.DataFrame","The","label-based","locations","of","the","data","revisions","in","the","dataset",".","revisions_iloc_detailed",":","pd.DataFrame","The","integer","locations","of","the","data","revisions","in","the","dataset","for","which","detailed","impacts","were","computed",".","revisions_ix_detailed",":","pd.DataFrame","The","label-based","locations","of","the","data","revisions","in","the","dataset","for","which","detailed","impacts","were","computed",".","updates_iloc",":","pd.DataFrame","The","integer","locations","of","the","updated","data","points",".","updates_ix",":","pd.DataFrame","The","label-based","locations","of","updated","data","points",".","state_index",":","array_like","Index","of","state","variables","used","to","compute","impacts",".","References","--","--","--","--","--","..","[","1","]","Ba\u0144bura",",","Marta",",","and","Michele","Modugno",".","``","Maximum","likelihood","estimation","of","factor","models","on","datasets","with","arbitrary","pattern","of","missing","data",".","''","Journal","of","Applied","Econometrics","29",",","no",".","1","(","2014",")",":","133-160",".","..","[","2","]","Ba\u0144bura",",","Marta",",","Domenico","Giannone",",","and","Lucrezia","Reichlin",".","``","Nowcasting",".","''","The","Oxford","Handbook","of","Economic","Forecasting",".","July","8",",","2011",".","..","[","3","]","Ba\u0144bura",",","Marta",",","Domenico","Giannone",",","Michele","Modugno",",","and","Lucrezia","Reichlin",".","``","Now-casting","and","the","real-time","data","flow",".","''","In","Handbook","of","economic","forecasting",",","vol",".","2",",","pp",".","195-237",".","Elsevier",",","2013","."]
docstr: Create summary tables describing news and impacts
  
  Parameters
  ----------
  impact_date : int, str, datetime, list, array, or slice, optional
      Observation index label or slice of labels specifying particular
      impact periods to display. The impact date(s) describe the periods
      in which impacted variables were *affected* by the news. If this
      argument is given, the impact and details tables will only show
      this impact date or dates. Note that this argument is passed to the
      Pandas `loc` accessor, and so it should correspond to the labels of
      the model's index. If the model was created with data in a list or
      numpy array, then these labels will be zero-indexes observation
      integers.
  impacted_variable : str, list, array, or slice, optional
      Observation variable label or slice of labels specifying particular
      impacted variables to display. The impacted variable(s) describe
      the variables that were *affected* by the news. If you do not know
      the labels for the variables, check the `endog_names` attribute of
      the model instance.
  update_date : int, str, datetime, list, array, or slice, optional
      Observation index label or slice of labels specifying particular
      updated periods to display. The updated date(s) describe the
      periods in which the new data points were available that generated
      the news). See the note on `impact_date` for details about what
      these labels are.
  updated_variable : str, list, array, or slice, optional
      Observation variable label or slice of labels specifying particular
      updated variables to display. The updated variable(s) describe the
      variables that newly added in the updated dataset and which
      generated the news. If you do not know the labels for the
      variables, check the `endog_names` attribute of the model instance.
  revision_date : int, str, datetime, list, array, or slice, optional
      Observation index label or slice of labels specifying particular
      revision periods to display. The revision date(s) describe the
      periods in which the data points were revised. See the note on
      `impact_date` for details about what these labels are.
  revised_variable : str, list, array, or slice, optional
      Observation variable label or slice of labels specifying particular
      revised variables to display. The updated variable(s) describe the
      variables that were *revised*. If you do not know the labels for
      the variables, check the `endog_names` attribute of the model
      instance.
  impacts_groupby : {impact date, impacted date}
      The primary variable for grouping results in the impacts table. The
      default is to group by update date.
  details_groupby : str
      One of "update date", "updated date", "impact date", or
      "impacted date". The primary variable for grouping results in the
      details table. Only used if the details tables are included. The
      default is to group by update date.
  show_revisions_columns : bool, optional
      If set to False, the impacts table will not show the impacts from
      data revisions or the total impacts. Default is to show the
      revisions and totals columns if any revisions were made and
      otherwise to hide them.
  sparsify : bool, optional, default True
      Set to False for the table to include every one of the multiindex
      keys at each row.
  include_details_tables : bool, optional
      If set to True, the summary will show tables describing the details
      of how news from specific updates translate into specific impacts.
      These tables can be very long, particularly in cases where there
      were many updates and in multivariate models. The default is to
      show detailed tables only for univariate models.
  include_revisions_tables : bool, optional
      If set to True, the summary will show tables describing the
      revisions and updates that lead to impacts on variables of
      interest.
  float_format : str, optional
      Formatter format string syntax for converting numbers to strings.
      Default is '%.2f'.
  
  Returns
  -------
  summary_tables : Summary
      Summary tables describing news and impacts. Basic tables include:
  
      - A table with general information about the sample.
      - A table describing the impacts of revisions and news.
      - Tables describing revisions in the dataset since the previous
        results set (unless `include_revisions_tables=False`).
  
      In univariate models or if `include_details_tables=True`, one or
      more tables will additionally be included describing the details
      of how news from specific updates translate into specific impacts.
  
  See Also
  --------
  summary_impacts
  summary_details
  summary_revisions
  summary_updates
docstr_tok: ["Create","summary","tables","describing","news","and","impacts","Parameters","--","--","--","--","--","impact_date",":","int",",","str",",","datetime",",","list",",","array",",","or","slice",",","optional","Observation","index","label","or","slice","of","labels","specifying","particular","impact","periods","to","display",".","The","impact","date","(","s",")","describe","the","periods","in","which","impacted","variables","were","*","affected","*","by","the","news",".","If","this","argument","is","given",",","the","impact","and","details","tables","will","only","show","this","impact","date","or","dates",".","Note","that","this","argument","is","passed","to","the","Pandas","`","loc","`","accessor",",","and","so","it","should","correspond","to","the","labels","of","the","model","'s","index",".","If","the","model","was","created","with","data","in","a","list","or","numpy","array",",","then","these","labels","will","be","zero-indexes","observation","integers",".","impacted_variable",":","str",",","list",",","array",",","or","slice",",","optional","Observation","variable","label","or","slice","of","labels","specifying","particular","impacted","variables","to","display",".","The","impacted","variable","(","s",")","describe","the","variables","that","were","*","affected","*","by","the","news",".","If","you","do","not","know","the","labels","for","the","variables",",","check","the","`","endog_names","`","attribute","of","the","model","instance",".","update_date",":","int",",","str",",","datetime",",","list",",","array",",","or","slice",",","optional","Observation","index","label","or","slice","of","labels","specifying","particular","updated","periods","to","display",".","The","updated","date","(","s",")","describe","the","periods","in","which","the","new","data","points","were","available","that","generated","the","news",")",".","See","the","note","on","`","impact_date","`","for","details","about","what","these","labels","are",".","updated_variable",":","str",",","list",",","array",",","or","slice",",","optional","Observation","variable","label","or","slice","of","labels","specifying","particular","updated","variables","to","display",".","The","updated","variable","(","s",")","describe","the","variables","that","newly","added","in","the","updated","dataset","and","which","generated","the","news",".","If","you","do","not","know","the","labels","for","the","variables",",","check","the","`","endog_names","`","attribute","of","the","model","instance",".","revision_date",":","int",",","str",",","datetime",",","list",",","array",",","or","slice",",","optional","Observation","index","label","or","slice","of","labels","specifying","particular","revision","periods","to","display",".","The","revision","date","(","s",")","describe","the","periods","in","which","the","data","points","were","revised",".","See","the","note","on","`","impact_date","`","for","details","about","what","these","labels","are",".","revised_variable",":","str",",","list",",","array",",","or","slice",",","optional","Observation","variable","label","or","slice","of","labels","specifying","particular","revised","variables","to","display",".","The","updated","variable","(","s",")","describe","the","variables","that","were","*","revised","*",".","If","you","do","not","know","the","labels","for","the","variables",",","check","the","`","endog_names","`","attribute","of","the","model","instance",".","impacts_groupby",":","{","impact","date",",","impacted","date","}","The","primary","variable","for","grouping","results","in","the","impacts","table",".","The","default","is","to","group","by","update","date",".","details_groupby",":","str","One","of","``","update","date","''",",","``","updated","date","''",",","``","impact","date","''",",","or","``","impacted","date","''",".","The","primary","variable","for","grouping","results","in","the","details","table",".","Only","used","if","the","details","tables","are","included",".","The","default","is","to","group","by","update","date",".","show_revisions_columns",":","bool",",","optional","If","set","to","False",",","the","impacts","table","will","not","show","the","impacts","from","data","revisions","or","the","total","impacts",".","Default","is","to","show","the","revisions","and","totals","columns","if","any","revisions","were","made","and","otherwise","to","hide","them",".","sparsify",":","bool",",","optional",",","default","True","Set","to","False","for","the","table","to","include","every","one","of","the","multiindex","keys","at","each","row",".","include_details_tables",":","bool",",","optional","If","set","to","True",",","the","summary","will","show","tables","describing","the","details","of","how","news","from","specific","updates","translate","into","specific","impacts",".","These","tables","can","be","very","long",",","particularly","in","cases","where","there","were","many","updates","and","in","multivariate","models",".","The","default","is","to","show","detailed","tables","only","for","univariate","models",".","include_revisions_tables",":","bool",",","optional","If","set","to","True",",","the","summary","will","show","tables","describing","the","revisions","and","updates","that","lead","to","impacts","on","variables","of","interest",".","float_format",":","str",",","optional","Formatter","format","string","syntax","for","converting","numbers","to","strings",".","Default","is","'","%",".2f","'",".","Returns","--","--","--","-","summary_tables",":","Summary","Summary","tables","describing","news","and","impacts",".","Basic","tables","include",":","-","A","table","with","general","information","about","the","sample",".","-","A","table","describing","the","impacts","of","revisions","and","news",".","-","Tables","describing","revisions","in","the","dataset","since","the","previous","results","set","(","unless","`","include_revisions_tables=False","`",")",".","In","univariate","models","or","if","`","include_details_tables=True","`",",","one","or","more","tables","will","additionally","be","included","describing","the","details","of","how","news","from","specific","updates","translate","into","specific","impacts",".","See","Also","--","--","--","--","summary_impacts","summary_details","summary_revisions","summary_updates"]
code: def summary(
      self,
      impact_date=None,
      impacted_variable=None,
      update_date=None,
      updated_variable=None,
      revision_date=None,
      revised_variable=None,
      impacts_groupby="impact date",
      details_groupby="update date",
      show_revisions_columns=None,
      sparsify=True,
      include_details_tables=None,
      include_revisions_tables=False,
      float_format="%.2f",
  ):
      """
      Create summary tables describing news and impacts
  
      Parameters
      ----------
      impact_date : int, str, datetime, list, array, or slice, optional
          Observation index label or slice of labels specifying particular
          impact periods to display. The impact date(s) describe the periods
          in which impacted variables were *affected* by the news. If this
          argument is given, the impact and details tables will only show
          this impact date or dates. Note that this argument is passed to the
          Pandas `loc` accessor, and so it should correspond to the labels of
          the model's index. If the model was created with data in a list or
          numpy array, then these labels will be zero-indexes observation
          integers.
      impacted_variable : str, list, array, or slice, optional
          Observation variable label or slice of labels specifying particular
          impacted variables to display. The impacted variable(s) describe
          the variables that were *affected* by the news. If you do not know
          the labels for the variables, check the `endog_names` attribute of
          the model instance.
      update_date : int, str, datetime, list, array, or slice, optional
          Observation index label or slice of labels specifying particular
          updated periods to display. The updated date(s) describe the
          periods in which the new data points were available that generated
          the news). See the note on `impact_date` for details about what
          these labels are.
      updated_variable : str, list, array, or slice, optional
          Observation variable label or slice of labels specifying particular
          updated variables to display. The updated variable(s) describe the
          variables that newly added in the updated dataset and which
          generated the news. If you do not know the labels for the
          variables, check the `endog_names` attribute of the model instance.
      revision_date : int, str, datetime, list, array, or slice, optional
          Observation index label or slice of labels specifying particular
          revision periods to display. The revision date(s) describe the
          periods in which the data points were revised. See the note on
          `impact_date` for details about what these labels are.
      revised_variable : str, list, array, or slice, optional
          Observation variable label or slice of labels specifying particular
          revised variables to display. The updated variable(s) describe the
          variables that were *revised*. If you do not know the labels for
          the variables, check the `endog_names` attribute of the model
          instance.
      impacts_groupby : {impact date, impacted date}
          The primary variable for grouping results in the impacts table. The
          default is to group by update date.
      details_groupby : str
          One of "update date", "updated date", "impact date", or
          "impacted date". The primary variable for grouping results in the
          details table. Only used if the details tables are included. The
          default is to group by update date.
      show_revisions_columns : bool, optional
          If set to False, the impacts table will not show the impacts from
          data revisions or the total impacts. Default is to show the
          revisions and totals columns if any revisions were made and
          otherwise to hide them.
      sparsify : bool, optional, default True
          Set to False for the table to include every one of the multiindex
          keys at each row.
      include_details_tables : bool, optional
          If set to True, the summary will show tables describing the details
          of how news from specific updates translate into specific impacts.
          These tables can be very long, particularly in cases where there
          were many updates and in multivariate models. The default is to
          show detailed tables only for univariate models.
      include_revisions_tables : bool, optional
          If set to True, the summary will show tables describing the
          revisions and updates that lead to impacts on variables of
          interest.
      float_format : str, optional
          Formatter format string syntax for converting numbers to strings.
          Default is '%.2f'.
  
      Returns
      -------
      summary_tables : Summary
          Summary tables describing news and impacts. Basic tables include:
  
          - A table with general information about the sample.
          - A table describing the impacts of revisions and news.
          - Tables describing revisions in the dataset since the previous
            results set (unless `include_revisions_tables=False`).
  
          In univariate models or if `include_details_tables=True`, one or
          more tables will additionally be included describing the details
          of how news from specific updates translate into specific impacts.
  
      See Also
      --------
      summary_impacts
      summary_details
      summary_revisions
      summary_updates
      """
      # Default for include_details_tables
      if include_details_tables is None:
          include_details_tables = self.k_endog == 1
  
      # Model specification results
      model = self.model.model
      title = "News"
  
      def get_sample(model):
          if model._index_dates:
              mask = ~np.isnan(model.endog).all(axis=1)
              ix = model._index[mask]
              d = ix[0]
              sample = ["%s" % d]
              d = ix[-1]
              sample += ["- " + "%s" % d]
          else:
              sample = [str(0), " - " + str(model.nobs)]
  
          return sample
  
      previous_sample = get_sample(self.previous.model)
      revised_sample = get_sample(self.updated.model)
  
      # Standardize the model name as a list of str
      model_name = model.__class__.__name__
  
      # Top summary table
      top_left = [
          ("Model:", [model_name]),
          ("Date:", None),
          ("Time:", None),
      ]
      if self.state_index is not None:
          k_states_used = len(self.state_index)
          if k_states_used != self.model.model.k_states:
              top_left.append(
                  ("# of included states:", [k_states_used])
              )
  
      top_right = [
          ("Original sample:", [previous_sample[0]]),
          ("", [previous_sample[1]]),
          ("Update through:", [revised_sample[1][2:]]),
          ("# of revisions:", [len(self.revisions_ix)]),
          ("# of new datapoints:", [len(self.updates_ix)]),
      ]
  
      summary = Summary()
      self.model.endog_names = self.model.model.endog_names
      summary.add_table_2cols(
          self, gleft=top_left, gright=top_right, title=title
      )
      table_ix = 1
  
      # Impact table
      summary.tables.insert(
          table_ix,
          self.summary_impacts(
              impact_date=impact_date,
              impacted_variable=impacted_variable,
              groupby=impacts_groupby,
              show_revisions_columns=show_revisions_columns,
              sparsify=sparsify,
              float_format=float_format,
          ),
      )
      table_ix += 1
  
      # News table
      if len(self.updates_iloc) > 0:
          summary.tables.insert(
              table_ix, self.summary_news(sparsify=sparsify)
          )
          table_ix += 1
  
      # Detail tables
      multiple_tables = self.k_endog > 1
      details_tables = self.summary_details(
          source="news",
          impact_date=impact_date,
          impacted_variable=impacted_variable,
          update_date=update_date,
          updated_variable=updated_variable,
          groupby=details_groupby,
          sparsify=sparsify,
          float_format=float_format,
          multiple_tables=multiple_tables,
      )
      if not multiple_tables:
          details_tables = [details_tables]
  
      if include_details_tables:
          for table in details_tables:
              summary.tables.insert(table_ix, table)
              table_ix += 1
  
      # Revisions
      if include_revisions_tables and self.n_revisions > 0:
          summary.tables.insert(
              table_ix, self.summary_revisions(sparsify=sparsify)
          )
          table_ix += 1
  
          # Revision detail tables
          revision_details_tables = self.summary_details(
              source="revisions",
              impact_date=impact_date,
              impacted_variable=impacted_variable,
              update_date=revision_date,
              updated_variable=revised_variable,
              groupby=details_groupby,
              sparsify=sparsify,
              float_format=float_format,
              multiple_tables=multiple_tables,
          )
          if not multiple_tables:
              revision_details_tables = [revision_details_tables]
  
          if include_details_tables:
              for table in revision_details_tables:
                  summary.tables.insert(table_ix, table)
                  table_ix += 1
  
      return summary
  
imports: from statsmodels.compat.pandas import FUTURE_STACK
  import numpy
  import pandas
  from statsmodels.iolib.summary import Summary
  from statsmodels.iolib.table import SimpleTable
  from statsmodels.iolib.tableformatting import fmt_params
label_desc: Use image node_id 18 for calling the NewsResults obj's underlying member method code with example usage: obj.summary(impact_date, impacted_variable, update_date, updated_variable, revision_date, revised_variable, impacts_groupby, details_groupby, show_revisions_columns, sparsify, include_details_tables, include_revisions_tables, float_format) and returns: summary, sample