class_docstr: This class computes Ding & VanderWeele's E-value for unmeasured confounding. The E-value is the minimum
  strength of association on the risk ratio scale that an unmeasured confounder would need to have with
  both the treatment and the outcome, conditional on the measured covariates, to fully explain away a specific
  treatment-outcome association.
  
  It benchmarks the E-value against measured confounders using McGowan and Greevy Jr.'s Observed Covariate E-value.
  This approach drops measured confounders and re-fits the estimator, measuring how much the limiting bound of the
  confidence interval changes on the E-value scale. This benchmarks hypothetical unmeasured confounding against each
  of the measured confounders.
  
  See: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4820664/,
  https://dash.harvard.edu/bitstream/handle/1/36874927/EValue_FinalSubmission.pdf, and
  https://arxiv.org/pdf/2011.07030.pdf.
  The implementation is based on the R packages https://github.com/cran/EValue and https://github.com/LucyMcGowan/tipr.
  
  :param estimate: CausalEstimate
  :param estimand: IdentifiedEstimand
  :param data: pd.DataFrame
  :param outcome_name: Outcome variable name
  :param no_effect_baseline: A number to which to shift the observed estimate to. Defaults to 1 for ratio measures (RR, OR, HR)
  and 0 for additive measures (OLS, MD). (Default = None)
docstr: Computes E-value for a risk ratio or rate ratio and its confidence limits.
  
  :param est: point estimate
  :param lo: lower limit of confidence interval
  :param hi: upper limit of confidence interval
  :param no_effect_baseline: the no_effect_baseline RR to which to shift the observed estimate. (Default = 1)
docstr_tok: ["Computes","E-value","for","a","risk","ratio","or","rate","ratio","and","its","confidence","limits",".",":","param","est",":","point","estimate",":","param","lo",":","lower","limit","of","confidence","interval",":","param","hi",":","upper","limit","of","confidence","interval",":","param","no_effect_baseline",":","the","no_effect_baseline","RR","to","which","to","shift","the","observed","estimate",".","(","Default","=","1",")"]
code: def _evalue_RR(self, est, lo=None, hi=None, no_effect_baseline=1):
      """
      Computes E-value for a risk ratio or rate ratio and its confidence limits.
  
      :param est: point estimate
      :param lo: lower limit of confidence interval
      :param hi: upper limit of confidence interval
      :param no_effect_baseline: the no_effect_baseline RR to which to shift the observed estimate. (Default = 1)
      """
      if est < 0:
          raise ValueError("Risk/Rate Ratio cannot be negative")
      if no_effect_baseline < 0:
          raise ValueError("no_effect_baseline value is impossible")
      if no_effect_baseline != 1:
          self.logger.info(
              'You are calculating a "non-null" E-value, i.e., an E-value for the minimum amount of unmeasured '
              "confounding needed to move the estimate and confidence interval to your specified no_effect_baseline value "
              "rather than to the null value."
          )
      if lo is not None and hi is not None:
          if lo > hi:
              raise ValueError(
                  "Lower confidence limit should be less than upper confidence limit"
              )
      if lo is not None and est < lo:
          raise ValueError(
              "Point estimate should be inside confidence interval"
          )
      if hi is not None and est > hi:
          raise ValueError(
              "Point estimate should be inside confidence interval"
          )
  
      e_est = self._threshold(
          est, no_effect_baseline=no_effect_baseline
      )
      e_lo = self._threshold(lo, no_effect_baseline=no_effect_baseline)
      e_hi = self._threshold(hi, no_effect_baseline=no_effect_baseline)
  
      # if CI crosses null, set its E-value to 1
      null_CI = False
      if est > no_effect_baseline and lo is not None:
          null_CI = lo < no_effect_baseline
      if est < no_effect_baseline and hi is not None:
          null_CI = hi > no_effect_baseline
      if null_CI:
          e_lo = np.float64(1)
          e_hi = np.float64(1)
  
      # only report E-value for CI limit closer to null
      if lo is not None or hi is not None:
          if est > no_effect_baseline:
              e_hi = None
          else:
              e_lo = None
  
      return {
          "converted_estimate": est,
          "converted_lower_ci": lo,
          "converted_upper_ci": hi,
          "evalue_estimate": e_est,
          "evalue_lower_ci": e_lo,
          "evalue_upper_ci": e_hi,
      }
  
imports: import copy
  import logging
  import matplotlib.pyplot
  import numpy
  import pandas
  import statsmodels.api
  from dowhy.causal_estimator import CausalEstimate
  from dowhy.causal_estimators.econml import Econml
  from dowhy.causal_estimators.generalized_linear_model_estimator import GeneralizedLinearModelEstimator
  from dowhy.causal_estimators.linear_regression_estimator import LinearRegressionEstimator
  from dowhy.causal_identifier import IdentifiedEstimand
label_desc: Use image node_id 11 for calling the EValueSensitivityAnalyzer obj's underlying member method code with example usage: obj._evalue_RR(est, lo, hi, no_effect_baseline) and returns: dict