SPSS Statistics

 View Only
  • 1.  Propensity Score Matching

    Posted Wed February 17, 2021 12:33 PM
    Hello everyone,
    I am trying to perform a propensity score matching using SPSS 27.0. In my extension hub, it shows me that FUZZY extension and PSM is installed. However, when I try to run the PSM, I'm receiving the following error message: 

    * Propensity Score Matching.
    begin program python3.
    import spss, random, spssaux, codecs
    try:
    import FUZZY
    except:
    print("This procedure requires the FUZZY extension command which is not installed.")
    parts = [int(i) for i in FUZZY.__version__.split(".")]
    if parts < [1,3,0]:
    raise EnvironmentError("This procedure requires version 1.3.0 or later of FUZZY")
    ds = spss.ActiveDataset()
    if ds =="*":
    ds = "D" + str(random.random())
    spss.Submit("DATASET NAME " + ds)
    ds = codecs.encode(ds) # must use code page rep here
    matchgroup = "M" + str(random.random()) #temporary variable
    tempdsname = "D" + str(random.random())
    lrcmd = spssaux.u(r"""LOGISTIC REGRESSION VARIABLES treatment
    /METHOD=ENTER Age Sex AML_type ELN
    /SAVE=PRED(Prop).""")
    try:
    spss.Submit(lrcmd)
    except:
    raise ValueError("Logistic Regression step failed")
    fuzzycmd = spssaux.u(r"""FUZZY BY=Prop SUPPLIERID=VAR00001 NEWDEMANDERIDVARS=Test2
    GROUP=treatment EXACTPRIORITY=FALSE
    MATCHGROUPVAR=%(matchgroup)s FUZZ=0.5 DS3=%(tempdsname)s
    /OPTIONS SAMPLEWITHREPLACEMENT=FALSE MINIMIZEMEMORY=TRUE SHUFFLE=FALSE .
    DELETE VARIABLES %(matchgroup)s.
    DATASET ACTIVATE %(ds)s.
    DELETE VARIABLES %(matchgroup)s.
    DATASET COPY Test.
    DATASET ACTIVATE Test.
    SELECT IF treatment EQ 1.
    DATASET ACTIVATE %(tempdsname)s.
    DATASET ACTIVATE Test.
    ADD FILES /FILE=* /FILE=%(tempdsname)s.
    EXECUTE.
    DATASET CLOSE %(tempdsname)s.""" % locals())
    spss.Submit(fuzzycmd)
    end program.
    This procedure requires the FUZZY extension command which is not installed.
    Traceback (most recent call last):
    File "<string>", line 7, in <module>
    NameError: name 'FUZZY' is not defined
    begin program.
    _SLINE OFF.

    Could anyone tell me what I am doing wrong?
    Thank you in advance,
    Tim

    ------------------------------
    Tim Sauer
    ------------------------------

    #SPSSStatistics


  • 2.  RE: Propensity Score Matching

    IBM Champion
    Posted Wed February 17, 2021 01:14 PM
    Run this code in a syntax window to check on FUZZY.  Post the output.

    begin program python3.
    import FUZZY
    print(FUZZY)
    end program.

    If FUZZY is not there, you might need to install it while running Statistics in administrator mode.

    ------------------------------
    Jon Peck
    ------------------------------