如何使用SPSS进行PSM操作

在维基百科里这么描述PSM:

In the statistical analysis of observational data, propensity score matching (PSM) is a statistical matching technique that attempts to estimate the effect of a treatment, policy, or other intervention by accounting for the covariates that predict receiving the treatment.

简单来说,很多观察性研究对比两组患者的某个终点,但因为两组患者的基础水平的因素存在差异,而这些因素跟研究者观察的终点存在相关性。为了减少该参数掺杂引起的共线性,通常的做法是分层分析。但分层分析往往很大程度上损失病例量,于是出现了这个叫做PSM(又叫做PSA [PS analysis])的操作。PSM操作的主要目的是在两组患者之间挑出基础水平相当的患者,以进行进一步的分析。

SPSS也可以进行这项操作,huangwei98已经详细描述了如何配置SPSS插件,但有些掺杂信息干扰。我重新做了整理,并将主要的工具上传到了网盘里以方便下载。我使用的是SPSS 18.0。

  1. 安装SPSS 18.0统计软件——我提供的几个小工具都是针对SPSS 18.0的,所以建议安装这个版本;
  2. 这个链接下载工具包,解压缩,获得3个文件(R-2.8.1-win32.exe,PASWStatistics_RPlugIn_1802_win32.exe,psmatching_2.spd),以下都用得着。注:这3个文件对应的是18.0版本的SPSS,如果你使用的是更高版本的SPPS,请在如下步骤的“原始下载链接”中下载对应的文件);
  3. 运行R-2.8.1-win32.exe(原始下载链接),安装R for Windows;
  4. 运行PASWStatistics_RPlugIn_1802_win32.exe(原始下载链接),安装SPSS的R语言插件;
  5. 打开SPSS软件,在菜单里操作:Utilities – Custom Dialogs – Install Custom Dialog (实用程序 – 定制对话框 – 安装自定义对话框),选中psmatching_2.spd文件(原始下载链接)以安装。
  6. 重启SPSS,在Analysis(分析)菜单里就可以看到PS Matching了。

2013-07-27_psm

其实说到底很简单,就是Thoemmes君开发了SPSS的PS Mathcing的插件,因为这个插件是R语言写的,所以要额外安装SPSS的R语言扩展。简单用了一下,这个插件存在一些不足,Thoemmes的论文里也提及了:只能做两组间的匹配,不能有更多组;需要平衡的因素不能有缺失值(一个缺失值也不能容忍)。更详细的信息请参考Thoemmes的论文吧,里面写的非常清楚。

 

主要参考资料:

  1. huangwei98: 为了propensity score analysis(倾向性分析),真是曲折也!
  2. Thoemmes, F: Propensity score matching in SPSS

《如何使用SPSS进行PSM操作》有35个想法

    1. 抱歉,我不清楚。
      建议使用spss18,否则下载几个相对应的小工具会非常麻烦,甚至需要去spss网站上注册。

      1. 我已经下了spss18了,但貌似窗口太长,都没有出现确定键,不知道怎么回事

  1. 您好,我按照您上面的指导安装了spss18.0和那三个文件,“分析”下面出现了“PS matching”,但是psm对应的窗口太长,出现不了确认键,和上面一位评价出现的问题一样,能否帮个忙告诉接下来的程序该怎么用?如何使用psm去匹配两个表格里的数据?谢谢您啦!

    1. 你在比较小屏幕的电脑上(例如笔记本)使用PSM?在宽度比较小的屏幕上的确可能不显示确认键。换个显示器,或者把屏幕的分辨率调节到更低吧。
      PSM过程比较简单,就是选定你要配对的指标,选择配对的比例,然后就可以自动给你配对,生成psweight变量了。具体怎么弄,还需要自己摸索。

  2. 读了您的文章我现在已经装上了ps matching插件。谢谢!
    但是,后续的操作如何进行?我简单测试了一下后发现表中多出了ps和psweight两列,从哪能看到配对信息?谢谢!

    1. psweight里的数值就是配对信息,在干预组和对照组之间寻找相同psweight数值的个体做配对即可。

  3. 按照您说的安装后,在运行的时候出现错误,找不到cme程序包,找不到matching 程序。。。。这种信息出现了一大屏,请问应该怎么解决啊?麻烦了!

  4. 如果方便的话能不能把您的SPSS 18.0的安装软件发到我的邮箱一下:514740546@qq.com,我下的是PASW版,我在想会不会是这个的问题,麻烦了!谢谢!

  5. 已经安装好了 您能再发个关于具体怎么做PSM的贴子吗? 拜托啦

  6. 楼主您好,我按照您说的进行安装,但是到第五步安装psmatching_2.spd时,总是提示说无法将定制对话框安装到任何指定的位置。请问楼主要怎么解决。跪谢!!!

      1. 哎,这么奇怪,反复试了好多次都是这样

      2. 无法将定制对话框安装到任何指定的位置,我也遇到这个问题,弄了一晚上……快哭了……楼主行行好帮帮我……

    1. 是由于权限的问题。控制面板\用户帐户和家庭安全\用户帐户\更改用户账户控制设置,把设置调到最低,确定后重新启动电脑。进去SPSS再次安装就好了。

      1. 你好,我按照您的提示修改了,可还是上面的提示,还有什么办法么?万分感谢哦

  7. 楼主您好,按照您的介绍,终于顺利安装上了PSM,但是点击PSM该功能时,出现的窗口很长,看不到下面的确认键,缩放对话框也解决不了,请问下楼主有没有解决的方法,万分感谢!

    1. 你在比较小屏幕的电脑上(例如笔记本)使用PSM?在宽度比较小的屏幕上的确可能不显示确认键。换个显示器,或者把屏幕的分辨率调节到更低吧。

  8. 您好楼主,我现在遇到的问题是按照您的方法安装了SPSS18.0, R-2.8.1-win32.exe,PASWStatistics_RPlugIn_1802_win32.exe,psmatching_2.spd, 能够在SPSS中看到PS macthing, 并把数据导入后进行倾向性评分后出现的结果中会出现如下结果:
    ”载入需要的程辑包:MASS
    ##
    ## MatchIt (Version 2.4-10, built: 2009-02-02)
    ## Please refer to http://gking.harvard.edu/matchit for full documentation
    ## or help.matchit() for help with commands supported by MatchIt.
    ##
    Package SparseM (0.80) loaded.
    To cite, see citation(“SparseM”)

    载入需要的程辑包:nlme
    载入需要的程辑包:lattice
    载入需要的程辑包:randomForest
    randomForest 4.5-30
    Type rfNews() to see new features/changes/bug fixes.

    How to use CEM? Type vignette(“cem”)
    Warning message:
    In OK() : No warnings in estimation or matching procedure,“
    没有办法像Thoemmes统计结果那样的完全,不知道是什么问题,能否给我解答。还是你没有遇到上述问题。

  9. 您好,我按你链接中的插件下载后,走后一步自定义安装psmatching-2.spd显示无法安装。要怎么处理这种情况?谢谢

      1. 谢谢你的回复,我以管理员身份运行后已安装PSmatching模块。但我代入数据进行匹配后显示如下:
        您的 PASW Statistics 试用期将在 20 日后到期。

        GET
        FILE=’C:\Users\l\Desktop\数据\miRNA病例(62人).sav’.
        DATASET NAME 数据集1 WINDOW=FRONT.
        ADD FILES /FILE=*
        /FILE=’C:\Users\l\Desktop\数据\miRNA对照不含肥胖(549人).sav’.
        EXECUTE.
        SET SEED = 1234.
        SET PRINTBACK=NONE.
        Warning message:
        In library(MatchIt, logical.return = TRUE) :
        不存在叫’MatchIt’这个名字的程辑包
        Warning message:
        In library(RItools, logical.return = TRUE) :
        不存在叫’RItools’这个名字的程辑包
        Warning message:
        In library(cem, logical.return = TRUE) : 不存在叫’cem’这个名字的程辑包
        install.packages(“MatchIt”, repos = “http://cran.r-project.org”)里有警告:
        没有’lib’这个变元:改用C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions
        install.packages(“MatchIt”, repos = “http://cran.r-project.org”)里有警告:
        ‘lib=”C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions”‘不可写
        错误于install.packages(“MatchIt”, repos = “http://cran.r-project.org”) :
        无法安装程序包
        install.packages(“RItools”, repos = “http://cran.r-project.org”)里有警告:
        没有’lib’这个变元:改用C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions
        install.packages(“RItools”, repos = “http://cran.r-project.org”)里有警告:
        ‘lib=”C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions”‘不可写
        错误于install.packages(“RItools”, repos = “http://cran.r-project.org”) :
        无法安装程序包
        install.packages(“cem”, repos = “http://cran.r-project.org”)里有警告:
        没有’lib’这个变元:改用C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions
        install.packages(“cem”, repos = “http://cran.r-project.org”)里有警告:
        ‘lib=”C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions”‘不可写
        错误于install.packages(“cem”, repos = “http://cran.r-project.org”) :
        无法安装程序包
        错误于library(MatchIt) : 不存在叫’MatchIt’这个名字的程辑包
        错误于library(RItools) : 不存在叫’RItools’这个名字的程辑包
        错误于library(cem) : 不存在叫’cem’这个名字的程辑包
        Warning message:
        In OK() : No warnings in estimation or matching procedure
        错误: 没有”matchit”这个函数
        SET SEED = 1234.
        SET PRINTBACK=NONE.
        Warning message:
        In library(MatchIt, logical.return = TRUE) :
        不存在叫’MatchIt’这个名字的程辑包
        Warning message:
        In library(RItools, logical.return = TRUE) :
        不存在叫’RItools’这个名字的程辑包
        Warning message:
        In library(cem, logical.return = TRUE) : 不存在叫’cem’这个名字的程辑包
        install.packages(“MatchIt”, repos = “http://cran.r-project.org”)里有警告:
        没有’lib’这个变元:改用C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions
        install.packages(“MatchIt”, repos = “http://cran.r-project.org”)里有警告:
        ‘lib=”C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions”‘不可写
        错误于install.packages(“MatchIt”, repos = “http://cran.r-project.org”) :
        无法安装程序包
        install.packages(“RItools”, repos = “http://cran.r-project.org”)里有警告:
        没有’lib’这个变元:改用C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions
        install.packages(“RItools”, repos = “http://cran.r-project.org”)里有警告:
        ‘lib=”C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions”‘不可写
        错误于install.packages(“RItools”, repos = “http://cran.r-project.org”) :
        无法安装程序包
        install.packages(“cem”, repos = “http://cran.r-project.org”)里有警告:
        没有’lib’这个变元:改用C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions
        install.packages(“cem”, repos = “http://cran.r-project.org”)里有警告:
        ‘lib=”C:/Program Files (x86)/SPSSInc/PASWStatistics18/extensions”‘不可写
        错误于install.packages(“cem”, repos = “http://cran.r-project.org”) :
        无法安装程序包
        错误于library(MatchIt) : 不存在叫’MatchIt’这个名字的程辑包
        错误于library(RItools) : 不存在叫’RItools’这个名字的程辑包
        错误于library(cem) : 不存在叫’cem’这个名字的程辑包
        Warning message:
        In OK() : No warnings in estimation or matching procedure
        错误: 没有”matchit”这个函数

        是我没有在R上安装程序包的原因吗?谢谢,期待你的回复。

  10. 请问按提示安装了psm,也出现了PSM,但是我所有变量都用1和0表示了。但是点击PSM中binary treatment indicator弹出警告列表中不能存在尺度数值变量是怎么回事呢?

    1. 字段类型设定为Numeric还不够,还需要将Measure设定为Nominal才行。如果还不行的话,改成Scale试试。

      1. 安装完,运算出现SET SEED = 1234.
        SET PRINTBACK=NONE
        是怎么回事? 请问这个问题如何解决呢???

发表评论

电子邮件地址不会被公开。 必填项已用*标注