class_docstr: Non-parametric sensitivity analysis for causal estimators.
  
  Two important quantities used to estimate the bias are alpha and g.
       g := E[Y | T, W, Z] denotes the long regression function
       g_s := E[Y | T, W] denotes the short regression function
       α := (T - E[T | W, Z] ) / (E(T - E[T | W, Z]) ^ 2) denotes long reisz representer
       α_s := (T - E[T | W] ) / (E(T - E[T | W]) ^ 2) denotes short reisz representer
  Bias = E(g_s - g)(α_s - α)
  Thus, The bound is the product of additional variations that omitted confounders generate in the regression function and in the reisz representer for partially linear models.
  It can be written as,  Bias = S * Cg * Calpha
  where Cg and Calpha are explanatory powers of the confounder and S^2 = E(Y - g_s) ^ 2 * E(α_s ^ 2)
  
  Based on this work:
      Chernozhukov, V., Cinelli, C., Newey, W., Sharma, A., & Syrgkanis, V. (2022). Long Story Short: Omitted Variable Bias in Causal Machine Learning (No. w30302). National Bureau of Economic Research.
  
  :param estimator: estimator of the causal model
  :param num_splits: number of splits for cross validation. (default = 5)
  :param shuffle_data : shuffle data or not before splitting into folds (default = False)
  :param shuffle_random_seed: seed for randomly shuffling data
  :param benchmark_common_causes: names of variables for bounding strength of confounders
  :param significance_level: confidence interval for statistical inference(default = 0.05)
  :param frac_strength_treatment: strength of association between unobserved confounder and treatment compared to benchmark covariate
  :param frac_strength_outcome: strength of association between unobserved confounder and outcome compared to benchmark covariate
  :param g_s_estimator_list: list of estimator objects for finding g_s. These objects should have fit() and predict() functions.
  :param g_s_estimator_param_list: list of dictionaries with parameters for tuning respective estimators in "g_s_estimator_list".
  :param alpha_s_estimator_list: list of estimator objects for finding the treatment predictor which is used for alpha_s estimation. These objects should have fit() and predict_proba() functions.
  :param alpha_s_estimator_param_list: list of dictionaries with parameters for tuning respective estimators in "alpha_s_estimator_list".
                                       The order of the dictionaries in the list should be consistent with the estimator objects order in "g_s_estimator_list"
  :param observed_common_causes: common causes dataframe
  :param outcome: outcome dataframe
  :param treatment: treatment dataframe
  :param theta_s: point estimate for the estimator
  :param plugin_reisz: whether to use plugin reisz estimator. False by default. The plugin estimator works only for single-dimensional, binary treatment.
docstr: Calculate lower and upper influence function (phi)
  
  :param Cg: measure of strength of confounding that omitted variables generate in outcome regression
  :param Calpha: measure of strength of confounding that omitted variables generate in treatment regression
  
  :returns : lower bound of phi, upper bound of phi
code: def get_phi_lower_upper(self, Cg, Calpha):
      """
      Calculate lower and upper influence function (phi)
  
      :param Cg: measure of strength of confounding that omitted variables generate in outcome regression
      :param Calpha: measure of strength of confounding that omitted variables generate in treatment regression
  
      :returns : lower bound of phi, upper bound of phi
      """
  
      bounds_estimator_upper = self.neyman_orthogonal_score_theta + (
          (Cg * Calpha) / (2 * self.S)
      ) * (
          self.sigma_2 * self.neyman_orthogonal_score_treatment
          + self.nu_2 * self.neyman_orthogonal_score_treatment
      )
      bounds_estimator_lower = self.neyman_orthogonal_score_theta - (
          (Cg * Calpha) / (2 * self.S)
      ) * (
          self.sigma_2 * self.neyman_orthogonal_score_treatment
          + self.nu_2 * self.neyman_orthogonal_score_treatment
      )
  
      return bounds_estimator_lower, bounds_estimator_upper
  
file_path: dowhy/dowhy/causal_refuters/non_parametric_sensitivity_analyzer.py
imports: import numpy
  import pandas
  from sklearn.model_selection import KFold
  from dowhy.causal_refuters.partial_linear_sensitivity_analyzer import PartialLinearSensitivityAnalyzer
  from dowhy.causal_refuters.reisz import get_alpha_estimator, get_generic_regressor
  from dowhy.utils.regression import generate_moment_function, get_numeric_features
label_desc: Use image node_id 3 for calling the NonParametricSensitivityAnalyzer obj's underlying member method code with example usage: obj.get_phi_lower_upper(Cg, Calpha) and returns: bounds_estimator_lower,  bounds_estimator_upper