class_docstr: A Sensitivity Check class to support Placebo Treatment, Irrelevant Additional Confounder
  and Subset validation refutation methods to verify causal inference.
  
  Reference: https://github.com/microsoft/dowhy/blob/master/dowhy/causal_refuters/
docstr: Return the sensitivity data by different method
  
  Args:
      method (list of str): a list of sensitivity analysis method
      sample_size (float, optional): ratio for subset the original data
      confound (string, optional): the name of confouding function
      alpha_range (np.array, optional): a parameter to pass the confounding function
  
  Returns:
      X (np.matrix): a feature matrix
      p (np.array): a propensity score vector between 0 and 1
      treatment (np.array): a treatment vector (1 if treated, otherwise 0)
      y (np.array): an outcome vector
docstr_tok: ["Return","the","sensitivity","data","by","different","method","Args",":","method","(","list","of","str",")",":","a","list","of","sensitivity","analysis","method","sample_size","(","float",",","optional",")",":","ratio","for","subset","the","original","data","confound","(","string",",","optional",")",":","the","name","of","confouding","function","alpha_range","(","np.array",",","optional",")",":","a","parameter","to","pass","the","confounding","function","Returns",":","X","(","np.matrix",")",":","a","feature","matrix","p","(","np.array",")",":","a","propensity","score","vector","between","0","and","1","treatment","(","np.array",")",":","a","treatment","vector","(","1","if","treated",",","otherwise","0",")","y","(","np.array",")",":","an","outcome","vector"]
code: def sensitivity_analysis(
      self,
      methods,
      sample_size=None,
      confound="one_sided",
      alpha_range=None,
  ):
      """Return the sensitivity data by different method
  
      Args:
          method (list of str): a list of sensitivity analysis method
          sample_size (float, optional): ratio for subset the original data
          confound (string, optional): the name of confouding function
          alpha_range (np.array, optional): a parameter to pass the confounding function
  
      Returns:
          X (np.matrix): a feature matrix
          p (np.array): a propensity score vector between 0 and 1
          treatment (np.array): a treatment vector (1 if treated, otherwise 0)
          y (np.array): an outcome vector
      """
      if alpha_range is None:
          y = self.df[self.outcome_col]
          iqr = y.quantile(0.75) - y.quantile(0.25)
          alpha_range = np.linspace(-iqr / 2, iqr / 2, 11)
          if 0 not in alpha_range:
              alpha_range = np.append(alpha_range, 0)
      else:
          alpha_range = alpha_range
  
      alpha_range.sort()
  
      summary = []
      for method in methods:
          sens = self.get_class_object(method)
          sens = sens(
              self.df,
              self.inference_features,
              self.p_col,
              self.treatment_col,
              self.outcome_col,
              self.learner,
              sample_size=sample_size,
              confound=confound,
              alpha_range=alpha_range,
          )
  
          if method == "Subset Data":
              method = method + "(sample size @{})".format(sample_size)
  
          sens_df = sens.summary(method=method)
          summary.append(sens_df.values.tolist()[0])
  
      summary_df = pd.DataFrame(summary, columns=SUMMARY_COLS)
  
      return summary_df
  
imports: import logging
  import numpy
  import pandas
  from collections import defaultdict
  import matplotlib.pyplot
  from importlib import import_module
label_desc: Use image node_id 5 for calling the Sensitivity obj's underlying member method code with example usage: obj.sensitivity_analysis(methods, sample_size, confound, alpha_range) and returns: summary_df