为分类和回归任务动态调用输入变量

Dynamically calling input variables for classification and regression tasks

我有大量文件具有相同的目标变量,但大量的输入变量因文件而异。我想对一个新文件进行分类和回归分析,而不是每次都明确列出输入变量。

我可以使用 spssinc select variables 通过匹配变量名称中的正则表达式在 spss 中定义输入变量列表。对于大多数任务,我会 运行 使用宏的循环,因此我不需要显式列出变量。然而,这在执行许多分类和回归任务时并不合适,因为我只查看 运行 对单个目标变量进行一次分析,并且只需要定义输入变量列表。

下面是一个示例数据集(比我正在使用的数据集小得多)。

data list list/ID (A3) Sex (A1) Age (F2.0) Education (A5) Test_price01 Test_new01 Test_income01 Test_exp01 Test_01 Test_house01 Test_car01 Test_boat01 Test_var01 Test_var02 .
begin data
    ID1 M 20 Prim 1 2 3 4 5 6 7 8 9 9
    ID2 F 22 High 5 4 3 6 3 8 1 2 5 8
    ID3 M 30 High 0 8 6 4 2 1 3 5 7 9
end data.
dataset name survey.

我想 运行 一个判别分析,我可以手动使用下面的代码:

DATASET ACTIVATE survey.
DISCRIMINANT
  /GROUPS=Age(20 30)
  /VARIABLES=Test_price01 Test_new01 Test_income01 Test_exp01 Test_01 Test_house01 Test_car01 
    Test_boat01 Test_var01 Test_var02
  /ANALYSIS ALL
  /PRIORS EQUAL 
  /CLASSIFY=NONMISSING POOLED MEANSUB.

我已经能够使用 spssinc select variables 定义输入变量,使用正则表达式 'Test_'

spssinc select variables macroname="!Test_Vars" /properties pattern=".*Test_".

如果我能以某种方式使用这个列表(或其他方法)来动态更新我的分类和回归任务的输入变量,那就太好了。

这正是您使用 spssinc select variables 中的宏名称的目的 - 您将其放在语法中而不是变量列表中。
所以在你的语法中它应该是这样的:

DISCRIMINANT
  /GROUPS=Age(20 30)
  /VARIABLES= !Test_Vars
  /ANALYSIS ALL
  /PRIORS EQUAL 
  /CLASSIFY=NONMISSING POOLED MEANSUB.