【问题标题】:SPSS loop ROC analysis for lots of variablesSPSS循环ROC分析大量变量
【发布时间】:2018-10-11 18:15:51
【问题描述】:
在 SPSS 中,我想对大量变量 (989) 执行 ROC 分析。问题是在选择所有变量时,它给了我AUC值和曲线,但如果在任何989个变量中的任何一个缺失值中,则立即排除案例。因此,我正在考虑将单变量 ROC 分析放入循环中。但我不知道该怎么做。我已经将所有变量命名为 var1、var2、var3、...、var988、var989。
那么,如何循环 ROC 分析? (检查“将用户缺失的值视为有效”并不能解决问题)
谢谢!
【问题讨论】:
标签:
loops
statistics
spss
roc
【解决方案1】:
这听起来像是 python 的工作。它通常是 SPSS 中此类工作的最佳解决方案。
所以这里有一个可以帮助你的框架。我非常不熟悉 ROC-Analysis,但这种通用模式适用于各种循环场景:
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"
如果您输入“set mprint on”。 “开始程序”上方的一行。你会在查看器中看到它的确切作用。