* Тема: автоматическое масштабирование переменных к интервалу 0-1. * Ключевые слова: преобразование, масштабирование, шкала, переменная, интервал, 0, 1. * Опубликован: 16.06.2008. * Автор: Raynald Levesque@videotron.ca. * Перевод: А. Балабанов. * Размещение: http://www.spsstools.ru/Syntax/Transform/RescaleVariableToBeBetween0and1.txt (.sps). * (Вопрос) В массиве имеется 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. 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 .