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: Details of forecast revisions from news, organized by impacts first
  
  Returns
  -------
  details : pd.DataFrame
      Index is as MultiIndex consisting of:
  
      - `impact date`: the date of the impact on the variable of interest
      - `impacted variable`: the variable that is being impacted
      - `update date`: the date of the data update, that results in
        `news` that impacts the forecast of variables of interest
      - `updated variable`: the variable being updated, that results in
        `news` that impacts the forecast of variables of interest
  
      The columns are:
  
      - `forecast (prev)`: the previous forecast of the new entry,
        based on the information available in the previous dataset
      - `observed`: the value of the new entry, as it is observed in the
        new dataset
      - `news`: the news associated with the update (this is just the
        forecast error: `observed` - `forecast (prev)`)
      - `weight`: the weight describing how the `news` effects the
        forecast of the variable of interest
      - `impact`: the impact of the `news` on the forecast of the
        variable of interest
  
  Notes
  -----
  This table decomposes updated forecasts of variables of interest from
  the `news` associated with each updated datapoint from the new data
  release.
  
  This table does not summarize the impacts or show the effect of
  revisions. That information can be found in the `impacts` or
  `revision_details_by_impact` tables.
  
  This form of the details table is organized so that the impacted
  dates / variables are first in the index. This is convenient for
  slicing by impacted variables / dates to view the details of data
  updates for a particular variable or date.
  
  However, since the `forecast (prev)` and `observed` columns have a lot
  of duplication, printing the entire table gives a result that is less
  easy to parse than that produced by the `details_by_update` property.
  `details_by_update` contains the same information but is organized to
  be more convenient for displaying the entire table of detailed updates.
  At the same time, `details_by_update` is less convenient for
  subsetting.
  
  See Also
  --------
  details_by_update
  revision_details_by_update
  impacts
docstr_tok: ["Details","of","forecast","revisions","from","news",",","organized","by","impacts","first","Returns","--","--","--","-","details",":","pd.DataFrame","Index","is","as","MultiIndex","consisting","of",":","-","`","impact","date","`",":","the","date","of","the","impact","on","the","variable","of","interest","-","`","impacted","variable","`",":","the","variable","that","is","being","impacted","-","`","update","date","`",":","the","date","of","the","data","update",",","that","results","in","`","news","`","that","impacts","the","forecast","of","variables","of","interest","-","`","updated","variable","`",":","the","variable","being","updated",",","that","results","in","`","news","`","that","impacts","the","forecast","of","variables","of","interest","The","columns","are",":","-","`","forecast","(","prev",")","`",":","the","previous","forecast","of","the","new","entry",",","based","on","the","information","available","in","the","previous","dataset","-","`","observed","`",":","the","value","of","the","new","entry",",","as","it","is","observed","in","the","new","dataset","-","`","news","`",":","the","news","associated","with","the","update","(","this","is","just","the","forecast","error",":","`","observed","`","-","`","forecast","(","prev",")","`",")","-","`","weight","`",":","the","weight","describing","how","the","`","news","`","effects","the","forecast","of","the","variable","of","interest","-","`","impact","`",":","the","impact","of","the","`","news","`","on","the","forecast","of","the","variable","of","interest","Notes","--","--","-","This","table","decomposes","updated","forecasts","of","variables","of","interest","from","the","`","news","`","associated","with","each","updated","datapoint","from","the","new","data","release",".","This","table","does","not","summarize","the","impacts","or","show","the","effect","of","revisions",".","That","information","can","be","found","in","the","`","impacts","`","or","`","revision_details_by_impact","`","tables",".","This","form","of","the","details","table","is","organized","so","that","the","impacted","dates","\/","variables","are","first","in","the","index",".","This","is","convenient","for","slicing","by","impacted","variables","\/","dates","to","view","the","details","of","data","updates","for","a","particular","variable","or","date",".","However",",","since","the","`","forecast","(","prev",")","`","and","`","observed","`","columns","have","a","lot","of","duplication",",","printing","the","entire","table","gives","a","result","that","is","less","easy","to","parse","than","that","produced","by","the","`","details_by_update","`","property",".","`","details_by_update","`","contains","the","same","information","but","is","organized","to","be","more","convenient","for","displaying","the","entire","table","of","detailed","updates",".","At","the","same","time",",","`","details_by_update","`","is","less","convenient","for","subsetting",".","See","Also","--","--","--","--","details_by_update","revision_details_by_update","impacts"]
code: def details_by_impact(self):
      """
      Details of forecast revisions from news, organized by impacts first
  
      Returns
      -------
      details : pd.DataFrame
          Index is as MultiIndex consisting of:
  
          - `impact date`: the date of the impact on the variable of interest
          - `impacted variable`: the variable that is being impacted
          - `update date`: the date of the data update, that results in
            `news` that impacts the forecast of variables of interest
          - `updated variable`: the variable being updated, that results in
            `news` that impacts the forecast of variables of interest
  
          The columns are:
  
          - `forecast (prev)`: the previous forecast of the new entry,
            based on the information available in the previous dataset
          - `observed`: the value of the new entry, as it is observed in the
            new dataset
          - `news`: the news associated with the update (this is just the
            forecast error: `observed` - `forecast (prev)`)
          - `weight`: the weight describing how the `news` effects the
            forecast of the variable of interest
          - `impact`: the impact of the `news` on the forecast of the
            variable of interest
  
      Notes
      -----
      This table decomposes updated forecasts of variables of interest from
      the `news` associated with each updated datapoint from the new data
      release.
  
      This table does not summarize the impacts or show the effect of
      revisions. That information can be found in the `impacts` or
      `revision_details_by_impact` tables.
  
      This form of the details table is organized so that the impacted
      dates / variables are first in the index. This is convenient for
      slicing by impacted variables / dates to view the details of data
      updates for a particular variable or date.
  
      However, since the `forecast (prev)` and `observed` columns have a lot
      of duplication, printing the entire table gives a result that is less
      easy to parse than that produced by the `details_by_update` property.
      `details_by_update` contains the same information but is organized to
      be more convenient for displaying the entire table of detailed updates.
      At the same time, `details_by_update` is less convenient for
      subsetting.
  
      See Also
      --------
      details_by_update
      revision_details_by_update
      impacts
      """
      s = self.weights.stack(level=[0, 1], **FUTURE_STACK)
      df = s.rename("weight").to_frame()
      if len(self.updates_iloc):
          df["forecast (prev)"] = self.update_forecasts
          df["observed"] = self.update_realized
          df["news"] = self.news
          df["impact"] = df["news"] * df["weight"]
      else:
          df["forecast (prev)"] = []
          df["observed"] = []
          df["news"] = []
          df["impact"] = []
      df = df[
          ["observed", "forecast (prev)", "news", "weight", "impact"]
      ]
      df = df.reorder_levels([2, 3, 0, 1]).sort_index()
  
      if self.impacted_variable is not None and len(df) > 0:
          df = df.loc[np.s_[:, self.impacted_variable], :]
  
      mask = np.abs(df["impact"]) > self.tolerance
      return df[mask]
  
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 8 for calling the NewsResults obj's underlying member method code with example usage: obj.details_by_impact() and returns: df