Вычислить моду в пределах блока вопросов каждого наблюдения
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 | *(Вопрос) Среди моих данных есть 4 блока по 5 однотипных вопросов (с одинаковыми категориями ответов) в каждом. Для каждого наблюдения в каждом блоке мне надо найти модальное значение ответа. *(Ответ) Размещён в SPSSX-L 28.08.2001, автор: rlevesque@videotron.ca. * Если распределение ответов будет мультимодальным, будет выбран ответ с наибольшим кодом! *Генерация примера данных. INPUT PROGRAM. SET SEED=987651423. VECTOR q(20F8.0). LOOP id=1 TO 25. + LEAVE id. + LOOP #=1 TO 20. + COMPUTE q(#)=TRUNC(UNIFORM(5)+1). + END LOOP. + END CASE. END LOOP. END FILE. END INPUT PROGRAM. EXECUTE. **** Начало обработки. VECTOR resp=q1 TO q20. LOOP qnb=1 TO 20. COMPUTE resp=resp(qnb). COMPUTE cat=1+TRUNC(qnb/5.1). XSAVE OUTFILE='c:\\temp\\temp.sav' /KEEP=id cat qnb resp. END LOOP. EXECUTE. GET FILE='c:\\temp\\temp.sav'. * Аггрегируем наблюдения по id, cat, resp. Это даст нам частотное распределение вариантов ответов для каждого id внутри каждой категории. AGGREGATE /OUTFILE=* /BREAK=id cat resp /nbresp = N(qnb). * Находим и сохраняем лишь варианты ответов с наибольшими частотами по каждому id и в каждой cat. SORT CASES BY id cat nbresp. ADD FILES FILE=* /BY=id cat /LAST=last. SELECT IF last=1. VARIABLE LABELS nbresp 'Число ответов' resp 'Вариант ответа'. EXECUTE. |