SPSS循环ROC分析大量变量

SPSS loop ROC analysis for lots of variables

在SPSS中,我想对很多变量(989)进行ROC分析。问题是,在选择所有变量时,它会给我 AUC 值和曲线,但如果在 989 个变量中的任何一个变量中有一个缺失值,就会立即排除该案例。因此,我正在考虑将单变量 ROC 分析放入循环中。但我不知道该怎么做。我已经将所有变量命名为 var1、var2、var3、...、var988、var989。

那么,我该如何循环进行 ROC 分析? (检查 "Treat user-missing values as valid" 不起作用)

谢谢!

这听起来像是 python 的工作。它通常是 SPSS 中此类工作的最佳解决方案。

下面是一个可能对您有所帮助的框架。我对 ROC 分析非常不熟悉,但这种通用模式适用于各种循环场景:

begin program. 
import spss

for i in range(spss.GetVariableCount()): 
    var = spss.GetVariableName(i)
    cmd = r'''
* your variable-wise analysis goes here --> use spss syntax, beetween the three ' no     
* indentation is needed. since I dont know what your syntax looks like, we'll just 
* run descriptives and frequencies for all your variables as an example
descriptives %(var)s
/sta mean stddev min max. 
fre %(var)s. 
'''%locals()
    spss.Submit(cmd)
end program. 

只是为了快速回顾一下它的作用:在第 4 行中,我们告诉 spss 执行以下操作的次数与活动数据集中的变量一样多,在您的例子中为 989。在第 5 行中,我们定义了一个名为 var 的 (python) 变量,其中包含索引 i 处变量的变量名称(0 到 988 - 数据集中索引为 0 的第一个变量)。然后我们定义一个命令让spss执行。我喜欢把它放在原始字符串中,因为这样可以简化诸如提供目录之类的事情。原始字符串由 r''' 定义并以 ''' 结束。在第12行,"spss.Submit(cmd)"将"cmd = "之后定义的命令交给spss执行。但最重要的是,只要变量名称出现在您的语法中,请将其替换为“%(var)s”

如果您在 "begin program." 上方放置 "set mprint on." 一行,您将在查看器中确切地看到它的作用。