SPSS 在CORRELATIONS 命令上有一个辅助函数来导出相关矩阵。从那里您可以操纵数据以提供符合您标准的相关对。所以首先,让我们做一些假数据来说明。
*Making fake data.
set seed 5.
input program.
loop i = 1 to 100.
end case.
end loop.
end file.
end input program.
dataset name test.
compute #base = RV.NORMAL(0,1).
vector X(20).
loop #i = 1 to 20.
compute X(#i) = #base*(#i/20) + RV.NORMAL(0,1).
end loop.
exe.
现在,我们可以运行CORRELATIONS 命令并将表导出到一个新数据集(我在这里命名为Corrs)。
DATASET DECLARE Corrs.
CORRELATIONS
/VARIABLES=X1 to X20
/MATRIX=OUT('Corrs').
不幸的是,SPSS 返回完整的矩阵(以及有关样本大小的其他信息)。我们只能选择我们感兴趣的行(ROWTYPE_ 列中带有“CORR”的行),然后使用DO REPEAT 将矩阵的上半部分或下半部分设置为系统缺失值。
DATASET ACTIVATE Corrs.
SELECT IF ROWTYPE_ = "CORR".
*Now only making lower half of matrix.
COMPUTE #iter = 0.
DO REPEAT X = X1 TO X20.
COMPUTE #iter = #iter + 1.
IF #iter > ($casenum-1) X = $SYSMIS.
END REPEAT.
我将它们设置为系统缺失值,因为下一部分我将使用VARSTOCASES 重塑数据。默认情况下,这会删除缺失值,因此我们最终不会有多余的相关对。
VARSTOCASES
/MAKE Corr FROM X1 TO X20
/INDEX X2 (Corr)
/DROP ROWTYPE_.
RENAME VARIABLES (VARNAME_ = X1).
现在您有了关联对列表,只需选择符合您条件的关联即可。
SELECT IF ABS(Corr) >= .5.
可以很容易地将相关对制作成一个 MACRO 函数来返回对列表。下面是该函数,重新创建了此处使用的确切步骤。
DEFINE !CorrPairs (!POSITIONAL !CMDEND)
DATASET DECLARE Corrs.
CORRELATIONS
/VARIABLES=!1
/MATRIX=OUT('Corrs').
DATASET ACTIVATE Corrs.
SELECT IF ROWTYPE_ = "CORR".
COMPUTE #iter = 0.
DO REPEAT X = !1.
COMPUTE #iter = #iter + 1.
IF #iter > ($casenum-1) X = $SYSMIS.
END REPEAT.
VARSTOCASES
/MAKE Corr FROM !1
/INDEX X2 (Corr)
/DROP ROWTYPE_.
RENAME VARIABLES (VARNAME_ = X1).
!ENDDEFINE.
该宏仅获取变量列表(在活动数据集中)来获取相关性,并返回名为 Corrs 的第二个数据集,其中相关对和变量名称在 X1 和 X2 列中定义。那么上面的宏定义好之后,上面的步骤就可以通过下面简单的重新创建了。
!CorrPairs X1 to X20.
SELECT IF ABS(Corr) >= .5.
EXECUTE.