在SPSS中,我想对许多变量(989)进行ROC分析。问题是,在选择所有变量时,会给出AUC值和曲线,但如果在989个变量中的任何一个中都缺少一个值,则会立即排除这种情况。因此,我正在考虑将单变量ROC分析放入循环中。但是我不知道该怎么做。我已经将所有变量命名为var1,var2,var3,...,var988,var989。
那么,我该如何循环进行ROC分析? (选中“将用户缺失的值视为有效”不会解决问题)
谢谢!
答案 0 :(得分:1)
这听起来像是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”代替
如果您将“设置mprint设置为开”。 “开始程序”上方的一行。您会在查看器中确切看到它的作用。