Найти случайные пары с теми же характеристиками (поиск «близнецов»)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | * Допустим, я хочу сравнить группу пациентов с повышенным уровнем холестерина (cholest=1) с группой пациентов * с нормальным уровнем холестерина (cholest=0). * Мне требуется для каждого пациента из первой группы найти "близнеца" из второй группы (по заданным переменным). * Автор: rlevesque@videotron.ca, размещено в новостной группе spss 20 апреля 2000 г. **** Создадим пример данных для иллюстрации. NEW file. input program. SET SEED=246813579. loop caseid=1 to 200. leave caseid. compute age=RND(uniform(4)). COMPUTE gender=UNIFORM(1)>.5. COMPUTE bloodpr=RND(UNIFORM(4)). COMPUTE diab=UNIFORM(1)>.5. COMPUTE cholest=UNIFORM(1)>.5. FORMATS caseid TO cholest (F8.0). end case. end loop. end file. end input program. execute. *** Далее - решение задачи. *Создадим критерий сопоставления на основе комбинации уровней контрольных переменных. * (полагаю, что значения всех таких переменных варьируются от 0 до 9). COMPUTE criter=age+gender*10+bloodpr*100+diab*1000. COMPUTE draw=UNIFORM(1). SORT CASES BY cholest criter. RANK VARIABLES=draw (A) BY cholest criter /RANK /PRINT=YES /TIES=MEAN . SORT CASES BY criter rdraw. COMPUTE criter2=criter*1000+rdraw. SAVE OUTFILE='c:\\temp\\all_data.sav'. SELECT IF (cholest=0). SAVE OUTFILE='c:\\temp\\normal pop.sav'. GET FILE='c:\\temp\\all_data.sav'. SELECT IF (cholest=1). RENAME VARIABLES (caseid=caseid1) (age=age1) (gender=gender1) (bloodpr=bloodpr1) (diab=diab1) (rdraw=rdraw1). SAVE OUTFILE='c:\\temp\\pathological pop.sav'. MATCH FILES /FILE=* /TABLE='c:\\temp\\normal pop.sav' /RENAME (cholest = d0) /BY criter2 /DROP= d0. *Сохраним только те наблюдения, для которых нашлась пара. SELECT IF ~MISSING(caseid). |
Related pages
...