Построить все простые уравнения линейной и логистической регрессий
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~ Цель макросов - автоматически оценить все возможные простые уравнения регрессии для одной или нескольких зависимых переменных и большого числа независимых переменных. Это полезно, если у вас есть множество потенциальных предикторов, и вы хотите их быстренько "прогнать", но не желаете двадцать раз править синтаксис. Автор: Marta **************************************************************************** * 'Макросы для построения всех простых уравнений линейной и логистической регрессий ****************************************************************************. * Пример данных для использования с обоими макросами. INPUT PROGRAM. - VECTOR V(20). - LOOP #I = 1 TO 100. - LOOP #J = 1 TO 20. - COMPUTE V(#J) = NORMAL(1). - END LOOP. - END CASE. - END LOOP. - END FILE. END INPUT PROGRAM. execute. * Допустим, что первые 3 переменные могут играть роль зависимых переменных, * а остальные 17 - роль предикторов. * Для обоих макросов имена зависимых переменных должны быть записаны как y1, y2, ... * а имена независимых - как x2, x3... * Так что мы переименуем то, что у нас есть на данный момент. RENAME VARIABLES (v1 to v3 = y1 to y3). RENAME VARIABLES (v4 to v20 = x1 to x17). * (чтобы две команды выше сработали, переменные должны располагаться в файле данных * по соседству). ********************************************************************. * (1) Линейная регрессия. * Определение макроса. DEFINE lirdoall(!POSITIONAL !TOKENS(1) /!POSITIONAL !TOKENS(1)) DO IF $CASENUM=1. !DO !i=1 !to !1. !LET !yvar=!concat('y', !i). !DO !j=1 !to !2. !LET !xvar=!concat('x', !j). WRITE OUTFILE "c:\\windows\\temp\\alltests.sps" /"REGRESSION" /" /DESCRIPTIVES MEAN STDDEV" /" /STATISTICS COEFF CI R ANOVA" /" /DEPENDENT "!quote(!yvar) /" /METHOD=ENTER " !quote(!xvar) " .". * Я добавила в выдачу кое-какие статистики по моему выбору. * Можете изменить состав, если хотите, но будьте аккуратны с символами / и " . !DOEND. !DOEND. END IF. EXECUTE. INCLUDE FILE="c:\\windows\\temp\\alltests.sps". !ENDDEFINE. * Синтаксис вызова макроса: имя_макроса 'число_зависимых_переменных' 'число_независимых_переменных'. * Следующий вызов макроса создаст и запустит файл синтаксиса, который построит * 3x17=51 уравнение регрессии. SET MPRINT=yes. LIRDOALL 3 17. SET MPRINT=no. ********************************************************************. * (2) Логистическая регрессия. * Определение макроса. DEFINE lordoall(!POSITIONAL !TOKENS(1) /!POSITIONAL !TOKENS(1)) DO IF $CASENUM=1. !DO !i=1 !to !1. !LET !yvar=!concat('y', !i). !DO !j=1 !to !2. !LET !xvar=!concat('x', !j). WRITE OUTFILE "c:\\windows\\temp\\alltests.sps" /"LOGISTIC REGRESSION VAR="!quote(!yvar) /" /METHOD=ENTER " !quote(!xvar) /" /PRINT=GOODFIT CI(95) .". * Я запросила выдачу кое-каких статистик. * Исправьте, если хотите, но будьте аккуратны с символами / и " . !DOEND. !DOEND. END IF. EXECUTE. INCLUDE FILE="c:\\windows\\temp\\alltests.sps". !ENDDEFINE. * Перед вызовом макроса... Нам ведь потребуются двоичные зависимые переменные для примера... RECODE y1 TO y3 (Lowest thru 0.501=0) (0.501 thru Highest=1) . VALUE LABELS y1 TO y3 0 'No' 1 'Yes'. EXECUTE . * Синтаксис вызова макроса: имя_макроса 'число_зависимых_переменных' 'число_независимых_переменных'. * Следующий вызов макроса создаст и запустит файл синтаксиса, который построит * 3x17=51 уравнение регрессии. LORDOALL 3 17. |