捕获输入值自定义对话框SPSS以在Python程序

时间:2017-07-11 16:48:05

标签: python spss

我正在为Python中的自定义对话框编写扩展命令。但是我很难从CDB的UI中捕获输入变量。输入变量如下:
1. %% dep_variable %%
这是因变量
的单变量选项 2。%% indep_variable %%
这是自变量的多变量选项

这是现在的代码。我打印自变量的回归系数。但是我遇到了两个问题:
1.执行逻辑回归的行无法读取%% dep_var %%或%% indep_var %%。当我创建变量(dep_var和indep_var_list)并将%% dep_var %%或%% indep_var %%放在引号之间时也不行。我做错了什么?
2.我无法迭代%% indep_var %%,我应该如何转换%% indep_var %%所以它是我可以迭代的自变量列表?

BEGIN PROGRAM.
import spss,spssaux

dep_var="%%dep_var%%"
indep_var_list="%%indep_var%%"

cmd="LOGISTIC REGRESSION VARIABLES dep_var\
  /METHOD=ENTER indep_var_list\
  /CRITERIA=PIN(.05) POUT(.10) ITERATE(20) CUT(.5)."
handle,failcode=spssaux.CreateXMLOutput(
cmd,
omsid="LOGISTIC REGRESSION",
visible=False)

for i in indep_var_list:
    result=spssaux.GetValuesFromXMLWorkspace(
    handle,
    tableSubtype="Variables in the Equation",
    rowCategory= indep_var_list[i],
    colCategory="B",
    cellAttrib="text")
    print "The coefficient is: ", result[0]
END PROGRAM

1 个答案:

答案 0 :(得分:0)

首先,您的cmd变量正在插入文字名称dep_var和indep_var_list。您需要这些变量的值,因此在语法中它们应该写为%% dep_var %%等,或者应该编写命令以使用变量替换,例如, """ LOGISTIC ... VARIABLES%s ...""" %(dep_var ...)

其次,您的indep_var_list变量是单个字符串,而不是列表。你需要先转换它,例如,
indep_var_list = indep_var_list.split()