如何找到频率最高的组合?

时间:2016-11-06 14:49:46

标签: combinatorics spss

我有一个SPSS数据集,有500多名受访者,他们可能有18种症状。

每个症状都有自己的变量症状01 = 1表示他们有症状1症状02 = 0表示他们没有症状2等等

我想知道的是,在我的数据集中,3种症状的组合更频繁。例如,有多少人有症状1,5和6;有多少人有症状1,2和3等。

我并不是说他们只有这些症状。他们可以拥有其他人。我只是想知道我的数据集中哪三组症状更频繁。 它有很多组合,你会怎么做?

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

请注意下面的宏使用变量名称Symptom1,Symptom2等'而不是"症状01","症状02" ...

首先创建一些样本数据来处理:

data list list/Symptom1 to Symptom18.
begin data
1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1
1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0
0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0
1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0
0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1
1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1
1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0
0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1
1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0
end data.

现在定义一个带有三个循环的宏:
编辑 - 此版本考虑了重复的症状组合

define AllCombsOf3 ()
!do !vr1=1 !to 18
!do !vr2=!vr1 !to 18
!do !vr3=!vr2 !to 18
!if (!vr2<>!vr1 !and  !vr2<>!vr3) !then
compute !concat("C_",!vr1,"_",!vr2,"_",!vr3)= !concat("Symptom",!vr1)=1 & !concat("Symptom",!vr2)=1 & !concat("Symptom",!vr3)=1 .
!ifend
!doend
!doend
!doend
!enddefine.

运行宏并显示想要的结果:

AllCombsOf3.
means  C_1_2_3 to C_16_17_18.

编辑2 - 四种症状版本的新宏

define AllCombsOf4 ()
!do !vr1=1 !to 18
!do !vr2=!vr1 !to 18
!do !vr3=!vr2 !to 18
!do !vr4=!vr3 !to 18
!if (!vr2<>!vr1 !and  !vr2<>!vr3  !and  !vr3<>!vr4) !then
compute !concat("C_",!vr1,"_",!vr2,"_",!vr3,"_",!vr4)=  
    !concat("Symptom",!vr1)=1 & !concat("Symptom",!vr2)=1 &   
    !concat("Symptom",!vr3)=1 & !concat("Symptom",!vr4)=1 .
!ifend
!doend  !doend  !doend  !doend
!enddefine.

AllCombsOf4.
means  C_1_2_3_4 to C_15_16_17_18.