class_docstr: Estimate effect of treatment by finding matching treated and control
  units based on propensity score.
  
  Straightforward application of the back-door criterion.
  
  Supports additional parameters as listed below.
docstr: Fits the estimator with data for effect estimation
  :param data: data frame containing the data
  :param treatment: name of the treatment variable
  :param outcome: name of the outcome variable
  :param effect_modifiers: Variables on which to compute separate
              effects, or return a heterogeneous effect function. Not all
              methods support this currently.
code: def fit(
      self,
      data: pd.DataFrame,
      effect_modifier_names: Optional[List[str]] = None,
  ):
      """
      Fits the estimator with data for effect estimation
      :param data: data frame containing the data
      :param treatment: name of the treatment variable
      :param outcome: name of the outcome variable
      :param effect_modifiers: Variables on which to compute separate
                  effects, or return a heterogeneous effect function. Not all
                  methods support this currently.
      """
      super().fit(data, effect_modifier_names=effect_modifier_names)
      self.symbolic_estimator = self.construct_symbolic_estimator(
          self._target_estimand
      )
      self.logger.info(self.symbolic_estimator)
  
      return self
  
file_path: dowhy/dowhy/causal_estimators/propensity_score_matching_estimator.py
imports: from typing import Any, List, Optional, Union
  import pandas
  from sklearn.neighbors import NearestNeighbors
  from dowhy.causal_estimator import CausalEstimate, CausalEstimator
  from dowhy.causal_estimators.propensity_score_estimator import PropensityScoreEstimator
  from dowhy.causal_identifier import IdentifiedEstimand
label_desc: Use image node_id 2 for calling the PropensityScoreMatchingEstimator obj's underlying member method code with example usage: obj.fit(data, effect_modifier_names) and returns: self