Трансформация переменной в интервал от 0 до 1
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 57 | * Тема: автоматическое масштабирование переменных к интервалу 0-1. * Ключевые слова: преобразование, масштабирование, шкала, переменная, интервал, 0, 1. * Опубликован: 16.06.2008. * Автор: Raynald Levesque. * Перевод: А. Балабанов. * (Вопрос) В массиве имеется 4 переменные. Они имеют разные минимальные и максимальные значения. Я хотел бы отмасштабировать их к интервалу от нуля до единицы. Сейчас я делаю это, записывая синтаксис, в котором в качестве констант фигурируют минимумы и максимумы каждой из переменных, а точнее - вычитаю из каждой переменной её минимум, а затем делю разницу на размах (разницу между максимумом и минимумом), например: COMPUTE scale2=(scale1-0.13)/0.6. * Есть ли способ делать это автоматически, чтобы не приходилось каждый раз для каждой переменной вводить её статистики?. * (Ответ) Размещён в SPSSX-L, автор: Raynald Levesque@videotron.ca. * Загрузим пример данных. GET FILE='c:\program files\spss\employee data.sav'. * Создадим макрос. */////////////. DEFINE !rescale (var=!TOKENS(1) /newvar=!TOKENS(1)) SAVE OUTFILE='c:\temp\data file.sav'. COMPUTE nobreak=1. AGGREGATE OUTFILE=* /PRESORTED /BREAK=nobreak /min=MIN(!var) /max=MAX(!var). COMPUTE range=max-min. * Это будет работать, если в системе десятичным разделителем является точка. В противном случае, скорее всего, возникнет ошибка при исполнении синтаксиса командой INCLUDE ниже. WRITE OUTFILE="C:\temp\rescale.sps" /"COMPUTE " !QUOTE(!newvar) "=(" !QUOTE(!var) "-" min(F12.11) ")/" range(F12.11) ".". EXECUTE. GET FILE='c:\temp\data file.sav'. INCLUDE "C:\temp\rescale.sps". !ENDDEFINE. */////////////. * Пример вызова определённого выше макроса для приведения переменной к масштабу 0-1. SET MPRINT=yes. !rescale var=salary newvar=salary2. SET MPRINT=no. * Покажем, что всё сработало:. GRAPH /SCATTERPLOT(BIVAR)=salary WITH salary2 /MISSING=LISTWISE . * Пример с другой переменной. То же преобразование, но с salbegin. SET MPRINT=yes. !rescale var=salbegin newvar=salbegin2. SET MPRINT=no. * Покажем, что сработало:. GRAPH /SCATTERPLOT(BIVAR)=salbegin WITH salbegin2 /MISSING=LISTWISE . |
Related pages
...