Группировка на квинтили на основе равных вкладов в общую сумму
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 | * Группировка на квинтили на основе равных вкладов в общую сумму. (из SPSS AnswerNet) Задача: ввести группирующую переменную, которая принимала бы значения от 1 до 5. Значение 5 должно объединять наименьшие значения исходной переменной, которые дают суммарный 20%-й вклад в общую сумму значений. Значение 4 - следующую группу более крупных значений, которые также дают 20%-й вклад в общую сумму. И так далее. Значение 1 объединяет наиболее крупные значения, также дающие 20%-й вклад в общую сумму. В решении есть небольшой трюк, связанный с вычислением накопленной суммы переменной, значения которой группируем. Там используется команда LEAVE. Сама группировка после вычисления общей и накопленной сумм производится серией инструкций IF. *****. INPUT PROGRAM. LOOP #I = 1 TO 100. COMPUTE salesvol = TRUNC(UNIFORM(100000)) + 1 . END CASE. END LOOP. END FILE. END INPUT PROGRAM. COMPUTE cust_id = $casenum. COMPUTE dummy = 1. EXE. AGGREGATE /OUTFILE='AGGR.SAV' /BREAK=dummy /totl_vol = SUM(salesvol). MATCH FILES /FILE=* /TABLE='Aggr.sav' /BY dummy. EXE. SORT CASES BY salesvol (A) . COMPUTE cm_sale = cm_sale + salesvol. LEAVE cm_sale. FORMATS salesvol totl_vol cm_sale (DOLLAR8). EXE. IF cm_sale<=totl_vol quintile1=1. IF cm_sale< .8*totl_vol quintile1=2. IF cm_sale< .6*totl_vol quintile1=3. IF cm_sale< .4*totl_vol quintile1=4. IF cm_sale< .2*totl_vol quintile1=5. EXE. |
Related pages
...