Text
                    •VJL1V1
на ФОРТРАНЕ


System/360 Scientific Subroutine Package (360A-CM-03X) Version III Programmer’s Manual Fourth Edition IBM, Technical Publications Department, N. Y.
СБОРНИК НАУЧНЫХ ПРОГРАММ НА ФОРТРАНЕ Руководство для программиста Выпуск 1 СТАТИСТИКА Перевод с английского С. Я. Виленкина МОСКВА «СТАТИСТИКА» 1974
Сборник научных программ на Фортране. Вып. 1. Ста- С23 тистика. Нью-Йорк, 1960—1970, пер. с англ. (США). М., «Статистика», 19/4. 316 с. В первом выпуске сборника научных программ на Фортране приведены программы обработки статистического материала. Даны алгоритмы и программы для факторного анализа, ранговых критериев и других методов. Для большин- ства методов приведены типовые программы, позволяющие программисту, под- ставив исходные данные, получить результаты статистического анализа (регрес- сионного, факторного и т. д.). Сборник будет полезен для работников, занимающихся программированием на Фортране задач экономики, технических расчетов или научных задач, а также для обучения студентов и инженеров по курсу программирования. Д.-Р l<i~w „ 30502 —145 ..„L _ _ _ с 008/011—мЙиМЯЯЯЯЯМДЙ на 1 Второй «ндекс
f ЛАСТИ ПРИМЕНЕНИЯ Отдельными подпрограммами или их комбинациями можно 1ьзоваться для выполнения указанных функций в следующих частях статистики: пробит анализ; анализ дисперсий (факторное планирование); корреляционный анализ; множественная линейная регрессия; ^"'яговая регрессия; агрессии; ПРЕДИСЛОВИЕ ляция; --'чктр компоненты, варимаксы); т v%rpynn) ’ Исторически сложилось так, что язык Фортран до сих пор не получил достаточно широкого распространения среди программи- стов в нашей стране. Но сейчас, в связи с появлением новых вычис- лительных машин серии ЕС, в математическое обеспечение кото- рых входят трансляторы с Фортрана, интерес к этому языку про- граммирования значительно возрос. Транслятором с Фортрана снабжены и многие другие ЭВМ. Программирование на Фортране достаточно просто и овладеть им можно, изучив любой из имеющихся в настоящее время учеб- ников. Одним из преимуществ этого языка программирования яв- ляется наличие большой библиотеки подпрограмм, охватывающих практически все стороны научно-исследовательских и технических задач. Предлагаемый выпуск состоит из программ для статистических задач. В него включено около одной четверти подпрограмм сбор- ника научных подпрограмм на Фортране, выпущенного фирмой IBM. Во второй выпуск войдут подпрограммы матричной алгебры и линейной алгебры. Все подпрограммы были проверены на машине ICL-4-70 как на наличие синтаксических ошибок, так и на правильность получен- ных результатов. Для этого мы пользовались не только задачами, приведенными в сборнике. Для каждой подпрограммы составля- лась тестовая задача с контролем результатов. Эта огромная работа по подготовке текстов подпрограмм, их трансляции и про- - верке была проведена 3. А. Виленкиной. Можно надеяться, что этот и следующий выпуски помогут значительно быстрее освоить новую серию машин и более продук- тивно их использовать. в
* ^uiviivi (5SP) * — это набор более чем , хжмднрограЛх.. Фортране, разбитых для удобства на две группы: статистическую и математическую**. Более 200 подпро- грамм из них подготовлены как для расчета с одинарной, так и с двойной точностью. SSP представляет собой вычислительные блоки, не связанные с вводом и выводом, которые могут быть соединены с программами пользователя, включающими ввод, вывод или вычисления. Сборник может быть применен для реше- ния большого числа задач в промышленности, науке и в инженер- ных расчетах. В третий вариант сборника научных подпрограмм для системы IBM/360 включены материалы первоначального сборника SSP/360 и, кроме того, более 40 новых математических и статистических подпрограмм, 24 из которых даны как для расчета с одинарной, так и с двойной точностью. Добавлены, например, итерации QR для получения собственных значений матрицы и непараметриче- ский тест Колмогорова—Смирнова. Это руководство содержит достаточно информации, позволяю- щей читателю понимать все подпрограммы этого сборника и поль- зоваться ими. НАЗНАЧЕНИЕ И ЦЕЛЬ СБОРНИКА Сборник научных подпрограмм является совокупностью основ- ных вычислительных программ, которые предназначены для рас- ширения пользователем его собственной библиотеки подпрограмм на Фортране. Хотя этот сборник может обеспечить необходимыми средствами для решения большинства общих задач, встречающихся в инженерном проектировании и науке, однако не следует пола- гать, что эти подпрограммы служат последним словом в статисти- ке или численном анализе. При использовании любого метода пользователь должен понять его возможности и соответствие функциональным требованиям. ♦ Сокращение SSP, применяемое в дальнейшем, получено из исходного наи: менования Scientific Subroutine Package.— Прим, перев. ** Математическая группа составит содержание следующего сборника под- программ.— Прим, перев. Ь
>ЛАСТИ ПРИМЕНЕНИЯ Отдельными подпрограммами или их комбинациями можно ользоваться для выполнения указанных функций в следующих бластях статистики: пробит анализ; анализ дисперсий (факторное планирование); корреляционный анализ; множественная линейная регрессия; пошаговая регрессия; полиномиальная регрессия; каноническая корреляция; факторный анализ (главные компоненты, варимаксы); дискриминантный анализ (на несколько групп); анализ временных рядов; отбор данных и анализ; непараметрические проверки; генераторы случайных чисел (равномерных и нормальных); функции распределения. ХАРАКТЕРИСТИКИ Все подпрограммы свободны от операторов ввода — вывода. Подпрограммы не указывают на фиксированную максимальную длину массивов данных, перечисленных в формальных парамет- рах. Все подпрограммы написаны на Фортране. Многие подпрограммы преобразования матриц обрабатывают симметрические и диагональные матрицы, хранящиеся в экономно уплотненном формате так же, как и матрицы общего типа. Это может значительно сократить расход памяти для больших мас- сивов. Использование наиболее сложных подпрограмм или групп из них иллюстрируется в программной документации примерами основных программ с вводом и выводом. Все подпрограммы документально одинаково оформлены. Все подпрограммы в SSP запрограммированы на подмножестве Фортрана IV, который совместим с Фортраном, предназначенным для системы IBM/360. Многие из больших функций, таких, как статистические, запрограммированы в виде последовательности подпрограмм. В качестве примера применения последовательности подпрограмм в статистической обработке можно назвать фактор- ный анализ. Факторным анализом называется метод анализа взаимной кор- реляции нескольких переменных [10] *. Он определяет отклонения * Эти книги включены нами дополнительно для ознакомления с задачами и методами факторного анализа перед применением соответствующих программ данного выпуска. — Прим, перев. 7
для переменных в исходном ряде, которые можно считать соответ- ствующими меньшему числу базисных (основных) категорий. В сборнике научных подпрограмм факторный анализ обычно вы- полняется путем обращения к пяти подпрограммам: 1. CORRE— нахождение средних, стандартных отклонений и корреляционной матрицы. 2. EIGEN — вычисление собственных значений и соответствую- щих собственных векторов корреляционной матрицы. 3. TRACE — выбор собственных значений, которые больше либо равны контрольным значениям, указанным пользователем. 4. LOAD — вычисление матрицы факторов. 5. VARMX — выполнение варимаксного вращения матрицы фак- торов. Многократное использование подпрограмм иллюстрируется тем, что подпрограмма CORRE также применяется в множественной линейной регрессии и в канонической корреляции. Подпрограммой EIGEN пользуются в канонической корреляции как программой третьего уровня. ОБЩИЕ ПРАВИЛА ПОЛЬЗОВАНИЯ ОСНОВНЫЕ ПРАВИЛА Обращение ко всем подпрограммам сборника осуществляется при помощи стандартного фортранного оператора CALL. Подпро- граммы предназначены для вычислений и не содержат обращения к устройствам ввода—вывода. Пользователь должен их обеспе- чить, как часть собственной программы, каким-либо вводом, выво- дом и другими операциями, необходимыми для полного решения своей задачи. Кроме того, пользователь должен указывать опера- тор DIMENSION для всех матриц, действующих в подпрограмме SSP, и для матриц, применяемых в его программе. Подпрограммы, содержащиеся в SSP, ничем не отличаются от любых подпро- грамм пользователя. Все обычные правила Фортрана, касающиеся подпрограмм, применяются и к ним, за исключением того, что длина массива в подпрограммах SSP не обязательно должна быть такой же, как в обратившейся программе. Оператор CALL передает управление подпрограмме, где под- ставляет на место формальных параметров значения фактических аргументов, указанных в операторе CALL, если эти аргументы являются константами или переменными. Если же аргументы являются именем (идентификатором) массива или функции, то вызванной подпрограмме передается адрес массива или функ- ции. Аргументы в операторе CALL должны совпадать по порядку, числу и типу с соответствующими аргументами в подпрограмме. Числа в подпрограмму могут быть переданы либо как переменные в списке аргументов, либо как константы в этом списке. Например, если программист, пользуясь подпрограммой GMADD из SSP, же- 8
лает сложить матрицу AR1 с матрицей AR2, чтобы образовать матрицу AR3, и если AR1 и AR2 являются матрицами, состоящими из 10 строк и 20 колонок, то он может применить два следующих метода: Метод 1 CALL GMADD (ARI, AR2, AR3, 10, 20) Метод 2 N = 10 М=20 CALL GMADD (ARI, AR2, AR3, N, M) Многие подпрограммы в SSP требуют наименования подпро- граммы-функции пользователя или функции Фортрана .как эле- мента списка аргументов оператора CALL. Если программа поль- зователя содержит такое CALL, то наименование функции, нахо- дящейся в списке аргументов, также должно находиться в опера- торе EXTERNAL в начале программы. Например, в SSP для подпрограммы интегрирования Рунге— Кутта (RK2) требуется функция, задаваемая пользователем, кото- рый должен запрограммировать эту функцию и передать ее наи- менование в RK2 как параметр оператора CALL. Если пользова- тель желает проинтегрировать функцию ^- = 3.0х + 2.0у. в его программе будет записано: EXTERNAL DERY CALL RK2 (DERY, ...) RETURN END Подпрограмма его функции будет: FUNCTION DERY (X, Y) DERY = 3.0 ♦X-4-2.0 *Y RETURN END Основная программа пользователя передает наименование запрограммированной функции в RK2, включая это наименование в оператор CALL и в оператор EXTERNAL. RK2, в свою очередь, обращается к функции DERY каждый раз, когда требуется вычис- 9
лить значение производной. Подпрограмма RK2 не преобразуется программистом. Формальный идентификатор функции FUN в подпрограмме RK2 во время ее исполнения в действительности заменяется иден- тификатором, указанным пользователем в операторе CALL. ОПЕРАЦИИ НАД МАТРИЦАМИ Необходимо специально рассмотреть подпрограммы, которые выполняют операции над матрицами. Эти подпрограммы имеют две характеристики, которые касаются формата данных в па- мяти, — размерность переменных и уплотнение памяти. Размерность переменных Подпрограммы, работающие с матрицами, могут оперировать с массивами любой размерности, ограниченными в большинстве случаев только доступным объемом памяти и условиями числен- ного анализа. Подпрограммы не содержат фиксированного макси- мума длины для массивов данных, указанных в их формальных параметрах. Изменение размерности переменных допускается в SSP при помощи вектора памяти. Согласно этому методу каждый столбец матрицы следует непосредственно за предыдущим столбцом. Как при векторном, так и при двумерном хранении матриц дан- ные размещаются в памяти по строкам и столбцам в соответствии с оператором размерности у пользователя. Если, однако, матрица меньше отведенного поля, то эти два вида хранения не совместимы. Рассмотрим распределение памяти, когда двумерный массив чисел размером 5x5 находится в памяти для поля 10X10. Если программист пользуется переменными с двойной индексацией в обычном для Фортрана смысле, то 25 элементов данных будут размещены так, как показано на рис. 1. Данные с двойной индек- сацией хранятся в Фортране по столбцам и размещены вдоль столбцов, указанных в операторе DIMENSION. Таким образом, в данном примере последовательность ячеек памяти будет содер- жать элементы данных с 1-го по 5-й, 5 пустых ячеек, элементы данных с 6-го по 10-й, 5 пустых ячеек и т. д. Подпрограммы мат- риц поместят соответствующий вектор в массив для запоминания по столбцам, что означает размещение данных в памяти таким образом, как показано на рис. 2. Как было указано раньше, если описанное поле имеет тот же самый размер, что и матрица, то эти два метода будут давать оди- наковое расположение данных в памяти и пользователь может действовать, как в обычном случае с двойной индексацией. Одна- ко, если описанное поле больше, чем массив, и если пользователь хочет употребить подпрограмму SSP, то он должен быть уверен, что его данные размещены так, как вектор, показанный на рис. 2. Подпрограмма ARRAY служит в SSP для перевода из одной формы хранения в другую. Подпрограмма LOC позволяет обра^ щаться к элементам массива как к элементам вектора, Ю
СтолбёЦ 1 23456789 10 1 (1) (6) (11) (16) (21) 2 (2) (7) (12) (17) (22) 3 (3) (8) (13) (18) (23) Строка 4 (4) (9) (14) (19) (24) 5 (5) (10) (15) (20) (25) 6 7 8 9 10 * Рис. 1. Размещение в памяти данных с двойной индексацией (1) (П) (21) (2) (12) (22) (3) (13) (23) (4) (14) (24) (5) (15) (25) (6) (16) (7) (17) (8) (18) (9) (19) (Ю) (20) Рис. 2. Вектор памяти Уплотнение памяти Многие подпрограммы в SSP могут работать как с уплотнен- ными формами матриц, так и с нормальными формами. Пользуясь этим свойством, которое называется «способом хранения», можно получить значительное уменьшение памяти, отводимой для данных больших массивов специального вида. Имеется три способа хра- нения: общий, симметричный и диагональный. При общем способе все элементы матрицы находятся в памяти, при симметричном — только верхняя треугольная часть матрицы сохраняется по столбцам в последовательных ячейках памяти (при этом предполагается, что соответствующие элементы нижнего треугольника имеют то же значение). При диагональном способе только диагональные элементы матрицы помещаются в последо- вательных ячейках памяти. (Подразумевается, что все недиаго-
нальные элементы равны нулю.) В этом случае применяется спо- соб векторного хранения. На рис. 3 представлены способы хранения. Симметрическая матрица показана на рис. 3, А. Если этот массив будет обрабаты- ваться с помощью матричных подпрограмм SSP с различными способами пользования памятью, то он будет размещен так, как показано на рисунке 3, В, где верхняя треугольная часть массива соответствует способу хранения с кодом 1. Симметрическая мат- рица порядка N может храниться как вектор, занимающий — N*(N+l)/2 ’ячеек вместо N*N 1 I ыолбец 1 ЯЧ€ек- Для больших матриц это ' сэкономит почти половину ячеек. 2 I Столбец 2 Эффект при хранении диаго- * J нальным способом может быть еще более значительным. Диаго- 3 нальная матрица порядка N мо- 5 Столбец j жет занимать как вектор только N ячеек. На рис. 3, С представлена диагональная матрица 3x3. Если в этот массив будет обрабатывать- 1 о о 0 2 0 ООО 1 2 3 D Столбец 1 Столбец 2 Столбец 3 Рис. 3. Способы хранения ся матричными подпрограммами SSP с возможными модифика- циями хранения, то необходимо хранить только диагональные эле- менты матрицы (см. рис. 3, D). Соответствующий способ хране- ния имеет код 2. При общем способе хранения матрица порядка NXM для раз- мещения требует вектора дли- ной N*M; при этом применяет- ся способ хранения с кодом 0. Таким образом, если программист хочет пользоваться подпрограм- мой SSP для матрицы А общего типа или симметрической мат- рицы В, или диагональной матрицы С (все матрицы имеют размер- ность 10X10 или меньше), оператор размера для этой подпро- граммы будет: DIMENSION А(100), В(55), С(10) Обращение к элементам матрицы Подпрограммой LOC в сборнике научных подпрограмм можно пользоваться для обращения к элементам матрицы, хранящейся в векторном виде. При обращении к ней можно включать другие способы уплотнения памяти. Запись обращения для LOC следую- щая: CALL LOC (I, J, IJ, N, M, MS) Возможности подпрограммы LOC следующие: если обращение относится к элементу в I-й строке в J-м столбце матрицы А, размер- 12
ность которой N X М, и если код способа хранения MS, то обра- щение CALL к подпрограмме LOC, как записано выше, дает в ре- зультате вычисление индекса IJ, если необходим элемент A (IJ). Параметрами, записанными I, J, N, М, MS, могут быть либо целые переменные, либо целые константы. Параметр IJ должен быть целой переменной. Заметим, что пользователь должен описать массив А как одномерно описанную переменную с ограничениями для данной системы Фортрана. Для иллюстрации использования подпрограммы LOC в случае, когда необходимо обратиться к элементу второй строки и второго столбца симметрической матрицы 3X3 (см. рис. 3,А), храня- щейся, как показано на рис. 3,В (способ хранения имеет код 1), обращение будет иметь вид: CALL LOC (2, 2, IJ, 3, 3, 1) Значение IJ, вычисленное LOC, равно 3. Это означает, что дан- ный элемент будет третьим элементом специально расположенной симметрической матрицы (рис. 3,В). Если код способа хранения предназначен для симметрической матрицы, когда ее верхняя треугольная часть находится в памяти, а I и J относятся к элемен- ту в нижней треугольной части матрицы, то IJ будет содержать индекс, относящийся к элементу, находящемуся в верхнем тре- угольнике. Таким образом, если пользователю требуется элемент третьей строки первого столбца матрицы, показанной на рис. 3, А, а массив хранится согласно рис. 3,В, оператор CALL LOC (3, 1, IJ, 3, 3, 1) даст IJ значение, равное 4, т. е. четвертый элемент на рис. 3, В. Если матрица хранится, как показано на рис. 3, D (способ хране- ния имеет код 2), и LOC применяется при вычислении индекса внедиагонального элемента (I =/= J), то в результате IJ = 0. В дей- ствительности это означает, что элемента нет в памяти. В этой ситуации IJ не должен применяться как индекс. Ниже дана иллю- страция, как принимать во внимание эти условия н как действовать в тех случаях, когда способ хранения не известен. Если пользователь хочет получить переменную X, равную эле- менту в третьей строке четвертого столбца матрицы А размерно- стью 10 X Ю либо симметричного, либо диагонального или общего вида, указанная программа может быть применена для любого спо- соба хранения в следующем виде: CALL LOC (3, 4, IJ, 10, 10, MS) X=0.0 IF (I J) 20, 30, 20 20 X=A(IJ) 30....... (Предполагается, что MS получило значение 0,1 или 2 в каком-то более раннем месте программы.) Эта последовательность тогда установит истинное значение X при любом способе хранения. Вто- 13
рой и третий операторы обращают внимание на внедиагональное условие для матрицы с кодом хранения 2. В особом случае LOC может подсчитать общую длину массива В памяти таким образом: CALL LOC (N, М, IJ, N, M, MS) Например, если у пользователя имеется матрица 3x3, располо- женная по способу хранения 1 (рис. 3, В), оператор CALL LOC (3, 3, I J, 3, 3, 1) даст в результате IJ, равное 6. Это не только истинное значение индекса при обращении к элементу 3,3, но также и истинная длина вектора в памяти. Информацией, содержащейся в пятом параметре обращения (число столбцов) к LOC, в действительности пользуются при вычислениях, выполняемых LOC. Пятый параметр включен в обра- щение для случая, когда пользователь желает распространить LOC для применения других форм хранения данных. МОДИФИКАЦИЯ ПРОГРАММ РАСШИРЕННЫЕ ВОЗМОЖНОСТИ ФОРТРАНА Программы SSP могут служить и при применении транслято- ров с Фортрана с большими возможностями. Например, расширенная система Фортрана включает подпрог- раммы с несколькими точками входа. Поэтому некоторые под- программы SSP можно объединять. Чтобы проиллюстрировать это, подпрограммы GMADD и GMSUB (сложение и вычитание матриц общего вида) могут быть объединены, как показано на рис. 4. Это не оказывает влияния на работу подпрограммы, но сокращает общую требуемую память. SUBROUTINE GMADD (А, В, R, N, М) DIMENSION А(1), В(1), R(l) К=0 GO ТО 10 ENTRY GMSUB (А, В, R, N, М) К=1 10 NM = N*M DO 40 1 = 1, NM IF (К) 20, 20, 30 20 R(I) =A(I)+B(I) GO TO 40 30 R(I) ==A(I) — B(I) 40 CONTINUE RETURN END Рис. 4. Многократность точек входа 14
ОПТИМИЗАЦИЯ ВРЕМЕНИ Подпрограммы в SSP резервируют место в памяти для данных. Сокращение времени за счет увеличения поля возможно несколь- кими путями. Например, многие подпрограммы SSP работают с подпрограммой LOC, применяя вектор памяти и обращаясь к ука- заниям о модификации памяти. Исполнение этой подпрограммы может быть значительно сокращено при помощи LOC на языке Ассемблер. (Расширенная версия LOC введена в Фортран.) Другой возможностью сокращения времени является включе- ние функции LOC в каждую подпрограмму. Таким образом, можно экономить время на повторных обращениях к LOC. Это приводит к сокращению времени исполнения (но ценой увеличения памяти подпрограмм) и облегчению использования других модификаций памяти, таких, как хранение треугольных матриц и хранение по строкам, а не по столбцам. В приведенной ниже подпрограмме показан метод соединения сложения матрицы и LOC в одной подпрограмме. Перевод комментариев в тексте * 1. Проверка способа хранения. 2. Вычисление длины вектора. 3. Сложение матриц одинакового способа хранения. 4. Получение способа хранения выдаваемой матрицы. 5. Размещение элементов в выдаваемой матрице. 6. Размещение элементов в матрице А. 7. Размещение элементов в матрице В. 8. Сложение матриц различного способа хранения. 9. Включение LOC, ДВОЙНАЯ ТОЧНОСТЬ Точность вычислений большинства подпрограмм в SSP в зна- чительной степени зависит от числа значащих цифр, доступных для арифметических операций. Обращение матриц, интегрирова- ние и многие статистические подпрограммы подпадают под эту категорию. Поэтому пользователь при желании может работать с вариантом подпрограмм двойной точности. Большинство подпро- грамм SSP обеспечивает как одинарную, так и двойную точность. В остальных подпрограммах инструкции по преобразованию под- программ в двойную точность включены как часть описания под- * Нумерация комментариев соответствует операторам комментариев в тексте подпрограммы.— Прим, перев. 15
SUBROUTINE MAC X(А.В,R,N,М,М$А,MSB) DIMENSION А(1>,8(1),RC1) 45 !JA3IR Ael=o.o с 1 (F(1JA)46,48.46 tF(MsAsMSB) зо.ю.зо 46 AEL-ACIJA). с 2 C » 10 ND=N*M 48 KX=1 TFCMSA-1) 24,22*23 MS=MSB 22 ND«(ND*N)/2 GO TO 65 60 TO 24 50 IJB^IR 23 NOeN BEL’O.O С 3 TF(TJB) 55.60.35 24 00 25 Ts1.N0 55 BEL=B(IJB) 25 R(J)=A(!)*B(T> G 8 RETURN 60 R(I JR)saEL + BEI С 4 RETURN 30 MTEST«MSA*MS8 C 9 MSR»0 65 TF<MS-1) 70.75,90 TF(MteST) 35.35.32 70 (R8N*(J-1)*t 32 MSRsi GO TO 95 35 00 60 J=1.M 75 IF(I-J) 80.85.85 DO 60 t»1,N 80 irs|*(J*J-J)/2 С 5 GO to 95 KX»-1 85 rR«J*( !«t-r)/2 MS=MSR GO to 95 60 to 65 90 'R*0 40 ! JR=Ift TF(l-jl 95.9J.93 с 6 92 tR«l KX=O 95 fF(KX> 40,45,50 M$=M$A END GO TO 65 16
программы. Операторы двойной точности Фортрана включены в каждую из этих подпрограмм в виде карт комментариев. В боль- шинстве случаев вариант подпрограммы с двойной точностью мо- жет быть получен удалением перед трансляцией буквы С из пер- вого столбца карт операторов двойной точности. В одних случаях дополнительные инструкции даны для изме- нения обращения к программам Фортрана, например SQRT на DSQRT и ABS на DABS. В других случаях даются новые кон- станты. Использование подпрограмм с двойной точностью требует знаний правил Фортрана, относящихся к двойной точности. Ниже приведены следующие основные правила. 1. Любая вещественная переменная, вектор или наименование массива, находящиеся в списке аргументов CALL к подпрограм- мам с двойной точностью, должны быть описаны в вызывающей программе, как это положено для двойной точности. Например, если подпрограмма обращения матрицы MINV в сборнике науч- ных программ преобразуется для двойной точности и если про- грамма пользователя содержит оператор CALL MINV (ARI, N, DET, MY1, MY2), где ARI — наименование массива (вещественного с двойной точ- ностью) ; N — размерность (целой переменной); DET — детерминант (вещественная переменная с двойной точ- ностью) ; MY1 — рабочий вектор (целый массив); MY2 — рабочий вектор (целый массив), то программа должна иметь в начале оператор спецификации DOUBLE PRECISION ARI, DET Другие переменные являются целыми и их не следует вклю- чать в оператор спецификации. 2. Любая функция пользователя в операторе CALL для под- программы SSP двойной точности должна быть запрограммиро- вана как функция двойной точности. Например, программа Рун- ге—Кутта выполняет интегрирование функции, называемой FUN, употребляя подпрограмму RK2. Эта программа может быть по- строена таким образом: FUNCTION FUN (X, Y) FUN=1.1 *Х RETURN END Если пользуются RK2 двойной точности, то и функция должна быть также двойной точности. Функция будет записана: DOUBLE PRECISION FUNCTION FUN (X, Y) DOUBLE PRECISION X, Y I U. Г»цн»и 17 I МТУ
FUN=1.1 *Х RETURN END ФОРМАТ ДОКУМЕНТАЦИИ Основная часть этого руководства состоит из документации от-, дельных подпрограмм и образцов программ. ОПИСАНИЕ ПОДПРОГРАММ Оглавление подпрограмм и примеров программ как по типу, так и по алфавиту предназначено для облегчения поиска любой частной подпрограммы. Каждое описание подпрограмм содержит распечатку программ и в некоторых случаях — математическое описание. Первая часть распечатки программы является последовательностью карт ком- ментариев, содержащих наименование подпрограмм, описок фор- мальных параметров, описания параметров, замечания, наименова- ние других требуемых подпрограмм и метод*. Ссылки на книги и периодические издания вынесены в конец сборника. В математиче- ских описаниях в большинстве случаев не приводится математи- ческий вывод. В основном в них указано, какие математические операции фактически выполняются в подпрограмме. Некоторая часть статистических функций выполнена как последовательность обращений к подпрограммам SSP. Объяснение такой последова- тельности находится непосредственно перед описанием первой под- программы, которая специфична для этой функции. ОПИСАНИЕ ПРИМЕРОВ ПРОГРАММ Список примеров программ приведен в приложении. Каждый пример программы состоит из детального описания, включающего информацию о задаче, программу, ввод, вывод, пре- образования программы, инструкции по работе, сообщения об ошибках, время работы и машинную распечатку программы, ввод- ных данных и результатов, выдаваемых на печать. Примеры про- грамм выбраны для иллюстрации последовательностей подпро- грамм SSP, комплексов подпрограмм или применения одного из представителей большой совокупности простых подпрограмм (на- пример, сложение матриц). Для расширения возможности применения примеров программ в качестве составной части введены некоторые специальные под- программы, которые могут быть полезны программисту. В них входят: HIST — печать гистограммы частот; * В русском издании вместо самих карт дан перевод содержания этих карт.-^- Прим, перев, 15
MATIN — считывание матрицы, вводимой в оперативную па- мять в векторной форме для матричных подпро- грамм SSP; PLOT —распечатка графика нескольких переменных отно- сительно базовой переменной; MXOUT — распечатка матрицы, хранимой в векторной форме SSP. Распечатка перечисленных подпрограмм включена после доку- ментации примеров программ. Колоды перфокарт на Фортране составляют часть примера программы на исходном языке на от- веденной магнитной ленте. Примеры программ подготовлены для исполнения на системе IBM/360 с 32К байтами (8К слов), применяющей основной Форт- ран (на ленте). Инструкции по преобразованию примеров про- грамм для различных объемов данных включены в документацию. Кроме того, те примеры программ, которые иллюстрируют потен- циальную возможность включения подпрограмм двойной точности, имеют операторы двойной точности в виде карт комментариев. Эти карты включены в колоду перфокарт примера программы на исходном языке. ПРИМЕЧАНИЯ К РАБОТЕ Подпрограммы SSP, которые будут наиболее часто использо- ваться, рекомендуется предварительно протранслировать и поме- стить в устройство хранения резидентной части системы Фортрана. В случае использования основного Фортрана (на ленте) это будет библиотечная часть системной ленты. Информация по преобразо- ванию системы для включения подпрограмм пользователя нахо- дится в соответствующем справочнике Фортрана для программи- стов. Подпрограммы SSP используются при помощи тех же ме- тодов, что и подпрограммы пользователя. Если подпрограммы не помещены на устройство хранения резидентной части системы Фортрана, то в каждую конкретную программу необходимо каж- дый раз включать соответствующую подпрограмму. КЛАССИФИЦИРОВАННЫЙ ПЕРЕЧЕНЬ ПОДПРОГРАММ И ПРИМЕРОВ ПРОГРАММ (Подпрограммы, добавленные в третий вариант, помечены звездочками) СТАТИСТИКА Предварительная обработка данных Стр. TALLY — суммы, средние, стандартные отклонения, мини- мумы и максимумы ..................................... 22 19
'1 Стр. । BOUND — отбор наблюдений, находящихся в заданных границах................................ 23 SUBST — выборка подпоследовательности из матрицы на- блюдений ............................................. 25 ABSNT — определение пропущенных данных........... 27 ТАВ1 —табулирование данных (одна переменная) . . 28 ТАВ2 — табулирование данных (две переменные) ... 29 SUBMX — построение сокращенной матрицы........... 37 Корреляция и регрессия (сглаживание, факторизация) CORRE — средние, стандартные (среднеквадратические) отклонения и корреляции............................... 38 у. * MISR — средние, стандартные отклонения, третьи и чет- вертые моменты, корреляции, коэффициенты простой регрессии и их стандартные ошибки, выявление возможных пропусков данных ... 41 ORDER — перегруппировка взаимной корреляции .... 47 MULTR — множественная линейная регрессия.............. 48 GDATA —образование матрицы данных для полиномиаль- ной регрессии......................................... 52 * STPRG —пошаговая множественная линейная регрессия 56 * PROBT,— вероятностный анализ......................... 63 CANOR — каноническая корреляция....................... 69 Планируемый анализ (см. сглаживание, регрессия, факторизация) AVDAT —распределение данных в памяти................ 73 AVCAL —операции S и А............................... 75 MEANQ — операция со средними квадратами............. 77 Дискриминантный анализ ' DMATX — средние и матрица дисперсии................ 81 • DISCR —дискриминантная функция..................... 83 Факторный анализ (см. анализ собственных значений) TRACE —накапливаемая процентовка собственных значе- ний ................................................ 87 LOAD — введение фактора............................. 89 VARMX — варимаксное вращение........................ 90 ' Временные ряды (сглаживание) AUTO — автоковариации............................... 97 CROSS — взаимные ковариации......................... 97 20
Стр. SMO — применение коэффициентов фильтра (весов) . . 99 EXSMO — тройная степенная фильтрация.................101 Непараметрические статистики * KOLMO — проверка Колмогорова—Смирнова одной вы- борки ...............................................103 * KOLM2 — проверка Колмогорова — Смирнова двух вы- борок .............................................. 107 * SMIRN — значение распределений пределов Колмогоро- ва—Смирнова . ... ...................................108 CNISQ —проверка х2 Для таблиц смежности.......111 KRANK — ранговая корреляция по Кендэлу........113 * MPAIR —тест рангов значимости по Уилкоксону . ... 117 QTEST —Q-тест Кокрена.........................118 RANK — ранжирование наблюдений................121 * SIGNT —знаковый тест......................... 121 SRANK — ранговая корреляция по Спирмэну.......125 TIE —подсчет связей в ранжируемых наблюдениях 126 TWOAV — дисперсионный статистический анализ по Фрид- ману ...............................................128 UTEST — U-тест по Манну—Уитнею....................' 130 WTEST — коэффициенты согласия по Кендэлу.............131 Генераторы случайных переменных и функции распределения RANDU — равномерное распределение случайных чисел 135 GAUSS — нормальное распределение...............136 * NDTR —функция нормального распределения .... 137 * BDTR — функция бета-распределения.............139 * CDTR — функция распределения х2...............147 * NDTRI — обратная функция нормального распределения 154 Элементарные статистики и разное MOMEN — первые четыре момента........................156 TTEST — проверка среднего в совокупности.............159 * BISER —двухсерийные коэффициенты корреляции . . . 163 * PHI —Ф-коэффициенты.................................164 * POINT — точечно-двухсерийный коэффициент корреляции 168 * TETRA — тетрахорические коэффициенты корреляции . . 170 * SRATE — коэффициенты дожития........................175 ОПИСАНИЕ ПОДПРОГРАММ И ИХ РАСПЕЧАТКИ Ниже приводятся распечатки подпрограмм. Этим подпрограм- мам предшествует краткое описание, необходимое для понимания распечатки. 21
СТАТИСТИКА Предварительная обработка дйййЫЯ Подпрограмма TALLY Назначение Вычисление суммы, среднего, стандартного (среднеквадратического) откло- нения, минимума, максимума -для всех переменных последовательности или вы- бранной из нее подпоследовательности наблюдений. Обращение CALL TALLY (A, S, TOTAL, AVER, SD, VMIN, VMAX, NO, NV) Описание параметров A — матрица наблюдений, NO на NV. S — вводимый вектор, обозначающий выбираемую подпоследователь- ность А. Принимаются в рассмотрение только те наблюдения из А, у которых S (J) не равно нулю. Длина вектора равна NO. TOTAL — выводимый вектор сумм по каждой переменной. Длина вектора равна NV. AVER — выводимый вектор средних по каждой из переменных. Длина вектора равна NV. SD — выводимый вектор стандартных отклонений для каждой из пе- ременных. Длина вектора равна NV. VMIN— выводимый вектор минимумов по каждой из переменных. Длина вектора равна NV. VMAX — выводимый вектор максимумов по каждой из переменных. Длина вектора равна NV. NO — число наблюдений. NV — число переменных в4 каждом наблюдении, Примечания Нет. Требуемые подпрограммы и функции Нет. Метод Все наблюдения, соответствующие ненулевым элементам вектора S, -анали- зируются для каждой переменной в матрице А. Сумма накапливается, и одно- временно отыскиваются максимальное и минимальное значения. После этого под- считываются средние и стандартные отклонения. Знаменатель для стандартного отклонения на единицу меньше числа проведенных наблюдений. Перевод комментариев в тексте 1. Очистка выводимых векторов и подготовка VMIN и VMAX. 2. Проверка вектора выбора подпоследовательности. 3. Вычисление суммы, минимума и максимума. 4. Вычисление среднего и среднеквадратического отклонения. 22
SUBROUTINE TALLYСА» S.TOTAL.AVER.SO.VMIN,VMAX,NO»NV) DIMENSION A(1)•S(1)»TOTAL<1)•AVER<1)»SO(1).VMIN(1),VMAX(1> C 1 00 « K’l.NV T0TAL(K)s0.0 AVER(K)s0.0 S0(K)=0.0 VMIN(К)•0E75 1 VMAX(K)s-1.0E7S C. 2 SCNTsQ.O 00 7j«1»N0/ IJ3J-N0 IFCS(J))2.7.2 2 SCNT=SCNT*1.0 C 5 00 6 f=1»NV (J«IJ+NO TOTALCI)’TOTAL(I>♦А С IJ) I *(A(IJI-VMTNCI)) 3.A.4 3 VMIN(I)=A(1J ) A (FCACIJ)-VNAX<I)) 6,6.5 5 VMAX(I)«A(IJ) 6 SO(D«SOC !)*A( t J )*A( IJ ) 7 CONTINUE C * 00 8 I«1.NV AVER(t)«TOTAL(I>/SCNT 8 SDH)«SQRT(ABSC<SD(I)-TQTAL<I)^TOTAL(I)/SCNT)/(SCNT-1,0))) RETURN EnO Подпрограмма BOUND Назначение Определение из последовательности (или подпоследовательности) наблюде- ний числа наблюдений, находящихся ниже двух границ, заданных для каждой переменной, между ними и выше них. 23
Обращение CALL BOUND (A, S, BLO, BHI, UNDER, BETW, OVER, NO, NV) Описание параметров A—матрица наблюдений NO на NV. S — вводимый вектор, обозначающий выбираемую подпоследователь- ность А. Рассматриваются только те наблюдения из А, у кото- рыгх S(J) Ф 0. Длина вектора равна NO. BLO — вводимый вектор нижних границ для всех переменных. Длина вектора равна NV. BHI — вводимый вектор верхних границ всех переменных. Длина век- тора равна NV. UNDER — выводимый вектор, обозначающий для каждой переменной число наблюдений, находящихся под нижней границей. Длина век- тора NV. BETW — выводимый вектор, обозначающий для каждой переменной число наблюдений, равных или находящихся между нижней и верхней границами. Длина вектора равна NV. OVER — выводимый вектор, обозначающий для каждой переменной число наблюдений, находящихся выше верхней границы. Длина век- тора равна NV. NO — число наблюдений. NV — число переменных для каждого наблюдения. Примечания Нет. Требуемые функции и подпрограммы Нет. Метод Проверяется каждая строка (наблюдений) матрицы А, соответствующая ненулевым элементам вектора S. Выбранные наблюдения сравниваются с ука- занными нижними и верхними границами переменных и итог накапливается в векторах UNDER, BETWEEN и OVER. SUBROUTINE BOUND(A,S,Bio.6НI.UNDER,BETW,OVER.NO»NV) DIMENSION AC1),S( 1) .BLOC 1). BHI C1),UNDER <1), BETWd ) .OVER(1 > ( Продолжение) • 1 IFCACIJ)-BLO(I)) 5,5»? 00 1 Кз1,NV 3 |F(A( IJ)-BHHI )) 4.4.6 UNDER(K)=0.0 C 4 BETW(K)=0.0 4 6ETW(I)kBETWCI)+1.0 1 OVER(K)=0.0 GO TO ? c 2 5 UNDERfI)=UNDER(I)♦).0 00 8 JS1.N0 GO TO 7 IJsJ-NO 6 OVER(I)=0VER(I)*1.0 4F(S(J>) 2.8, 7 CONTINUE c 3 8 continue 2 00 7 isl.NV RETURN IJ«IJ*NQ END 24
Перевод комментариев в тексте 1. Очистка выводимых векторов. 2. Проверка вектора подпоследовательности. 3. Сравнение наблюдений с границами. 4. Счет. Подпрограмма SUBST Назначение Образование вектора подпоследовательности, указывающего, какие наблю- дения в последовательности удовлетворяют определенным условиям, налагае- мым на переменные. Обращение CALL SUBST (А, С, R, В, S, NO, NV, NC) Параметр В должен быть определен при помощи оператора EXTERNAL в вызывающей программе. Описание параметров А — матрица наблюдений NO на NV. С — вводимая матрица 3 на NC условий, которые будут приняты во внимание. Первый элемент каждого столбца в С представляет собой номер перемен- ной (номер столбца в матрице А), которая будет проверена. Второй эле- мент каждого столбца — это отношение, закодированное следующим обра- зом: 1 —для LT (меньше чем); 2 — для LE (меньше либо равно); 3-— для EQ (равно); 4 — для NE (не равно); 5 — для GE (больше либо равно); 6 — для GT (больше чем). Третьим элементом в каждом столбце записывается величина, служащая для сравнения с наблюдаемыми значениями. Например, следующий столбец в С 2. 5. 92.5 означает, что вторая переменная проверяется (не больше ли она, чем 92.5, или не равна ли ему). R — рабочий вектор, применяемый для хранения промежуточных результатов вышеприведенной проверки отдельных наблюдений. Если условия удовле- творены, то R (I) получает значение 1. Если условия не удовлетворены, то R (I) получает значение 0. Длина вектора NC. В — указанное пользователем наименование подпрограммы. Эта подпрограмма состоит из булевского выражения, связывающего промежуточные значения, хранящиеся в векторе R. В качестве булевских операторов применяются * вместо И, 4- вместо ИЛИ. Пример SUBROUTINE BOOL (R, Т) DIMENSION R (3) T = R(1)* (R(2)+R(3)) RETURN END 25
Вышеприведенное выражение служит для проверки истинности R(1).AND.(R(2).OR.R(3)) S — выводимый вектор, указывающий для каждого наблюдения, вы- полнено или нет условие В. Если выполнено—S(I) не равно нулю. Если не выполнено — S(I) равно нули*. Длина вектора равна NO. NO — число наблюдений. NV — число переменных. NC — число основных условий, которые должны быть выполнены. Примечания Нет. Требуемые подпрограммы и функции В — наименование подпрограммы, задаваемой пользователем, может быть произвольным (например, BOOL), но подпрограмма SUBST всегда обращается к ней, как к В. Для того чтобы подпрограм- ма SUBST могла это сделать, наименование подпрограммы, даваемое пользователем, должно быть определено оператором EXTERNAL в вызывающей программе. Наименование должно быть перечислено в операторе «CALL SUBST» (см. обращение, приведенное выше). }Летод Для каждого наблюдения выполняются следующие действия. Матрица ус- ловий анализируется для определения переменных, подлежащих проверке. Фор- мируется промежуточный вектор R. После этого вычисляются булевские выра- жения для образования элементов, соответствующих наблюдениям, в подпосле- довательности вектора S. SUBROUTINE $UBST(A»C»R«8,$»NO»NV«NC) QsA(!A)-C<K+2) DIMENSION A (1>»С(1)»R<1)•S<1> GO T0(1.2.3,4.5.6).IGO 00 9 I31.NO l IFCQ) 7.8.8 IQ=1-NO 2 IFCQ)7.7.8 K»-2 IFCQ)8,7.8 00 8 4 IFCQ)7.8.? < 1 5 IF(Q)8.7.7 R(J)aO,O 6 IF(Q)8,8.7 ? R(J)s1.0 C 2 8 CONTINUE U«C(K> C A 9 CALL 8(R.S<I>> IA=IQ*IZ*NO IGOSCCK*1> RETURN END C 5 Перевод комментариев в тексте 1. Очистка вектора. 2. Определение элемента в матрице наблюдений и соответствующего ему кода. 26
3. Формирование вектора R. 4. Вычисление вектора S. Подпрограмма ABSNT Назначение Проверка ни отсутствующие и нулевые значения в каждом наблюдении матрицы А. Обращение CALL ABSNT (A, S, NO, NV) Описание параметров А — матрица наблюдений NO на NV. S — выводимый вектор длиною NO, указывающий следующие коды для каждого наблюдения: 1 — нет ни пропусков, ни нулевых значений; О — либо отсутствует хотя бы одно значение, либо хотя бы одно значение равно нулю. NO — число наблюдений. NV — число переменных в каждом наблюдении. Примечания Нет. Требуемые пюдпрограммы и функции Нет. Метод Проверяется каждая строка (наблюдение) матрицы А. Если в ней нет от- сутствующих или нулевых значений, то в S (J) помещается 1. Если хотя бы одно значение отсутствует или равно нулю, то в S (J) помещается О. SUBROUTINE ABSNT(Л»S»NO»NV) DIMENSION 00 20 J=1.N0 TjsJ-NO S(J)=1.0 00 1=1» NV IJ=IJ*NO TF(ACtJ)) 10»5»TO 5 S(J)=O CO TO 20 10 CONTINUE 20 CONTINUE RETURN
Подпрограмма ТАВ1 Эта подпрограмма для выбранной переменной в матрице наб- людений табулирует частоты и частости (в процентах) попадания в интервалы классификации. Размер интервала вычисляется по формуле b_ UBOs-UBOt ,п UBO2 —2 ’ где UBOi — заданная нижняя граница; UBO2 — заданное число интервалов; UBO3 — заданная верхняя граница. Если иВО1 = иВО3, то подпрограмма определяет минимальное и максимальное значения переменной и пользуется ими. Просмот- ром таблицы пользуются для получения частот Fi в i-м интервале классификации для переменной, где i=l, 2, .... UBO2. После этого каждая частота делится на число наблюдений п для получения ча- стости (в процентах): Кроме того, для переменной вычисляются следующие стати- стики: сумма 7'=1Ь„, (3) где / — выбранная переменная; среднее стандартное отклонение ПОДПРОГРАММА ТАВ1 Назначение Табуляция для выбранной переменной в матрице наблюдений А (или в под- последовательности матрицы А) частот и частостей (в процентах) попадания в интервалы классификации. Кроме того, для той же переменной вычисляется сумма, среднее, среднее квадратическое отклонение (стандартное отклонение), минимум и максимум. Обращение CALL ТАВ1 (A, S, NOVAR, UBO, FREQ, PCT, STATS, NO, NV) 28
Описание параметров А — матрица наблюдений NO на NV. S — вводимый вектор, задающий подпоследовательность А. Рас- сматриваются только те значения из А, которым соответствуют ненулевые значения S(J). Длина вектора NO. NOVAR — табулируемая переменная (ее номер). UBO — вводимый вектор, дающий нижний предел, число интервалов и верхний предел табулируемой переменной в UBO(l), UBO(2) и UBO(3) соответственно. Если нижний предел равен верхнему, то программа использует минимальное и максимальное значе- ния переменной. Число интервалов UBO(2) должно включать две ячейки для значения переменной выше и ниже пределов. Длина вектора равна 3. FREQ — выводимый вектор частот. Длина вектора равна UBO(2). PCT — выводимый вектор частостей. Длина вектора равна UBO(2). STATS —выводимый вектор окончательных статистик, т. е. сумма, сред- нее, среднеквадратическое, минимум и максимум. Длина вектора равна 5. NO — число наблюдений. NV — число переменных в каждом наблюдении. Примечания Нет. Требуемые подпрограммы и функции Нет. Метод Размер интервала вычисляется либо по заданной информации, либо по ми- нимуму значений переменной NOVAR. Частоты и частости (в процентах) вы- числяются одновременно с окончательными статистиками. Знаменатель средне- квадратического отклонения на единицу меньше числа наблюдений. Перевод комментариев в тексте 1. Вычисление минимума и максимума. 2. Определение пределов. 3. Очистка выводного поля. 4. Вычисление размера интервала. 5. Проверка вектора подпоследовательности. 6. Вычисление суммы и частот. 7. Вычисление частостей. 8. Вычисление среднего и среднеквадратического отклонения. (Распечатку подпрограммы см. на стр. 30—31). Подпрограмма ТАВ2 Эта подпрограмма выполняет двумерную классификацию ча- стот, процентного выражения частостей и других статистических характеристик в заданных интервалах классификации для двух вы- бранных переменных в матрице наблюдений. Размер интервала для каждой переменной вычисляется по сле- дующей формуле: bj где UBOij — заданная нижняя граница; UBO2j — заданное число интервалов; UBOs^ — заданная верхняя граница /= 1,2. ивозу—иво1у иво2, —2 О) 29
SUBROUTINE TAB 1 (A.S.NOVAR.OBO,FREQ.PCT,STATSfc«O*NV) DIMENSION A(1),S(1) ,UB0(1), FREQU) .P£T(1) ,$TATS(1) DIMENSION WBOC3> DO 5 U1.3 5 WBO(I)-UBO<I> C 1 VMINsI.0E7> VMAXe-1.0E75 IJsNO*<NOVAR-1) 00 30 Jc1.N0 lf(S<J>>1O.StblO 10 I F (Ad J ) WVMIN) 15.20,20 IS VMXFUAUJ? 20 1 F(A(I J>-VMAX)30.30•25 25 VMAX=AUJ) 30 continue STATS(4)sVMIU STATSC5)5VMAX e ? IF(UBO<1)"U8O(3>)40•35.4C 35 UBO(1)=VMIN ’ UBO(3)=VMAX 40 INN=UBO(2) C 3 DO 45 I=1» INN FREO(I)«0c0 45 PCT(J)=0.0 00 50 I«1.3 SO STATSCUsO.O C 4 SINT^ABS ( (UBflt5>*UJB0C3) >/(VBO( 2) *2 .0> ) c 5 SCNTeO.O - IJ=NO*(NDVAR-1 ) QO ?5 JaT.NO
! J•IJ IF(S(J)7 55,75,5$ $9 S£NT«$CNT*b0 e 6 eT<TS(1)=STATS(1)*A(tJ) STATS <3)«STATS(3)*A(W*A( 1J J TEMP«UBQ(1)-$JNT INTXwlNN-1 00 60 !«1.!NTX TEMP»TEMP♦$INT IF(A(tJ)-TEMP) 70.60*60 60 CONTINUE I F(A(I J)-TEMP) 75,65.65 65 FREQ(INN)«FREQ(INN)*1.0 60 TO 75 70 FREQ(I)=FREQ(I)*1.0 75 CONTINUE C 7 * 00 80 !»1«INN 80 PCT(I)«FREQ(I)*100.0/SCNT C 8 IFCSCNT-1.0) 85.85.90 85 $TAT$(2)=0.0 STATS(3)=0.0 GO TO 95 90 STAT$(2)=STATS(1)/SCNT STATS<3)«SQRT(A8S((STATSC3>-STATS(1> * STAT S (1) / S CNT) / ( S CNT-1. 0 )) )' 95 DO 100 !«1,3 100 UB0( 1 )«W80<D RETURN ENO - Если UB0ij = UB02j, то эта подпрограмма находит и исполь* зует минимальное и максимальное значения /-й переменной. Таблица частот составляется для каждой пары наблюдаемых данных в виде двумерной таблицы (рис. 5). Знаки и < на рис. 5 означают, что в отдельный интервал относят данные, значения которых больше или равны нижнему уровню этого интервала или меньше верхнего уровня этого интер- вала. 31
Затем каждая позиция матрицы частот Fij делится на число на- блюдений N для получения выражения частостей (в процентах): , _ lOOfy li— N ’ (2) где i = 1, 2, .... UBO21; /= 1, 2, .... UBO22. Для всех данных, заносимых в матрицу частот, для каждого класса интервалов обеих переменных составляются следующие промежуточные результаты: 1. Число значений данных п; п 2. Сумма значений данных S Xi', м П 2 3. Сумма квадратов значений данных й1Л$НЯЯ граница верхняя граница нцжняя граница верхняя граница вторая оергменш Рис. 5, Из них для каждого класса интервалов в дальнейшем вычис- ляются следующие статистические характеристики: среднее п п 32
среднеквадратическое отклонение (4) ПОДПРОГРАММА ТАВ2 Назначение Выполнение двумерной классификации частот, процентного выражения часто- стей и других статистических характеристик для двух переменных, заданных в виде матрицы наблюдений (или подматрицы). Обращение CALL ТАВ2 (A, S, NOV, UBO, FREQ, PCT, STAT1, STAT2, NO, NV) Описание параметров A — матрица наблюдений NO X NV. S — входной вектор, задающий подматрицу А. Будут рассматри- ваться только те наблюдения, для которых соответствующие зна- чения вектора S (J) не равны нулю. Длина вектора NO. NOV — переменные, составляющие совместную таблицу частот. NOV(l) служит первой переменной, NOV(2)—второй перемен- ной. Длина вектора равна двум. UBO — матрица размерностью 3X2, задающая нижние пределы, число интервалов и верхние пределы обеих табулируемых переменных (первый столбец для первой переменной, второй столбец для вто- рой переменной). Если для первой переменной нижний предел равен верхнему, то программа пользуется минимумом и макси- мумом для всех переменных и в число интервалов необходимо включить две ячейки для нижнего и верхнего пределов. FREQ — выходная матрица частот в двумерной классификации. Порядок матрицы INTI X INT2, где INT1 — число интервалов первой переменной, a INT2 — число интервалов второй переменной. INT1 и INT2 должны быть указаны во второй позиции соответ- ствующих столбцов матрицы UBO. РСТ — выходная матрица частостей, имеющая такой же порядок, как и FREQ. STAT 1 — выходная матрица сумм, средних и стандартных отклонений для каждого класса интервалов по первой переменной. Порядок матрицы 3 X INT1. STAT2 — то же, что и STAT1, но для второй переменной. Порядок мат- рицы 3 X INT2. NO — число наблюдений. NV — число переменных для каждого наблюдения. Примечания Нет. Требуемые подпрограммы и функции Нет. Метод Размеры интервалов по обеим переменным вычисляются либо по заданной информации, либо по минимальному и максимальному значениям. Образуются матрицы частот и частостей. Вычисляются матрицы STAT1 и STAT2 сумм, сред- них и среднеквадратических отклонений. Знаменатель для среднего квадрати- ческого отклонения на единицу меньше числа наблюдений, попавших в каждый класс интервалов. 2 Заказ № 517 33
SUBROUTINE TAB2(A,$,N0V,U80, FREO.PCT,STAT1,STAT2.NO NV) DIMENSION A<1),S(1),N0V(2).UB0C3.2),FREQC1),PCT(1),STAT1(1) 1STAT2C2),SINTC2) DIMENSION WB0<3»21 00 5 I«1»3 DO S J«1,2 5 WBO(I,JMUBOCI,J> t C 1 DO 40 I«1,2 IFCUB0C1, l)-UB0<3«D) 40,10.40 10 VMIN«1.0E75 VMAX«*1»0E75 IJ«NO*(NOV(I)*1) DO 35 Jsl.NO IJ=IJ*1 IFCSCJD 15.35,15 15 IF(AC IJ)-VM!N) 20,25.25 20 VMINsA(IJ) 25 IF(ACIJJ-VMAX) 35,35,30 30 VMAXsA(lJ) 35 CONTINUE UB0C1•I)«VMIN UB0C3.I)»VMAX 40 CONTINUE C 2 45 00 50 f»1,2 50 SINTCI)«A8$(CU8OC3* D-UB0C1,1))/(UB0C2,1>-2.0)> C 3 tNT1«U80(2,1) fNT2«U80(2,2) INTTsINTl*INT2 DO 55 I»1,INTT FRE0(I)=0.0 55 PCTCDsO.O !NTY33*TNT1 DO 60 I«1,INTY 60 STAT1CI)«0.0
tNTZe3*IWT2 00 65 1=1.INT2 65 STAT2(I)»0.0 6 SCNTaO.O INTYalNTI-1 (NTX31NT2-1 I J«NO*CNOV(1)-1) IJX«NO*(NOV(2>-1) 00 95 Ja1.N0 IJX=IJX*1 IFCS(J)> 70.95.?0 ZD SCNTaSCNT*!.0 5 TEMP1«UBOC1.1)-SINT(1> 00 75 lYsl.INTY . TEMP1aTENP1*SlNT(1) IF(A(IJ)-TEMPI> 80.75.75 75 CONTINUE !Y«1NT1 80 IYY»3*(IY-1)*1 STAT1(IYY)a$TATl( IYY)*ACIJ) |YY=JYY*1 STAT1(IYY)«STAT1CIYY)*1.0 IYYaIYY*1 STAT1(IYY)aSTATl(IYY)*A(IJ)*A(IJ) TENP2=UB0(1,2)-SINT(2) 00 85 IXal.INTX TEMP2«TEMP2*SINT(2) IF(A(IJX)-TEMP2> 90.85.85 85 CONTINUE IXeINT? 90 IJF«INT1*(IX-1)♦IY FREQ(IJF) = FREQ(IJF)*1.0 IX«3*11X-1)*1 5TAT2CIX)=STAT2<IX)*A(IJX)
STА Г2 <IX)eSTAT2<!X)*1.0 !X»IX*1 STAT?(IX)=STAT2(IX)♦A(IJX)♦A(IJX) 95 CONTINUE e 6 00 100 t«1,INTT 100 PCT(I)«FREQ(I)*1OO.O/SCNT С T IXY«-1 00 120 !«1,!NT1 !XY«|XY*3 !S0«!XY*1 ГЕИР1=5ТАТ1(IXY> SUM=STAT1(IXY-T) IF(TEMPI-1.0) 120.105.110 Ю5 STAtl ( ISD)cO.O 60 TO 115 110 STAT1(ISD)=SQRT(ABS((STATICISD)-SUM*$UM/TEMPI)/(TEMP1-1.0))) 115 STATIC I XT)=SUM/T£MP1 120 CONTINUE IXXs-1 00 140 1=1.INT? tXX?IXX«3 ISD=IXX*1 TEMP2»STAT2(IXX) SUM=STAT2( I XX-1 ) IF(TEMP2-1.0) 140.125.130 125 STAT2(ISD)=0.0 GO TO 135 130 STAT2CISO)»SORT<ABS((STAT2C!S0}-SUM*$UM/TEMP2)/(TEMP2-1.0))) 135 STAT2CIXX)8$UM/TEMP2 140 CONTINUE 00 150 l«1.3 00 150 J=1,2 150 UBOCI.J)=W0O(I, ,RETURN
Перевод комментариев в тексте 1. Определение пределов. 2. Вычисление размера интервала. 3. Очистка поля для вывода. 4. Проверка вектора определения подматрицы. 5. Вычисление частот. 6. Вычисление частостей. 7. Вычисление сумм, средних и среднеквадратических отклонений. Подпрограмма SUBMX Назначение Основываясь на векторе S, выведенном из подпрограмм SUBST или ABSNT, эта подпрограмма переписывает из полной матрицы данных наблюдений под- матрицу тех наблюдений, которые удовлетворяют некоторым условиям. Эта под- программа обычно используется перед статистическим анализом (например, перед множественной регрессией, факторным анализом). Обращение CALL SUBMX (A, D, S, NO, NV, N) Описание параметров А — вводимая матрица наблюдений размерностью NO X NV. D — выводимая матрица наблюдений размерностью N X NV. S — вводимый вектор длиной NO, содержащий коды, выведенные из подпрограмм SUBST или ABSNT. NO — число наблюдений.' NV — число переменных. N — выводимая переменная, содержащая число ненулевых кодов в век- торе S. Примечания Матрица D может быть в тех же ячейках, что и матрица А. Требуемые функции и подпрограммы • Нет. Метод Если S (I) содержит ненулевой код, то 1-е наблюдение переписывается из вводимой матрицы в выводимую матрицу. SUBROUTINE SUBMX(А•D,S.NO»NV,N) 15 CONTINUE DIMENSION A(1)•D(1)»SC1) 20 CONTINUE 1=0 C 1 LL=O N = 0 00 20 J=1.NV 00 30 1=1,NO 00 15 1=1.NO IFCS(I)) 30.30,25 L«t*1 25 N«N*1 IF(SCD) 15.15,10 30 CONTINUE 10 IL=LL*1 / RETURN D(LL)=A(L) END Перевод комментариев в тексте 1. Вычисление ненулевых кодов в векторе S. 37
Корреляция и регрессия (сглаживание, факторизация) Подпрограмма CORRE Эта подпрограмма вычисляет средние, стандартные отклонения, суммы взаимных произведений отклонений от среднего и коэф- фициенты произведений корреляции моментов по входным данным Xijt где 1=1,2,..., ft — наблюдения, а / = 1, 2, ..., т — переменные. Для вычисления этих статистик служат следующие уравнения. Суммы взаимных произведений отклонений п S 2 г Sjt. = S (Xlf - Tj) (Xik Tk) - , (1) где j = 1, 2, m-, k = 1, 2............m. 'T' 1=4=1 1 j =------- * tut. (2) (Эти временные средние T, вычитаются из данных в уравнении (1) для получения точности вычислений) *. Средние • X) п п (3) где /= 1, 2,..т. Коэффициенты корреляции Sjk (4) где j— 1, 2,..т\ 4=1, 2,..т. Стандартные отклонения S) Уп—1 ’ (5) где J— 1, 2....т. * Вернее для получения центральных моментов. — Прим, перев. 38
ПОДПРОГРАММА CORRE Назначение Вычисление средних, стандартных отклонений, сумм взаимных произведе- ний отклонений и коэффициентов корреляции. Обращение CALL CORRE (N, М, IO, X, XBAR, STD, RX, R, B, D, T) Описание параметров N — число наблюдений. M — число переменных. 10 —код выбора для вводимых данных: О — если данные считываются с вводного устройства специальной подпрограммой DATA (см. ниже подпрограммы, служащие для этой подпрограммы); 1 — если все данные уже находятся в оперативной памяти. X — если 10 = О, то значение X равно 0.0, если 10=1, то X вводи- мая матрица (N на М), содержащая данные. XBAR — выводимый вектор длиной М, содержащий средние. STD — выводимый вектор длиной М, содержащий стандартные откло- нения. RX — выводимая матрица (МХМ), содержащая суммы взаимных произведений отклонений от среднего. R — выводимая матрица (только верхняя треугольная часть симмет- рической матрицы МХМ), содержащая коэффициенты корреля- ции. (Способ хранения 1.) В — выводимый вектор длиной М, содержащий диагональ матрицы сумм взаимных произведений отклонений от среднего. D — рабочий вектор длиной М. Т — рабочий вектор длиной М. Примечания Нёт. Требуемые функции и подпрограммы DATA (М, D) — эта подпрограмма должна быть составлена пользователем. 1 — если 10 = 0, то предполагается, что эта подпрограмма вводит наблюдения в вектор D из внешнего вводного устройства; 2 — если 10=1, то эта подпрограмма не используется подпро- граммой CORRE, но должна находиться в колоде перфокарт. Если пользователь не составил подпрограмму DATA, то должно быть следующее напоминание о ней: SUBROUTINE DATA RETURN END Метод Вычисление моментов корреляции Перевод комментариев в тексте 1. Если необходимо воспользоваться версией этой подпрограммы, отвечаю- щей вычислениям с двойной точностью, то в следующем операторе в первом столбце следует опустить признак С. 2 Признак С должен быть также опущен в операторах двойной точносгп, находящихся в других программах, применяемых вместе с этой подпрограммой. Версия этой подпрограммы для вычислений с двойной точностью должна 39
SUBROUTINE CORRE (N.MИ о»X,XBAR.STD•RX.R.B«0,T) cC DIMENSION X(T)*XBARC1)•ST0(1)*RX(1)»R(1)«В(1)t0(1)•T(1) I 1 (Продолжение) 130 KK = N c DOUBLE PRECISION XBAR,STD,RX,R.В•T GO TO 137 c 2 135 KK=M c 3 137 DO 14(f IM .KK DO 100 J = 1.M CALL OATA (M,0) - B(J)=0.0 00 140 J«1»M 100 T(J)=0.0 T(J)«Т(J)*0(J> K=(M*M*M)/2 L = L*1 DO 102 I«1,K 140 RX(L)=O(J> 102 RCDsO.O FRR=KK TNsN. 00 150 J=1.M LsO XBAR(J)sT(J) !F(lo> 105.127,105 150 T(J)эТCJ)/FRR C 4 C 6 105 DO 108 J = 1.N L=0 DO Ю7 r»1.K 00 180 1=1. L=L*1 JK = O 107 T(J)=T(J)*X(L) 00 170 Jsl.M XBARCJ)sT(J) L=L*1 108 rtJ)=T(J)/FN 170 0(J)=RX(L)-T(j) DO US l«1.N 00 180 Jsl.M JK = O В(J)=B(J)*D(j > L=!-N DO 180 ks1.J 00 110 Jsl.M * JK«JK*1 L«L*N 180 R(JK)=R(JK)*0(i)*0(X) D(J)»XCl>-T(J> tF(N-KK) 205.205,185 110 8(J)sB(J)*D(J) C 7 00 115 J»1.M 185 KKSN-KK DO 115 X»1 »j oo 20П r»i.KK JK«JK*1 JKsO 115 91JK)=R(JK)*D(J)*0(K) CALL ОЛТА ГМ.0) GO TO 205 ’ 00 190 J«1.M C 5 f X8AR<J)SXВARtJ)*D(J ) 1?7 i}O*13O«l35 0(J )xDCj)-T(j)
*90 0U)*5UhD(J) ФО 200 J«11M 00 200 KS1.J акт** 200 RfJK)«R(JK)*DU1*D(IO c a 805 JK=O 00 210 J*1 ,'tf X8AR( J )sXBAR(J } ffS! C 9 00 210 K=1 . J JK=JK*1 1 2Ю R( JK)sR( J)*8CK)/FN C 10 гк=о DO 220 J«1.M JKSJK+J 220 STD( J )=SQ«T(ABS(Rfr^J >» DO 230 J = 1 .M t>0 230 KcJ.M , JK-J♦(K*K*K)/2 ♦* RX(1>««RUK> RX(D=R(JK> x IF(STD(J>»&TO(K)) 225,222,225 222 RCdKJsO.O CO TO 230 225 R( STD СП*STOU) ) 230 C0NT1NV8 I C 11 fN3SQRT(FN-1.0) 00 240 J«1,M 2^0 STO(J)=STO(J)/FN C 12 L = -M 00 250 250 8(I)sRX(L> RETURB • x . END , ' также содержать функции Фортрана с двойной точностью. SQRT и ABS в опе- раторе 220 должны быть замечены соответственно на DSQRT и DABS. / 3. Подготовка. 4. Данные уже в оперативной памяти. 5. Считывание наблюдений и подсчет временных средних по этим данным в Т (J). 6. Вычисление сумм взаимных произведений отклонении от временных сред- них для М наблюдений. 7. Считывание оставшихся наблюдений по одному, суммирование наблюде- ний и подсчет сумм взаимных произведений отклонений от временных средних. 8. Вычисление средних. 9. Исправление сумм взаимных произведений отклонений от временных средних. 10. Вычисление коэффициентов корреляции. 11. Вычисление стандартных отклонений. 12. Перепись диагонали матрицы сумм взаимных произведений отклонения от средних. Подпрограмма MISR Эта подпрограмма вычисляет средние, стандартные отклонения, третьи и четвертые моменты, коэффициенты корреляции и стан- дартные ошибки коэффициентов корреляции, если имеются от- сутствующие даяные. Таким образом обеспечивается эффектив- ен
ный размер выборки. Недостающие наблюдения и некоторые зна- чения данных могут быть пропущены по выбору пользователя. Шаги вычисления следующие: 1. Вычисление средних где j — 1, 2, ..., tn — переменные; п — число неотсутствующих величин для /-й переменной. 2. Вычисление сумм взаимных произведений отклонений от средних для полных рядов i-й и /-й переменных sij— 2 xi) xj) • (2) a = l где Xj — средние i-й и /-й переменных, вычисленные, как ука- зано выше; п' — номера рядов, где присутствуют обе переменные. 3. Вычисление моментов взаимной корреляции r"= • (3) 4. Вычисление коэффициентов регрессии, пересечений * и стан- дартных ошибок коэффициентов регрессии: а) i-я независимая переменная и /-я зависимая переменная Коэффициент регрессии (4) Пересечение aij=x'j — bijx'i. (5) Стандартная ошибка коэффициента регрессии SbU (п’ — 2) Sa ‘ (6) б) /-я независимая переменная и i-я зависимая переменная Коэффициент регрессии = (7) Пересечение ап = Х1 — bnx'j. (8) • Пересечением называется значение зависимой переменной, если все неза- висимые переменные равны нулю {.свободный член уравнения репрессии).— Прим, перев. 42
Стандартная ошибка коэффициента регрессия _ _т si-rUsu (n'-2)sn Вычисление стандартных отклонений (9) 5. $,• — 1’ (Ю) где п равно числу неотсутствующих величин для j-й переменной. 6. Вычисление ассиметрии и эксцесса, s ц k Пусть Е(хау-ху)//я. Тогда (И) и kj — (fajlwj) — 3. (12) Примечание. В данной подпрограмме не делается разли- чия между пробелом и нулем, Поэтому если в перфокарте с дан- ными указан, пробел при отсутствии данного, то это данное будет воспринято как нуль. Для справок см. [1]. ПОДПРОГРАММА MISR Назначение Вычисление средних, стандартных отклонений, ассиметрий и эксцессов, коэффициентов корреляции, коэффициентов регрессии и стандартных ошибок коэффициентов регрессии при наличии точек с отсутствующими данными. Поль- зователь помечает отсутствующие данные при помощи числового кода. Величины, имеющие такой код, пропускаются при вычислении статистик. При вычислении коэффициентов корреляции пропускается пара значений, если хотя бы одна вели- чина отсутствует. Обращение CALL MISR (NO, М, X, CODE, XBAR, STD, SKEW, CURT, R, N, A, B, S, IER) Описание параметров NO — число наблюдений. M — число переменных. X — вводимая матрица данных размерностью NO X М. CODE — вводимый вектор длиной М, который содержит числовой код от- сутствия данного для каждой переменной. Любое наблюдение некоторой переменной, имеющей значение, равное коду, будет отброшено при вычислениях. XBAR — выводимый вектор длиной М, содержащий средние. STD — выводимый вектор длиной М, содержащий стандартные откло- нения. SKEW — выводимый вектор длиной М, содержащий ассиметрии. CURT — выводимый вектор длиной М, содержащий эксцессы. 43
R — выводимая матрица коэффициентов взаимной корреляции. Это будет только верхняя треугольная матрица, так как матрица коэффициентов М X М симметрическая. (Способ хранения 1.) N — выводимая матрица числа пар наблюдений, использованных при вычислении коэффициентов корреляции. Дается только верхняя треугольная часть матрицы. (Способ хранения 1.) А — выводимая матрица М X М, содержащая пересечения линий регрессии (А) вида Y = А + ВХ. Первый индекс этой матрицы относится к независимой переменной и второй — к зависимой пе- ременной. Например, А (1, 3) содержит пересечение линий ре- грессии для двух переменных, где переменная 1 независимая и переменная 3 зависимая. Заметим, что матрица А хранится в век- торной форме. В — выводимая матрица М X М, содержащая коэффициенты регрес- сии (В), соответствующие значениям пересечений в выводимой матрице А. S — выводимая матрица М X М, содержащая стандартные ошибки коэффициентов регрессии, соответствующих коэффициентам в выводимой матрице В. IER — О — нет ошибок: 1 — если число неотсутствующих элементов данных для /-й пере- менной меньше или равно двум. В этом случае STD(J), SKEW(J) и CURT(J) получают значение 10**75. Все величины R, А, В и S, относящиеся к этой переменной, также получают значение, равное 10**75; 2 — если дисперсия j-й переменной меньше 10** (—20). В этом случае STD(J), SKEW(J) и CURT(J) принимают значение, равное 10**75. Все значения R, А, В и S, относящиеся к этой переменной, также получают значение, равное 10**75. Примечания Эта подпрограмма не различает пробелов и нулей. Поэтому, если в карте с вводимыми данными вместо отсутствующего показателя стоит пробел, он бу- дет воспринят как 0 (нуль). Требуемые функции и подпрограммы Нет. Метод Вычисляются линии регрессии по методу наименьших квадратов и коэффи- циенты взаимной корреляции. Перевод комментариев в тексте 1. Вычисление средних. 2. Подготовка рабочих полей и проверка на отсутствующие данные. 3. Имеются оба данных. 4. Вычисление сумм взаимных произведений отклонений. 5. Вычисление стандартного отклонения, ассиметрии и эксцесса. . 6. Вычисление коэффициентов регрессии. 7. Вычисление коэффициентов корреляции. 8. Вычисление стандартных ошибок коэффициентов регрессии. Множественная линейная регрессия В сборнике научных программ множественная линейная регрес- сия обычно выполняется путем обращения к четырем подпрограм- мам в такой последовательности: 1. CORRE —для нахождения средних, стандартных отклонений и корреляционной матрицы. 44
SUBROUTINE MlSR(NO,M.X,CO0E.XBAR.ST0.SKEU,CURT.R.N.A.В.S.IER) 0)HENS ION X(1),C0DE(1).XBAR(1),ST0(1),SKEW(1).CURT(1)R(T),N(1) DIMENSION A(1 ’ ,B<1 J.S(1^ c ( Продолжение) 12 (ER=O L = 0 00 20 JsT.f* fN=O.U X8AR(JIsO.O 00 15 1=1.NO l«U*1 1F(X(L)-CODE(J)) 12.15.1? ₽N=FN*1.0 XBARCJ>sXBAR(J)*X(I> TJJSO.O TlJaO.O NI JsQ II=NO*(1-1> UJ=LJJ l»l*1 00 38 Ksl.Nb LI«LJ*1 LJCLJ^I tFСX(uI)-CODE(I)) 30.38.30 15 CONTINUE IFCFN) 16.16.17 50 1 F(X(LJ)-CODE(j)) 35.38.35 c 5 16 17 20 c X0AR(J JsO.O GO TO 20 XBARC J )«XBAR.( J )/FN CONTINUE 2 isO 00 55 J = 1.M IJJ»NO«CJ-1) SKEW(J)»0.0 CURT(j)=0.0 X I=M*(J-1) KJ3J-M DO 54 ls1 •«> KI«KI*1 KJ=KJ*M SUMXsO.O SUMYsO.O TisO.O TjsO.O TI1=0.0 35 XX=X(Ll)-X8AR(J) tysxcljj-xdarcj) ti=ti*xx TIIsT!l*XX**2 TJSTJ4YY TjjaTjJ*YY**2 TI J8TIJ*XX*YY NIJ=NIJ+1 SUMX=SUMX*X(LI) SUMY=SUMY*X(LJ) IF(I-j) 38.37.37 37 SКEW(J)=SKEW(J)♦YY**3 CURT(J)=CURT(J)*YY**4 38 CONTINUE C 4 IF(NIJ) 40.40.39 39 FN«N|J R(L)sT1J-TI*TJ/FN N(L)=N!J T!ISTII-TI*TI/FN
tjJSTJJ-TJ*TJZFw ACKt)«1.0E?5 C 5 B(KI)«1.0E75 40 fF(f-J) 47,41,47 S«Kt)s1»0E75 41 lF(NlJ-2) 42,42,43 ACKJ)»1.0E75 42 IER = 1 8(KJ)s1.0E75 R(L)=1.0E75 S(KJ)=1.0E75 A(Kt)s1.0E7S GO TO 54 В(К1)з1.0Е73 50 |F(TH-(1.0E-20>> 52.52,51 S(KI)x1.0E75 51 !F(Tjj-(1.0E-20)) 52.52.53 GO TO 45 5? IER«2 43 STO(j)sR(L> • 60 TO 49 R(L)»1.0 53 SUMX&SUMX/FM A(KI)=0.0 SUMYzSUMY/FN 8CKI)«1.0 8(KI )=R(L')/Т! 1 S(KI)=0.0 A(KI )=SUMY-8(K!)*SUMX 1F(STD(J)-<1.0E-20)) 44.44,46 8(KJ)=R(l>ZTJJ 44 IEIU2 A(KJ)«$UHX-8(KJ)«SUMY 45 STOCJ)=1.0E75 C * $KEW(j)=1.0E75 R(L)sR(l)/(SORT CT!i)*SQRT<TJJ)) CURT(J)s1.0E75 C 8 GO TO 55 RRsR(l)**2 46 WORK=STD(J)/FN $UMX8(TJJ-TJJ*RR)/(FN-?) SKEUfJ)3(SKEW(J)ZFN)ZCtfORKftSQRT(WORK)) S(КI)aSQRT(SUMX/TIf) CURT(J)e((CURT(J)/FN)/W0RK**2)-3.0 SUMYaCTIf-T||»RR>/<FN-2> STO (J ) sSQR.T CSTO CJ ) / (FN-1 .0)) S ( X J)sSORT<SUMY/TJ J ) GO TO 55 54 CONTINUE * * 55 CONTINUE 47 tFCNIJ-2) 48.48,50 RETURN 48 TER=1 ENO 49 R(L>=1.QE75
2. ORDER — для выбора зависимых переменных и подмноже- ства независимых переменных из всего множества переменных. 3. MINV —для обращения корреляционной матрицы подмно- жества, выбранного подпрограммой ORDER. 4. MULTR — для вычисления коэффициентов регрессии &о, Ь\9 Ьг, ..Ьт и различных доверительных оценок. Подпрограмма CORRE работает по любому из двух путей: (1) при предположении, что все наблюдения находятся в опера- тивной памяти, (2) при использовании программы ввода DATA, введенной пользователем для считывания по наблюдению за 1 раз в рабочее поле. В любом случае пользователь должен обеспечить наличие подпрограммы DATA (см. «Требуемые подпрограммы в описании подпрограммы CORRE). Подпрограмма ORDER Назначение Построение из полной матрицы коэффициентов корреляции подматрицы взаимной корреляции между независимыми переменными и вектора взаимной корреляции независимых переменных с зависимыми переменными. Этой подпро- граммой обычно пользуются при выполнении множественного и полиномиаль- ного регрессионного анализа. Обращение CALL ORDER (М, R, NDEP, К, ISAVE, RX, RY) Описание параметров M — число переменных и порядок матрицы R. R — вводимая матрица, содержащая коэффициенты корреляции. В этой подпрограмме предполагается хранение по столбцам только верхней треугольной части симметрической матрицы. (Способ хранения 1.) NDEP — номер индекса зависимой переменной. К — число независимых переменных, включаемых в регрессионный предиктор. I SAVE — вводимый вектор длиною K+L содержащий в убывающем по- рядке значения индексов независимых переменных, включаемых в регрессионный предиктор *. При возвращении в обратившуюся программу этот вектор, кроме того, содержит номер индекса за- висимой переменной в К +1 позиции. RX — выводимая матрица К X К, содержащая взаимные корреляции между независимыми переменными, использованными в регрес- сионном предикторе. RY — выводимый вектор длиной К, содержащий взаимные корреляции независимых переменных с зависимыми переменными. Примечания Нет. Требуемые функции и подпрограммы Нет. Метод Из индексированных переменных, включенных в регрессионный предиктор, подпрограмма образует матрицу RX и вектор RY. * Уравнение регрессии может быть применено для «предсказаний» значений зависимой переменной. Поэтому авторы пользуются словом «предиктор».— Прим, перев. •< 47
SUBROUTINE ORDER(М,R,NDEP,К.I SAVE.RX,RY) DIMENSION R(1),I SAVECI ).RX(1),RY(1 ) C 1 C DOUBLE PRECISION R.RX.RY с г MMsO C 5 00 130 J»1,K LZ=ISAVE(J) ncNDEP-i?) 122*123.123 122 L»NDEP*(L2*L2-l2>/2 60 TO 125 123 Lsl2*(NDE0*NDEP-NDEP)7? 125 RY(J)=R(l) с 4 DO 130 1 = 1.К HslSAVEdl 1FCL1-L2> 127.128,128 127 L-H*(12*L2«l2)/2 GO to 129 128 isL2*(L1*l1-Ll>/2 129 MMsMM+1 130 RX(MM)sR<l> C 5 ISAVE (K*iy=NDEI> RETURN END Перевод комментариев в тексте 1. Если необходимо воспользоваться версией этой подпрограммы, отвечаю- щей вычислениям с двойной точностью, то С в первом столбце следующего опе- ратора двойной точности должно быть опущено. 2. С должно быть также опущено из операторов двойной точности, появ- ляющихся в других программах, используемых совместно с этой программой. 3. Перепись взаимных корреляций независимых переменных с зависимой переменной. 4. Перепись подматрицы взаимных корреляции^между^независимыми пере- менными. 5. Помещение индексированной зависимой переменной в ISAVE (К + 1). Подпрограмма MULTR Эта подпрограмма выполняет множественный регрессионный анализ для зависимой переменной и множества независимых пере- менных. Для подсчета бета-весов пользуются следующим уравнением: ь Р/= (1) где ГгУ — взаимная корреляция f-й независимой переменной с зависимой переменной; Г/}1—обратная величина взаимной корреляции/^-, / = /= 1, 2, ...» k относятся к независимым переменный; _ ГгУ и г/}1 вводятся в эту подпрограмму. Коэффициенты регрессии вычисляются затем следующим обра- зом: (2) 48
где sy — стандартное отклонение зависимой переменной; Sj — стандартное отклонение /-й независимой переменной; /=1, 2, sy и Sj вводятся в эту подпрограмму. Пересечение находится из следующего уравнения: (3) где_У — среднее зависимой переменной; Xj —^среднее /-й независимой переменной. У и Xj вводятся в эту подпрограмму. Множественный коэффициент корреляции R находится вычисле- нием коэффициента — определения по следующему уравнению: (4) и извлечением затем квадратного корня из R2 R = (5) Сумма квадратов, относящихся к регрессии, находится по SSAR-=Z)yy, (6) где Dyy — сумма квадратов отклонений от среднего для зависи- мой переменной; Dyy вводится в эту подпрограмму. Сумма квадратов отклонений от регрессии получается из SSDR—Z)yy — SSAR. (7) Тогда значение -/7 для анализа дисперсии вычисляется следую- щим образом: SSAR/& __ SSAR(n — Л — 1) Г SSDR/(n — k — 1) . SSDR (k) Некоторые другие статистики вычисляются так: Дисперсия и стандартная ошибка оценки С2 SSDR 12. ..., л = СТ"’ где п — число наблюдений Sy. 12.k = V S}. 12..k • Стандартные отклонения коэффициентов регрессии (8) (9) (Ю) (П) Djj ‘Sy. 12..............................л , 49
где Djj — сумма квадратов отклонений от среднего для /-й неза- висимой переменной. Djj вводится в эту подпрограмму; /=1,2, k. Вычисление t: (12) /=1, 2, .... k. ПОДПРОГРАММА MULTR Назначение Выполнение анализа множественной линейной регрессии для зависимой пе- ременной и множества независимых переменных. Эта подпрограмма обычно служит для анализа множественной и полиномиальной регрессии. Обращение CALL MULTR (N, К, XBAR, STD, D, RX, RY, ISAVE, B, SB, T, ANS) Описание параметров N — число наблюдений. К — число независимых переменных в этой регрессии. XBAR — вводимый вектор длиной М, содержащий средние всех перемен- ных. М — это число переменных в наблюдениях. STD — вводимый вектор длиной М, содержащий стандартные отклоне- ния всех переменных. D — вводимый вектор длиной М, содержащий диагональ матрицы сумм взаимных произведений отклонений от средних для всех переменных. RX — вводимая матрица К X К, содержащая обратные величины взаимных корреляций между независимыми переменными. RY — вводимый вектор длиной К, содержащий взаимные корреляции независимых переменных с зависимой переменной. I SAVE — вводимый вектор длиной К 4-1, содержащий индексы незави- симых переменных в убывающем порядке. Индекс зависимой переменной помещается в последнюю К 4- 1 позицию. В — выводимый вектор длиной К, содержащий коэффициенты регрес- сии. SB — выводимый вектор длиной К, содержащий стандартные откло- нения коэффициентов регрессии. Т — выводимый вектор длиной К, содержащий значения Т. ANS— выводимый вектор длиной 10, содержащий следующую инфор- мацию: ANS (1) — пересечение; ANS (2)—коэффициент множественной корреляции; ANS (3)—стандартную ошибку оценки; ANS (4)—сумму квадратов, относящихся к регрессии (SSAR); ANS (5)—степени свободы, связанные с SSAR; ANS (6) — наименьший квадрат SSAR; ANS (7)—сумму квадратов отклонений от регрессии (SSDR); ANS (8) — степени свободы, связанные с SSDR; ANS (9) — наименьший квадрат SSDR; ANS(10) — значение F. 50
SUBROUTINE Минеей, X. XBAR . STO . 0 . ЙХ , Ry, t SAVt. 0. SB, T , ANS) DIMENSION XBARC1),STD(1),0(1>,RX(1),RY(1),I SAVE(1),B(1bSB(1b 1T(1),ANS(1) c 1 c DOUBLE PRECISION XBAR,STD, 3,RX.RY.B.SB.T,ANS,RM,BO.SSAR,SSOR,SY, c 1FN.fk,ssarm,ssdrm•P (Продолжение) c 2 MMeK*1 SYsSSDR/FM C 11 c 3 off ioo j«i»x 00 130 JS1.K L1«K*(J-1)*J 4100 BfJIsO.O 00 110 J81.K L1»K*CJ-1) 00 110 181, к l«L1*I l=ISAVE(J) 125 SB(J)=SQRT( ABS(RX(L1)/•(L)*SY)) C 12 130 t('J )»B( J )/SBC J ) C 13 910 B(J)=B(J)*RY(I)*RX(Li RNsO.O 80«0.0 L18ISAVE(MM> 135 frYeSQRTC ABS(SY)) C U FK3K SSARMsSSAR/FK c 4 DO 120 1=1,X RM«RM+B(I)*RY(I) SSORM=SSDR/FN FsSSARM/SSDRN ANSCDsBO € 5 <L<!SAVE(t> B( I )зВ( I )*(STD(L1)/ST0((.) < ANSC2)8RM ANSClJaSY ANS(4)sSSAR c 6 ANS(5)8FK 120 B0«B0*BCI)*XBAR(L> BO=)J0AR(LI )-B0 ANS(6)=SSARM ANS(7)=SSDR c 7 SSAR=RM*D(L1) ANS(8)8FN c c 8 122 RM8SQRT(ABS(RM)> 9 SSDReOfU )-SSAR ANSC9)s$SDRM ANS(10)sF RETURN ENO € 10 FMsN-K-1
Примечания N должно быть больше, чем К + 1. Требуемые функции и подпрограммы Нет. Метод Для решения нормальных уравнений применен метод Гаусса—Жордана. См. [1]. Перевод комментариев в тексте 1. Если необходима версия этой подпрограммы, отвечающая вычислениям с двойной точностью, то С в первом столбце в следующем операторе двойной точности должно быть опущено. 2. С должно быть также опущено из операторов двойной точности, появляю- щихся в других программах, используемых совместно с этой программой. Вер- сия этой программы для работы с операндами двойной точности должна также содержать функции Фортрана двойной точности. SQRT и ABS в операторах 122, 125 и 135 должны быть заменены на DSQRT и DABS, 3. Бета-веса. 4. Коэффициент определения. 5. Коэффициенты регрессии. 6. Пересечение. 7. Сумма квадратов, относящихся к регрессии. 8. Коэффициент множественной регрессии. 9. Сумма квадратов отклонений от регрессии. 10. Дисперсия оценки. И. Стандартные отклонения коэффициентов регрессии. 12. Вычисление значений Т. 13. Стандартная ошибка оценки. 14. Значение F. . . - * Полиномиальная регрессия В сборнике научных подпрограмм полиномиальная регрессия обычно выполняется путем обращения к следующим четырем под- программам: 1. GDATA — для образования степеней независимой перемен- ной и нахождения среднего, стандартного отклонения и корреля- ционной матрицы. 2. ORDER — для выбора зависимой переменной и подмноже- ства независимых переменных из полного множества переменных. 3. MINV —для обращения матрицы коэффициентов корреля- ции. 4. MULTR — для вычисления коэффициентов регрессии Ьо, Ьь Ьг, ..., bm и различных доверительных оценок. Подпрограмма GDATA Данная подпрограмма порождает независимые переменные вплоть до m-й степени (наивысшей степени, указанной для поли- нома) и вычисляет средние, стандартные отклонения, суммы вза- имных произведений отклонений от средних, коэффициенты момен- тов корреляции. ХЦ обозначает f-й случай независимой переменной; XiP обозначает f-й случай зависимой переменной, где i = 1, 2, ..., п; 52
п — числе наблюдений; р=т + 1; т — заданная наивысшая степень полинома. Степени независимой переменной подпрограмма GDATA обра- зует следующим образом: Х12 = Хц-Хп; Xli = Xl3-Xil; (1) ^im — m-l'Xix, где i и m определены выше. Затем вычисляются следующие величины. Средние где J= 1, 2, р. Суммы взаимных произведений отклонений от средних п __ _______ Djk=^[Xti-Xj) (xik-Xk}- 2 (Xu-Xj) 2 (xik-xk) i=i i=i_______ n » (3) где j— 1, 2, ..., p\ k = \, 2.............p. Коэффициенты корреляции ry = где I — 1, 2, ..., р\ j= 1. 2.........р. Стандартные отклонения ^Dli VW (4) Si у—\' где /= 1, 2.p. (5) ПОДПРОГРАММА GDATA Назначение Образование независимых переменных вплоть до m-й степени (наивысшей указанной степени полинома) и вычисление средних, стандартных отклонений и 53
коэффициентов, корреляции. Эта подпрограмма обычно вызывается перед обра- щением к подпрограммам ORDER, MINV и MULTR при выполнении полино- миальной регрессии. Обращение CALL GDATA (N, М, X, XBAR, STD, D, SUMSQ) Описание параметров N — число наблюдений. M— наивысшая заданная степень полинома. X— вводимая матрица (N на М + 1). При обращении к подпрограмме данные для независимой переменной помещаются в первый стол- бец матрицы X, а данные для зависимой переменной — в послед- ний столбец матрицы. При возвращении в обратившуюся про- грамму в столбцы от 2-го до М помещаются степени независи- мой переменной. XBAR — выводимый вектор длиной М + 1, содержащий средние незави- симой и зависимой переменных. STD — выводимый вектор длиной М +1, содержащий стандартные от- клонения независимой и зависимой переменных. D — выводимая матрица (только верхняя треугольная часть симмет- рической матрицы размерностью М +1 на М+1), содержащая коэффициенты корреляции. (Способ хранения 1.) SUMSQ — выводимый вектор длиной М +1, содержащий суммы произвел дений отклонений от средних независимой и зависимой пере- менных. Примечания N должно" быть больше, чем М + 1. Если М больше либо равно 5, то одинарная точность не обеспечивает удовле- творительной точности вычислений. Требуемые функции и подпрограммы Нет. Метод См. [1]. Перевод комментариев в тексте 1. Если необходима версия этой подпрограммы, отвечающая вычислениям с двойной точностью, то С в первом столбце в следующем операторе двойной точности должно быть опущено. 2. С должно быть опущено также и из операторов двойной точности, на- ходящихся в других программах, используемых совместно с этой программой. Версия этой программы для работы с операндами двойной точности должна также содержать функции Фортрана двойной точности. SQRT и ABS в опера- торе 180 должны быть заменены на DSQRT и DABS. 3. Образование независимых переменных. 4. Вычисление средних. 5. Вычисление сумм взаимных произведений отклонений. 6. Вычисление коэффициентов корреляции. 7. Вычисление стандартных отклонений. Пошаговая множественная регрессия В сборнике научных подпрограмм пошаговая множественная регрессия обычно выполняется путем обращения к следующим подпрограммам: 54
SUBROUTINE GDATA(N,M,X,XBAR,STD,D,SUMSQ) DIMENSION X(1).XBAR(1),STD(1),D(1),SUMSQ<1> c 1 c < c 90 DOUBLE PRECISION X,XBAR,S Э 3 (F(M-1) 10S.*105.90 Lt»O TO,D,SUMSQrll►T? (Продолжение) c c 100 105 110 115 130 150 00 100 1=2.M L1«L1»N 00 100 Jsl,N L=L1*J K»L-N X ( L)sX(К)*X(J ) 4 MM«M*T OFsN 1 = 0 00 115 1 = 1,M* XBAR(D=0.0 DO 110 J=1,N L=L+1 XBAR ( I ) sX0AR ( 1 )*XCL'» XBAR(I)=XRAJtI)/DF DO 13D I=1.MM $ let (MM*r)*MM) /. 0Г «50 1=1.1 0(1)80.0 DO 170 Ksl.N L»0 DO 170 J=1,MM L2=N*(J-1)*K 170 175 180 r 190 ' c 200 00 170 1 = 1,J L1=N*(I-1)*K T1=X(Li)-XBAR( Г > 0(L)= D(L>*T1*T? L = 0 00 175 J81.MM 00 175 i«1,J DCL)sD<L)“STD(l)*STD(J)/DF 1 = 0 DO 180 I=1,M*» SUMSQlI)=D(L) ABStOlL»)) A 1=0 00 190 J81.MM 00 190 t«1.J O(L)=D(L}/(ST0<l)*3TO(J)) 7 OfSSQRT(OF-1.0> t oo 200 i=i.MM i STD(1J=STDlJ)/p* T2«X<12)-XВAR I j ) 5T-DX^U_sST 0 (J)*T? RETURN
1. CORRE — для нахождения средних, стандартных отклоне- ний, сумм взаимных произведений матрицы отклонений и корреля- ционной матрицы. 2. MSTR — для сохранения матрицы сумм взаимных произве- дений отклонений и их переписи в рабочую матрицу для повтор- ного использования тех же данных. 3. LOC — для вычисления индекса вектора элемента в общей и симметрической матрицах. Эта подпрограмма вызывается под- программой MSTR. 4. STPRG — для вычисления коэффициентов регрессии и дру- гих статистик на каждом шаге регрессии. Подпрограмма CORRE работает по любому из двух путей: 1) при предположении, что все наблюдения находятся в оператив- ной памяти; 2) при работе с программой ввода DATA, введенной пользователем в рабочее поле для считывания по одному наблю- дению за раз. В любом случае пользователь должен обеспечить наличие подпрограммы DATA (см. «Требуемые подпрограммы» в описании подпрограммы CORRE). « Подпрограмма STPRG вызывает подпрограмму вывода STOUT для того, чтобы отпечатать различные статистики, вычисленные на каждом шаге регрессии.. Наличие подпрограммы STOUT дол- жно быть также обеспечено пользователем. Подпрограмма STPRG Эта подпрограмма выполняет анализ пошаговой множествен- ной регрессии зависимой переменной и множества независимых переменных. На каждом шаге регрессии 1 = 1, 2, ..., q, где q — чис- ло независимых переменных, применяется сокращенный метод Ду- литтла для вычисления следующих статистик. Выбираются независимые переменные, входящие в регрессию. Во-первых, при вычислении величины уменьшения сумм квадратов по каждой переменной 2 0) где ajj — начальный элемент в суммировании взаимных произведений матрицы отклонений, который будет изменен на последующих шагах; /=1, 2, q — независимые переменные (/=/=устраненным пере- менным и переменным, введенным перед i-м ша- гом); у — зависимая переменная. И, во-вторых, при отыскании наибольшего значения Cj. Ряд Si = Cj обозначает суммы квадратов, которые будут умень- шены на i-м шаге. Отношение Si ко всей сумме получаем как Р = (2) 56
где £>= S (у, —у)2; 7=1 п — число наблюдений. Если р меньше, чем константа, указанная пользователем как предел независимых переменных, то анализ прекращается без в®ода оставшихся отобранных переменных; в противном, случае вычисления продолжаются. Накапливаемая сумма уменьшенных квадратов образуется как Scum = Scum + Si (3) и накапливаемые сокращенные отношения ^cum == ^cum “t” Р* (^) Коэффициент множественной корреляции вычисляется как R = V~p^ (5) и исправляется для степеней свободы по формуле Rc = V 1-(1-Я2)(я-1)/(я-А) , когда имеется k независимых переменных в регрессии. Значение F для анализа дисперсии задается как Г с__ Scum/Л (Я-$сшп)/(л-Л-1) • W Стандартная ошибка оценки получается с помощью формулы _ _ 1 / В — Scum Sy.n...i-у n_-k_x- . (7) и исправляется на sc = s У (я — 1)/(я — k) Затем вычисляются следующие величины: а7/==ал + ~а^_» <8) где i — переменная, вводимая на i-м шаге; /=Vi, v2t ..., Ui-i— переменные, введенные в регрессию пе- ред ьм шагом; ^=-7Г« 0) где Л=1, 2, ..т — переменные, включая у (^^отброшенной пе- ременной и переменной,.введенной на i-м шаге). 57
Коэффициенты регрессии вычисляются по формулам: bi-i = g(i-i) у — (10) bl-2 = g(l-T) у — btg(l-2) I — bi-\g(l-i) (i-1) и T. Д., « значение пересечения как ______ * bQ = y- (11) ;=1 где k — число независимых переменных в регрессии. Стандартная ошибка коэффициентов регрессии вычисляется по формуле sb. = Sy. 12 ... . (12) где /=vi, t>2, •••> — переменные в регрессии, а значение t как Уменьшение элементов для устранения введенной перемен- ной на i-м шаге ajk — ajk anStk^ (14) где i — переменная, введенная на i-м шаге; /=1, 2, ..., т (/=/= отброшенным переменным и перемен- ным в регрессии); Л=1, 2.....т (k ф отброшенным переменным и переменной, введенной на i-м шаге). = (15) <16> Для справок см. [2]. • ПОДПРОГРАММА STPRG Назначение Выполнение анализа пошаговой множественной регрессии зависимой пере- менной и множества независимых переменных. На каждом шаге в уравнение регрессии вводится переменная, которая составляет наибольшую величину дис- персии между ней и зависимой переменной (т. е. переменная, имеющая наи- большую частную корреляцию с зависимой переменной). Любая переменная мо- жет быть обозначена как зависимая переменная. Любая независимая перемен- ная может быть введена или устранена из уравнения регрессии независимо от ее доли участия в уравнении. Обращение CALL STPRG (М, N, D, XBAR, IDX, PCT, NSTEP, ANS, L, B, S, T, LL, IER) 58
Описание параметров М — общее число переменных в матрице данных. N — число наблюдений. D — вводимая матрица М X М сумм взаимных произведений откло- нений от среднего. Эта матрица разрушается. XBAR — вводимый вектор средних длиной М. IDX — вводимый вектор длиной М, имеющий следующие коды для каж- дой переменной: О — цезависимай переменная, пригодная для выбора; 1 — независимая переменная, обязательно вводимая в уравнение регрессии; ' 2 — переменная, не рассматриваемая в уравнении; 3 — зависимая переменная. Этот вектор разрушается. РСТ — постоянная величина, обозначающая часть общей дисперсии, определяемой какой-либо независимой переменной. Независимая переменная, которая не достигает этой части, не включается в уравнение регрессии. Для обеспечения ввода всех переменных в уравнение следует положить РСТ = 0.0. NSTEP — выводимый вектор длиной 5, содержащий следующую информа- цию: NSTEP(l) — номер, зависимой переменной; NSTEP (2) — число переменных, обязательно вводимых в урав- нение регрессии; NSTEP(3) — число переменных, отброшенных из уравнения; NSTEP(4) — номер последнего шага; N STEP (5) номер последней введенной переменной. ANS — выводимый вектор длиной 11, содержащий следующую инфор- мацию о последнем шаге: ANS(l)—сумма сокращенных .квадратов на этом шаге; ANS(2) — отношение суммы сокращенных квадратов к об- щей сумме; ANS(3) — накопленная сумма сокращенных квадратов вплоть до данного шага; ANS(4) — накопленное отношение суммы сокращенных квад- ратов к общей сумме; ANS(5)—сумма квадратов зависимой переменной; ANS(6) — коэффициент множественной корреляции; ANS(7) — F-отношение для суммы квадратов, обусловлен- ных регрессией; ANS (8) — стандартная ошибка оценки (остаток наимень: ших квадратов); ANS(9) — константа пересечения; ANS(10) — коэффициент множественной корреляции, исправь ленной с учетом степеней свободы; ANS(11)— стандартная ошибка оценки, исправленная с учё- том степеней свободы. L — выводимый вектор длиной К, где К — число независимых пере- менных в уравнении регрессии. Этот вектор содержит номера независимых переменных в уравнении. В — выводимый вектор длиной К, содержащий частные коэффициенты регрессии, соответствующие переменным в векторе L. S — выводимый вектор длиной К, содержащий стандартные ошибки частных коэффициентов регрессии, соответствующих перемен-' ным в векторе L. Т — выводимый вектор длиной К, содержащий вычисленные значе- ния Т, соответствующие переменным в векторе L. LL — рабочий вектор длиной М. 59
IER —0 — если не было ошибок; 1 — если остаточная сумма квадратов отрицательна или ведущий элемент при обращении на пошаговохм процессе оказался равным нулю. В этом случае переменная, которая вызвала данную ошибку, не вводится в регрессию. Таким образом сохраняется результат пре- дыдущего шага и дальнейший выбор прекращается. Примечания Число точек данных должно быть по крайней мере больше, чем число не- зависимых переменных плюс единица. Переменные, которые обязательно должны быть введены в уравнение, вводятся перед всеми другими независимыми пере- менными. Кроме совокупности обязательно вводимых переменных первой вво- димой будет выбрана та переменная, которая определяет наибольшую часть дисперсии. Вместо критерия остановки части общей дисперсии в подпрограмме STOUT могут быть привлечены другие критерии. Требуемые функции и подпрограммы STOUT (NSTEP, ANS, L, В, S, Т, NSTOP) Эта подпрограмма вводится пользователем. Она служит как подпрограмма вывода, которая печатает результаты каждого шага регрессионного анализа. Код NSTOP позволяет выбрать окончание пошаговой регрессии, если он равен единице. Для продолжения он должен быть равен нулю. Пользователь может принять это во внимание, если хочет использовать кроме части дисперсии дру- гие критерии остановки. Метод Применяется сокращенный метод Дулиттла для решения вопроса о вводе переменных в регрессию и вычисления коэффициентов регрессии (См. [2]). Перевод комментариев в тексте 1. Если необходима версия этой программы, отвечающая вычислениям с двойной точностью, то С в первом столбце в следующем операторе двойной точ- ности должно быть опущено. 2. С должно быть опущено также и из операторов двойной точности, на- ходящихся в других программах, используемых совместно с этой программой. Версия этой программы для работы с операндами двойной точности должна также содержать функции Фортрана двойной точности. SQRJ в операторах 85, 90, 114, 132 и 134 должен быть заменен на DSQRT. 3. Подготовка. 4 Отыскание зависимой переменной, номеров переменных, обязательно вво- димых в регрессию, и номеров отбрасываемых переменных. 5. Нахождение максимального числа шагов. 6. Начало отбора переменных. 7. Выбор следующей переменной для ввода среди обязательно вводимых переменных. 8. Выбор следующей переменной для ввода среди необязательно вводимых переменных. 9. Проверка, будет ли отношение сумм сокращенных квадратов для послед- ней введенной переменной больше или равно указанному отношению. 10. Оно больше либо равно. 11. Вычисление множественной корреляции, значения F для анализа диспер- сии и стандартной ошибки оценки. 12. Деление на ведущий элемент. 13. Вычисление коэффициентов регрессии. 14. Вычисление пересечения. 15. Выполнение сокращения для устранения последней введенной пере- менной. 16. Исправление стандартной ошйбки оценки и множественного коэффи- циента корреляции. 17 Обращение к подпрограмме вывода. 18 Проверка на окончание пошаговой регрессии в подпрограмм© STOUT. 60
SUBROUTINE STPRG(M,N.D,XBAR,IDX.PCT.NSTEP.ANS.L.B.S.T.Ц ЛЕР) DIMENSION 0(1) «.XBAR(1 ). IDXd) 1T(1).LLd> ,NSTEP(1).ANSC1).L(1).BC1),S(1) , $ c c 1 DOUBLE PRECISION D.XBAR.ANS.e I,S.RO.RE c c c c c г з IER=O NFU«O NSTEP(3)®0 ANS<3>®0.0 ANS(4)®0.0 NSTOP’O 4 00 30 1=1.M LL<I)=1 IF(IOX(I>) 30.30,10 10 IF(I0X(I)-2> 15.20.25 15 NF0®NF0*1 IDX(NFO)=. GO TO 30 1 20 NSTEP(3)«NSTEP(3)*1 LL(I)«-1 X GO TO 30 25 MY -H NSTEPCDsMV LY®M*(MY-1) LYP=LY*MY ANS<5)s0(LYP> 30 continue NSTEP/S)»NF0 5 MX«M-NSTEPC3)-1 6 00 140 NL’I.MX (Продолжение) RD = O IF(NL-NFO) 35.35.55 C 7 55 DO 50 1=1.NFQ KsTOXCD IF(LLCK)) 50.50.40 40 IYP»LY*K IP«M*(K-1)*K RE = O(LYP)**2/0(IP) IF(RD-RE) 45.50.50 45 RD=RE NEU=K 50 CONTINUE GO TO 75 C 8 55 00 70 Isl.M IFfl-MY) 60.70.60 60 IFCLLU)) 70.70.62 62 LYP=LY*I IP3M*(t-1)«i RE=D(LYP)**2/D(IP) IF(RD-RE) 64.70.70 64 RD=RE NEW®! 70 CONTINUE С 9 75 IF(Ro> 77,77,76 76 IF(ANS(5)-(ANS(3)*RD))77.77. 7g 77 IER®1 GO TO 150
78 RE=RD/ANS(5) B(NL)«D(IYP) IFCRE-PCT) 150,80.80 IFCNt-1) 112,112,105 С Ю 105 ID«Nl-1 80 IL(NEW)sO’ 00 110 J«1.IO tCNL)»NEW IJaNL-J AN$C1)cRD <KK = LC IJ > ANS(2)«RB IYPSLY4KK ANSC3)«ANS(3)*R0 6(IJ)»0(lYP> ANS(4)«ANS(4)*RE 00 110 K«1,J NSTEPC4)=NL |K«Nl-K*1 NSTEP(5)»NEU MK=L(IK> с и IYPSM*(MK-1>♦«« 85 ANS(6)°SQRT(ANS<4)) 110 8(IJ)«В(IJ)-0(LYP)*B(IK> R№NL C 14 RE«0NM-RD 112 ANS(9)=XBARCMY) RE»CANS(51-ANS(3))/RE 00 115 ANS(7)»CANSC3)/R0)/RE‘ KK=L(I) 90 ANS(8)=SQRT(RE) ANS(9)«ANS<9)-8CJ)*X8AR(KIQ C 12 t J=M*(ICK-1 )♦** IP»M*(NEW-1)>NE« 114 S<!) sANSC8)*SQRT(0( IjH RDsOCtP) 115 T(I)sBCI)/S(I> CYPSNEU-M C 15 00 100 J«1.M lpaM*(NEW-1) LYPsiYP*M 00 130 I«1,M IFClLCJ)) 500*94,97 94 IF(J-NEW) 96,98*96 (KeNEW-M 96 IJ«M*CJ-1)♦/ IP>!P*1 ОС IJ)«D(IJ>*D(lYP)«OCLYP)/RD * IFCILCI)) 130.130,120 97 D(LYP)«D(LYP>/RO 120 DO 126 J«1,N GO TO 100 98 0(IP)*1*0/RD 100 CONTINUE IFCLLCjn 126.122.122 C 13 122 IFCJ-NEV) 124,126.124 lYPnY*NEV 124 D(IJ)8O(!J)-D(IP)*O(IK) 126 CONTINUE
b(!P)at)(tP)/(-RO) 130 CONTINUE C 16 ftDSN^NSTfPU) Rd=qnm/ro 132 ANS(W=SQRT(1 .0-(1.0“ANS(6)*♦2)*RD) Ш ANS(11)sANS(8)*SQRT(RD) С о CALL STOUTCNSTEPI,&,$,I,NS TOP) ,C 18 Jf(NSTOP) 140.140>150 140 CONTINUE 150 RETURN E MD Подпрограмма PROBT Эта подпрограмма служит для получения оценок максималь- ного правдоподобия а и b для уравнения probit-анализа У=а + + ЬХ. Для- этого пользуются итеративной схемой. Вход в подпро- грамму состоит из К различных уровней Х2, ..Х^ — стимулов, примененных к Nu .N2, ...» Nk объектам с 7?i, R2, .. .,Rk реакциями соответственно. Описанная здесь процедура предполагает, что рас- пределение изучаемой величины нормально. Шаги вычисления бу- дут следующими: 1. Вычисление доли объектов, имеющих реакции для различных уровней стимулов: Ri Ni ’ где f=₽l, 2, ..., k — уровни стимулов. 2. Вычисление начальных оценок а и Ь уравнения probit-ана- лиза У = а + ЬХ следующим образом: Ь = a = Z — bX. (2) (3) где Xi — i-й уровень стимулов; Zt — 5 плюс стандартная нормальная переменная, соответст- вующая рс, т — число значений р, которые не равны ни 0.0, ни 1.0. 3. Вычисление ожидаемых значений probit-анализа с началь- ными оценками а и Ь: Yt = a + bXlt (4) где 4=1, 2, ..., k. 63
4. В соответствии с каждой величиной из У вычисляются: а) весовые коэффициенты для probit-анализа Wt PiQi ’ где Di — плотность нормальной кривой, соответствующая стан- дартной нормальной переменной Yi — 5; Pi — накопленная нормально распределенная величина, соот- ветствующая Yi — 5, б) рабочий ргоЫЬанализ:4 для Yi 5.0 y>=Y>-----%- + Р>-Т5Г’ (6> для Yt > 5;0 + ----(7) 5. Вычисление k \2 ~ ’ (8) i=1 Л ( S 2 NiWiyS S2 = S M WiXlyi - ---dSizl---------L (9) Z=1 2 NtWt ' /=1 / k \2 Si=^Ni Wrf - . (10) ,=I 2 Ni^t 1=1 k s.= 6. Вычисление новых лиза: оценок а и b для уравнения probit-ана- k k 2 NtWiyi 2 NtWXt ---------b._^-------, ^NiWt 2^'^ (И) (12) 64
7. Вычисление новых ожидаемых значений probit-анализа и сравнение их с величинами, вычисленными на предыдущей итера- ции: Yi^a + bX^ (13) k DSQ= У')2. (14) /=i Если разность между двумя последовательными значениями DSQ меньше либо равна 10~7, перейти к шагу 8 и вычислить %2. В про- тивном случае положить Уг=У/, где /= 1, 2, k, и перейти к шагу 4 для следующей итерации. 8. Вычисление %2 для проверки окончательного уравнения pro- bit-анализа k у2= V (/?/-МЛР . (15) где Pi — накопленная нормально распределенная величина, соот- ветствующая Zi zt — (а + bXt) — 5; а и b — вычисленные для окончательного уравнения probit-ана- лиза. 9. Определение числа степеней свободы для х2 d.f.=k-2. (16) Для справок см. [3], [4]. ПОДПРОГРАММА PROBT Назначение Получение оценок максимума правдоподобия для параметров А и В в урав- нении probit-анализа У = А + ВХ. Применяется итератйвная схема. Вход в под- программу состоит из К различных уровней доз, относящихся к группам субъек- тов и числу субъектов в каждой группе, имеющих реакцию на соответствующую дозировку медикамента. Обращение CALL PROBT (К, X, S, R, LOG, ANS, Wl, W2, IER) Описание параметров К — число различных уровней доз медикамента. К должно быть больше 2. X — вводимый вектор длиной К, содержащий уровни доз исследуе- мого медикамента. X не должен быть отрицательным. S — вводимый вектор длиной К, содержащий число проверяемых субъектов на каждый уровень дозы. R — вводимый вектор длиной К, содержащий число субъектов на каждом уровне, которые имели реакцию на медикамент. LOG — вводимый код выбора: 1 — если желательно преобразовать уровни доз в ло- гарифмический вид. В этом случае уровни дози- рования не должны быть нулевыми; О — если преобразование не требуется. ANS — выводимый вектор длиной 4, содержащий следующие резуль- таты: 3 Заказ № 617 65
ANS (1)—оценка константы пересечения А; ANS (2) — оценка коэффициента регрессий probit-анализа В; ANS (3) — величина хи-квадрат для проверки значимости окончательного уравнения probit-анализа; ANS (4)—степень свободы для статистики хи-квадрат. W1 — выводимый вектор длиной К, содержащий долю субъектов, имев- ших реакции на различные уровни доз медикамента. W2 — выводимый вектор длиной К, содержащий ожидаемые значения ‘ probit-анализа для различных уровней доз медикамента. ' IER — 1 — если К не больше 2; 2 — если некоторые уровни дозирования отрица- тельны, или если код выбора LOG равен 1, а не- которые уровни дозирования равны нулю; 3 — если некоторые элементы S не положительны; 4 — если число субъектов, имевших реакцию, больше числа испытуемых субъектов. Probit-анализ будет выполнен только в том случае, если IER равен нулю. В противном случае ANS, W1 и W2 при- нимаются равными нулю. Примечания Программа будет итерировать уравнения probit-анализа до тех пор, пока два последовательных решения не образуют разность, меньшую, чем 10** (—7). Требуемые функции и подпрограммы NDTR NDTRI Метод См. [4]. Перевод комментариев в тексте 1. Проверка на необходимость преобразования LOG. 2. Вычисление доли ответивших объектов. 3. Вычисление начальной оценки (свободного коэффициента регрессии) и коэффициента регрессии probit-анализа. 4. Вычисление ожидаемых значений probit-анализа. 5. Нахождение весовых коэффициентов для probit-анализа. 6. Вычисление служебного probit-анализа. J 7. Суммирование промежуточных результатов. 8. Вычисление новой оценки пересечения (свободного члена) и коэффициента регрессии. 9. Проверка изменения Y. 10. Запоминание пересечения и коэффициента регрессии. 1L Вычисление хи-квадрат. 12. Определение числа степеней свободы для хи-квадрат. l Каноническая корреляция В сборнике научных программ анализ канонической корреля- ции обычно выполняется путем обращения к следующим пяти под- - программам: 1. CORRE — для вычисления средних, стандартных отклонений и корреляционной матрицы. 2. MINV — для обращения части корреляционной матрицы. 3. EIGEN — для вычисления собственных значений и собствен- ных векторов. 66
SUBROUTINE PROBT(К»X,$,R,LOG»ANS»W1,W2»IER) DIMENSION X(1)*S(1),R(1)•ANSC1),W1(1),W2(1) c 1 f Продолжение) !ER«O P«U1(I) IFCK-2) 5,3.7 IF(P) 30,30,24 5 IER«1 24 IF(P-I.O) 25,30,30 GO TO 90 25 UN*UN^1.0 7 DO 8 1*1,K CALL NDTRI(P.2,0,IER) 1F(X(I))12,8,8 2«Z*5.0 8 CONTINUE XBARsXBAR*XС I) IFClOG-1) 16.10,16 SNWY«SNWY+2 Ю DO 15 I»1,K SXX«SXX*X(I IF(XCD) 12,12,14 SXY«SXY*XCI)*2 12 lERaJ 30 CONTINUE 80 TO 90 B*(SXY-CXBAR*SNWY)/WN)/(SXX-(XBAR*XBaR’/WN) 14 X(!)3AIOG10(X(I)) XBAR«XBAR/WN 15 CONTINUE SNWYsSNUY/WN C 2 A*SNWY-B*XBAR 16 DO 18 1*1,К 00*0.0 IFCSCD-RCI>) 17,18,18 C 4 17 IER*4 00 31 I«1,R *0 TO 90 31 W2(I )*A*B*X(I) 18 CONTINUE 33 SNVsO.O * 20 00 23 1*1,R SNWXaO.O IF(SCD) 21,21,22^ SNWYsO.O 21 IER*3 SNWXX*0.0 GO TO 90 22 W1(I)=R(I>/SC I) SNWXYsO.O 23 continue DO 50 I»1,K C 9 Y*W2(I) UN*0.0 C 5 KflAR«0.0 D»Y-5.0 SNWYsO.O CALL NDTR(O.P.Z) sxx«o.o G«1.0-P SXY*0.0 W»(Z*2)/(P*Q) DO 30 1*1,X 3*
е 6 IF(< aBS(OD-SXX)>-<1.0E-7)) 65.65.63 IMY-5.0) 35,35.40 63 OOsSXX 35 WP=(Y-P/2)*W1(I)/2 GO TO 33 GO TO 45 C 10 40 WP«(Y*Q/Z)-(1.0-W1(!))/2 ( 65 ANS(1)«A t 7 < ANS(2)«B 45 UM=W*S(I) c 11 snw«snw*un ANS(3)s0.0 SNWXs$NUX*WN*X(I) 00 70 I»1.K SNUY«sNWY♦WN*UP Y=W2(I)-S.O SNWXX*SNWXX*WN*X( CALL NDTft(V.P.O) 50 SNWXY«SNWXY*UN*X(I)*WP AAsRCI)-S(I)*P с 8 OD«S(I)*P*(1,0-P) XBARsSNWX/SNU 70 ANS(3)»ANS(3)♦AA3AA/00 SXX«SNWXX-(SNWX)*(SNUX)/SNV c 12 SXY3SNWXY-(SNUX)*(SNUY)/SNW ANS(4)»K-? 83$XY/SXX 80 RETURN A=SNWY/SNW-B*XBAR 90 00 100 lel.R с 9 U1(I)«0.0 SXXaQ.O 100 U2<I)=0.0 00 60 l»b« 00 HO !«>.< Y=A*B*X(T) 110 ANSCI)»0.0 0«W2(D-Y * GO TO 80 SXX3$XX*O*D - END 60 W2(!)«Y J 4. NROOT — для вычисления собственных значений и собствен- ных векторов действительной несимметрической матрицы в виде В-1 Л. 5. CANOR — для вычисления канонической корреляции и коэф- фициентов. Подпрограмма CORRE может работать по любому из двух путей: 1) при предположении, что все наблюдения находятся в оперативной памяти; 2) с помощью программы DATA, составленной пользователем для считывания по одному наблюдению за 1 раз для ввода в рабочее поле. В любом случае пользователь должен иметь подпрограмму DATA (см. «Требуемые подпрограммы» в описании подпрограммы CORRE). 68
Подпрограмма CANOR Эта подпрограмма выполняет канонический корреляционный анализ между двумя совокупностями переменных. Матрица взаимной корреляции R делится на четыре подмат- рицы: ₽=[тг-пН’ 0) L П21 | А 22.1 где Ru — взаимная корреляция между р переменными в первой со- вокупности (переменными, находящимися на левой сто- роне); 7? 12 — взаимная корреляция между переменными первой и вто- рой совокупности; Т?21 — транспонированная подматрица R12; R22— взаимная корреляция между q переменными второй со- вокупности (переменными, находящимися на правой сто- роне). Затем решается следующее уравнение: I RnRnRn — X/1 = 0 (2) для получения всех значений собственных величин X, применяя следующие матричные операции: T=R^Ru-, (3) А = /?21Г (4) и обращаясь к подпрограмме NROOT для вычисления собствен- ных значений (Х«) и соответствующих собственных векторов Яй1 А, где i = 1, 2, ..., q. Для каждого индекса i = 1, 2, ..., q вы- числяются следующие статистики. Каноническая корреляция CANR = /I^ (5) где X» — i-e собственное значение. Х-квадрат Х2 = — [« — 0,5 (р + 7 + 1)] loge Л, (6) где п— число наблюдений; Л — лямбда, вычисленная следующим образом: Л = П (1 - Xz). Число степеней свободы для %2 DF = [/? — (г —- 1)J [^ — (Z — 1)]. (7) 69
l-и ряд коэффициентов правой стороны ьк = (8) где vki — собственный вектор, соответствующий Л.,; £=1, 2, q. t-й ряд коэффициентов левой стороны ч 2 Wk ai= CANR ’ где {tjb} = Т=RnRni j=l, 2, .р. ПОДПРОГРАММА CANOR Назначение Вычисление канонических корреляций между двумя совокупностями пере- менных. Подпрограмме CANOR обычно предшествует обращение к подпро- грамме CORRE. Обращение CALL CANOR (N, MP, MQ, RR, ROOTS, WLAM, CANR, CHISQ, NDF, COEFR, COEFL, R) Описание параметров N — число наблюдений. SP — число переменных с левой стороны. 3 — число переменных с правой стороны. RR — вводимая матрица (только верхняя треугольная часть симмет- рической матрицы М X М, где М = MP + MQ), содержащая коэффициенты корреляции. (Способ хранения 1.) ROOTS — выводимый вектор длиной MQ, содержащий собственные значе- ния, вычисленные в подпрограмме NROOT. WLAM — выводимый вектор длиной MQ, содержащий лямбду. CANR — выводимый вектор длиной MQ, содержащий канонические корре- ляции. CHISQ—выводимый вектор длиной MQ, содержащий значения хи-квад- рат. • ' NDF — выводимый вектор длиной MQ, содержащий числа степеней сво- боды, соответствующие хи-квадрат. COEFR — выводимая матрица (MQ X MQ), содержащая MQ рядов коэф- фициентов правой стороны, хранимых по столбцам. COEFL — выводимая матрица (MP X MQ), содержащая MQ рядов' коэф- фициентов левой стороны, хранимых по столбцам. R — рабочая матрица М X М. Примечания Число переменных с левой стороны (МР) должно быть больше либо равно числу переменных с правой стороны (MQ). Значения канонической корреляции, лямбда, хи-квадрат, число степеней свободы и канонические коэффициенты вы- числяются только для тех корней собственных значений, которые больше нуля. Требуемые функции и подпрограммы MINV NROOT (которая в свою очередь обращается к подпрограмме EIGEN). Метод См. [5]. 70
SUBROUTINE CANORCN.MP,MQ,RR,ROOTS.WLAM,CANR.СHISQ,NDF.COEPR. 1 COEFl.R) DIMENSION RR(1 ) ,R00TS<D.ULAM(1) .CANRC1) .CHISQC1) .NDFC1). R COEFR(1),COEFL(1).R(1) C 1 C DOUBLE PRECISION RR.ROOTS.WLAM,CANR.CHISO.COEFR.CQEFL.R.OET.SUM C 2 {Продолжение) C 3 00 120 I=N2.M MsMP^MO l=L*1 N1=O N1=N1*1 00 105 1=1.M 120 C0EFR(L)»R(Nlf ' DO Ю5 J = 1.M C 4 IFCI-J) 102.103.103 L=MP*MP*1 102 L=I*(J*J-J)/2 К»1«-МР GO TO 104 CALL MINV (R.MP.DET.RCL)•R€XfV 103 l»J + ( I* I-I)/2 C $ 104 N1xN1*1 00 140 1=1.MP 105 R(N1)&RR(L> N2»0 L=MP 00 130 J31.M0 00 108 J®2.MP N1=I-MP N1=M*(J-1) R00TS(J)c0.0 00 108 1x1.MP 00 130 Kxl.MP L = L*1 N1=N1*MP N1=N1*1 N?=N2*1 108 R(L)sR(N1> 130 ROOTS(J)«ROOTS(J)*R(N1>*C0EFLcA2> N2eMP+1 L=I-MP L«0 00 140 J=1.MQ 00 110 JSN2.M L=L*MP N1xM*(J-1) 140 R(L)«ROOTS(J) 00 110 1x1.MP C 6 1 = 1*1 LsMP*MQ N1=N1*1 N3=L*1 110 COEFLC L) = R (ND 00 160 Jxl.MQ L=0 N1=O 00 120 J=N2.M 00 160 I=1.MQ N1=M*(J-1)*MP N2=M0*(J-1)
SUM«0.0 •0 ISO Кз1,и» N2»H2<1 ISO SUMsSUH*COEFL(N1)»ft(ll2> L»l*i 460 R(Lft*SUM t » С»1*1 CALL NROOT(NO.R(ft3>•COEFR.ROOTSrR<L)) C 6 00 210 ixl.NO C 9 IFtftOOTS(l)) 220.220.165 C 10 <65 CANR(I)«5QRT(ROOTS(I>> C 11 wlAM(1)«1 .0 00 170 J«1.MO 1?0 WLAM(|)CWLAM(!)M1.0-ROOTS(J)I FW = M FMftxMP FMQsMQ 1?5 С H 1 SO ( I ) c-( FN*O • 5 *6*FMP* FMO* 1 «0)) 1*ALOG<WLAm(I>) c 12 f|OF( DXMP-N1 )<(M0-N1 ) C 13 N1«MQ*(I-1) 02=MQ*61-1)*L^1 •0 180 J=1»MQ N1«N1*1 W2^N2*1 I 180 CpEFR(N1)«R(tt2) C 14 00 200 J31.MP wi«j-MP M2sM0*(1-1 > <XMP*(1-1)4J COEFL(K)«0.0 00 190 JJxl.NO N1=«1*MP fi2«M2«1 190 C06FL(К)sCOEFL(К)*R(N1)*COEFR(N?> 200 C06FL(K)sC0EFL4K)/CANRCl) ?1O CONTINUE 220 RETURN END Перевод комментариев в тексте 1. Если необходимо пользоваться версией этой подпрограммы, отвечающей i вычислениям с двойной точностью, то С в первом столбце в следующем опе- раторе двойной точности должно быть опущено. 2. С должно быть опущено также и из операторов двойной точности, на- ходящихся в других программах, используемых совместно с этой программой. ; Вариант этой программы для работы с операндами двойной точности должен также содержать функции Фортрана двойной точности. SQRT в операторе 165 должен быть заменен на DSQRT. ALOG в операторе 175 должен быть заменен на DLOG. 3. Разделение взаимных корреляций между переменными левой стороны, между переменными левой и правой сторон и между переменными правой сто- роны. 4. Решение канонического уравнения. ,1 5. Вычисление Т = обращение Rn*Ri2. ! 6. Вычисление А = /?21*Г- | 72 ИЗ'
7. Вычисление собственных значений с соответствующими собственными век- торами для обращения 7?22*^« 8. Для каждого значения 7=1, 2, ...» AfQ вычисляются следующие ста- тистики. 9. Проверка, является ли собственное значение положительным. 10. Каноническая корреляция. И. Хи-квадрат. 12. Число степеней свободы для хи-квадрат. 13. 7-й ряд коэффициентов йравой стороны. 14. 7-й ряд коэффициентов левой стороны. Планируемый анализ (см. сглаживание, регрессия, факториза- ция). В сборнике научных подпрограмм анализ дисперсий обычно выполняется путем обращения к трем подпрограммам в такой последовательности: 1. AVDAT —для помещения данного в соответствующие рас- пределенные места памяти. 2. AVCAL —для применения операторов сигма и дельта для вычисления отклонений при анализе дисперсий. 3. MEANQ — для объединения отклонений и вычисления сумм квадратов, числа степеней свободы и средних квадратов. Подпрограмма AVDAT Эта подпрограмма помещает данные для анализа дисперсий в соответствующие распределенные места Памяти. Размер массива данных с наименованием X, требуемый для анализа дисперсий, вычисляется следующим образом: п= D^+l), (1) где Ц — число уровней ьго фактора; k — число факторов. Вводимые данные помещаются в нижней части массива и вре- менно перемещаются в верхнюю часть массива. Отсюда данные перераспределяются в соответствии с уравнением (4), приводимым ниже. Перед этим произведения Sj, которыми пользуются для на- хождения соответствующего места в памяти, вычисляются следую- щим образом: s, = l. (2) ^•=п\л+1), (3) где / — 2, 3,..., k. Затем по следующему уравнению вычисляется место для поме- щения каждой точки данных. к S = KOUNTj -J- S (KOUNTy - 1), (4) У»2 73
где KOUNTj — значение /-го индекса помещаемого данного. Эта подпрограмма увеличивает значения индексов после каждой помещенной точки данных. ПОДПРОГРАММА AVDAT Назначение Помещение данных для анализа дисперсий в распределенные соответствую- щим образом места памяти. За этой подпрограммой обычно следуют обраще- ния к подпрограммам AVCAL и MEANQ при выполнении анализа дисперсий для полного факторного расчета. Обращение CALL AVDAT (К, LEVEL, N, X, L, ISTEP, KOUNT) Описание параметров К —число переменных (факторов). К должно быть больше единицы. LEVELвводимый вектор длиной К, содержащий уровни (категории) внутри каждой переменной. N — общее число считываемых точек данных. X — при обращении к подпрограмме этот вектор содержит данные в ячейках, начиная от X (1) до X (N). При возвращении к обра- тившейся программе вектор содержит данные в распределенных соответствующим образом ячейках вектора X. Длина вектора X рассчитывается прибавлением единицы к каждому уровню пе- ременных и вычислением накопленного произведения всех уров- ней. (Длина X = (уровень (1) + 1) *... (уровень (2) + 1)# ... # (уровень (К) 4-1) ) L — выводимая переменная, содержащая позицию в векторе X, где помещена последняя введенная переменная. I STEP — выводимый вектор длиной К, содержащий управляющую после- довательность шагов, служащую для помещения данных в соот- ветствующие места вектора X. KOUNT — рабочий вектор длиной К. Примечания Вводимые данные должны быть организованы следующим образом. Рассмотрим анализ дисперсии трех переменных, где одна переменная имеет 3 уровня, а две другие переменные — пр два уровня. Данные могут быть пред- ставлены в виде X (I, J, К); 1 = 1, 2, 3; J = 1, 2; К = К 2 В структуре данных внутренний индекс с наименованием I изменяется первым. Когда I = 3, изме- няется следующий внутренний индекс J, и так до тех пор, пока 1 = 3, J = 2 и К = 2. Требуемые функции и подпрограммы Нет. Метод Метод основывается на способе, описанном в [6]. Перевод комментариев в тексте 1. Если необходима версия этой подпрограммы, отвечающая вычислениям с двойной точностью, то С в первом столбце в следующем операторе двойной точности должно быть опущено. 2. С должно быть опущено также и из операторов двойной точности, нахо- дящихся и других программах, используемых совместно с этой программой. ( 3. Вычисление общей длины требуемого массива данных. 74
subroutine Amni'ifvtbM'Uiste*.*oun™ DIMENSION. LEVEL<1 ).X(1 )• 1STEPC1 bKQUNTCI) t 1 (Продолжение} с 00U8LE PRECISION Ж 115 K0UNT(I)*1 с г c 0 с 3 N1BN1.4 MelEVELd 00 135 1*1.N 00 105 Т«2.К L8K0UNTC1) 105 М»М* ( LEVEL (1М1Э 00 120 Js2.K с 4 120 1*1STEPfJ)*(KOUNT(J)-1э N1«M*1 N1«N1*’ Ы2»Н*1 X(D*X<N1’ 00 10? 1*1, N 00 130 J«1.H N1=N1-1 IF(KOUNT(j)»iEvEl(J)) 12*.125.124 N2=N2-1 124 КQUNT(J)=KOUNT(J)♦1 1 07 X(N1)=X(N2) 00 TO 135 с 9 125 K0UNT(J>*1 ISTEP(1>si 130 CONTINUE 00 110 1=2.Г 135 CONTINUE 110 I STEP(I) =ISTEP(1-1)•(LEVEL(1-1)*1> RETURN "" 00 115 181.1 ENO 4. Перемещение данных в верхнюю часть массива X с целью перестройки структуры. 5. Вычисление произведения, используемого при нахождении ячеек памяти для введённых данных. 6. Помещение данных в соответствующие ячейки. Подпрограмма AVCAL Эта подпрограмма выполняет вычисления для общего Л-фактор- ного эксперимента: оператор 2 и оператор Д. Приводим пример для k = 3 для иллюстрации действия этих операторов. Пусть Xabc обозначает экспериментальные отсчеты с а-го уровня фактора А, 6-го уровня фактора В и с-го уровня фактора С. Сим- волы А, В и С будут также означать число уровней для каждого фактора, так что а = 1, 2, ..., A; b = 1, 2, ..., В; с= 1, 2, ..., С. Относительно первого фактора А: оператор 2 = сумма по всем уровням а= 1, 2, ..., А, при пред- fl положении, что остальные индексы находятся на постоянных уровнях; 75
оператор Д « умножение всех позиций на Л и вычитание резуль- а тэта S из всех.позиций. а Математическая запись этих операторов определяется следующим образом: А S ХаЬс = 'bc= Zj ХаьС9 0) а с=1 ^^abc== ^^abc *Ьс* (2) а Операторы S и А применяются последовательно относительно фак- торов А, В и С. После выполнения этих операторов массив памяти X содержит отклонения, служащие для компонент дисперсионного анализа в подпрограмме MEANQ. ПОДПРОГРАММА AVCAL Назначение Выполнение вычислений факторного эксперимента с помощью оператора сигма и оператора дельта. Этой подпрограмме предшествует подпрограмма AVDAT, и за ней следует подпрограмма MEANQ при выполнении дисперсион- ного анализа в полном факторном расчете. Обращение CALL AVCAL (К, LEVEL, X, L, ISTEP, LASTS) Описание параметров К—число переменных (факторов). К должно быть больше единицы. LEVEL — вводимый вектор длиной К, содержащий уровни (категории) внутри каждой переменной. X — вводимый вектор, содержащий данные *. В векторе X данные размещаются подпрограммой AVDAT. Длина X равна (уро- вень (1) + 1)*(уровень (2) + 1)#. ..# (уровень (К) + О. L — позиция в векторе X, где помещены последние введенные дан- ные. L вычисляется подпрограммой AVDAT. ISTEP — вводимый вектор длиной К, содержащий управляющую после- довательность шагов, которая вычисляется подпрограммой AVDAT. , LASTS — рабочий вектор длиной К. Примечания Эта подпрограмма должна следовать за подпрограммой AVDAT. Требуемые функции и подпрограммы Нет. Метод Метод основывается на способе, описанном в [6]. ————— • * Этот вектор при выходе содержит результат работы подпрограммы.— Прим, перев 76
SUBROUTINE AVCALCt.LEVEl.X.l. I STEP* LASTS) DIMENSION LEVEL(1 ).X (1 ) ,ISTEP<1>.LASTS<1) с 1 (Продолжение) с DOUBLE PRECISION X»SUM 160 l«lhncre с г X(L)«SUM с J c 6 LASTS(1)=L*1 00 165 J«1.NN 00 145 I «2. К X( LL)«FNM(LL>-SU* 145 LASTS(I)«LASTS<1-1)♦ISTEPt!) 165 LL«l»L*!NCRi С 4 SUH«0.0 150 DO 175 tsI.R IF(L*IAST) 167.175.175 l«1 167 U(l-LAST+INCRE> 168.166.170 LL«1 168 l«l*incre SUMaQ.O LL=LL*!NCRf NNslEVELCU 60 TO 155 fn«nn i?o l«l*incre»i-last INCRE«1$TEP(I) LL«LL*INCRE+1-LAST LASTwLASTSCI) 60 TO 155 е 5 175 continue 155 00 160 4»1,NN RETURN CL> < ENO Перевод комментариев в тексте 1. Если необходимо использовать версию этой подпрограммы, отвечающую вычислениям с двойной точностью, то С в первом столбце в следующем опе- раторе двойной точности должно быть опущено. 2. С должно быть опущено также и из операторов двойной точности, нахо- дящихся в других программах, работающих совместно с этой программой. 3. Вычисление последней позиции данных для каждого фактора, 4. Вычисление операторов. 5. Сигма-операция. 6. Дельта-операция. Подпрограмма MEANQ Эта подпрограмма выполняет операцию вычисления средних квадратов для общего k-факторного эксперимента в последователь- ности, состоящей из двух шагов: 1. Возведение в квадрат каждой величины отклонения для ана- лиза дисперсии, находящейся в массиве X, который появляется в результате применения операторов 2 и Д в подпрограмме AVCAL. 2. Суммирование квадратов величин в соответствующие места памяти для сумм. Например, при трехфакторном эксперименте 77
квадраты величин суммируются в одном из семи мест памяти (7 = 23—1), как показано в первом столбце табл. 1. Символы А, В и С в первом столбце обозначают фактор А, фактор В и фак- тор С. После окончания операции вычисления средних квадратов для всех величин в массиве памяти X подпрограмма образует суммы квадратов анализа дисперсии, деля общую сумму квадратов вели- чин на соответствующий делитель. Эти делители для трехфактор- ного эксперимента, рассмотренного выше, показаны во втором столбце табл. 1. Символы А, В и С во втором столбце обозначают число уровней для каждого фактора. Затем подпрограмма образует средние квадраты, деля суммы квадратов на число степеней свободы. Третий столбец суммарной таблицы представляет числа степеней свободы. Символы А, В и С означают число уровней для каждого фактора. Таблица 1 Таблица распределения памяти для суммирования, делителей для образования сумм квадратов и степеней свободы (подпрограмма MEANQ) Назначение памяти и величины, в ней содержащейся Делитель, требующийся для образования суммы квадратов дисперсионного анализа Число степеней свободы, требующихся для образования средних квадратов (А)3 АВС • А (А-1) (В)3 АВС • В (В-1) (АВ)3 АВС • АВ (А-1) (В-1) (С)3 АВС • С (С-1) (АС)3 АВС • АС (А-1) (С-1) (ВС)3 АВС • ВС (В-1) (С-1) (АВС)3 АВС • АВС (А-1) (В-1) (С-1) ПОДПРОГРАММА MEANQ Назначение Вычисление сумм квадратов, числа степеней свободы и средних квадратов с помощью оператора средних квадратов. Эта подпрограмма обычно следует за обращением к подпрограммам AVDAT и AVCAL при дисперсионном анализе в полном факторном расчете. Обращение CALL MEANQ (К, LEVEL, X, GMEAN, SUMSQ, NDF, SMEAN, MSTEP, KOUNT, LASTS) Описание параметров К —число переменных (факторов). К должно быть больше единицы. LEVEL — вводимый вектор длиной К, содержащий уровни (категории) внутри каждой переменной. X — вводимый вектор, содержащий результаты действия операторов сигма и дельта. Длина X равна (уровень (1) + 1)# (уровень (2) 4- + !)*••** (уровень (К) + 1). 78
SUBROUT I NE MEANO(K.LEVEL.X.GMEAN.SUMSQ.NOF.SMEAN•MSТЕP•MOUNT» 1 LASTS) О 1MENS I ON LEVEL<1>.X(1). SUMSQC 1 )♦ NOF(1>•SMEAN(1).MSTEP<1)» 1 COUNT(1).IASTS<11 e ) e DOUBLE PRECISION X. GMEAN,SUMSQ*SMEAN,FN1 C 2 e 1 MSLEVELC1> DO 150 1=2.*0 150 N«N*LEVEL( I > e a LA STS(1) = LEVELСH DO 178 l«2.K 1.78 LASTS(I) = LEVEL< 1)«-1 NM=1 C 5 MSTEPC1)sl DO 180 1=2. К 180 MSTEPCI)8MSTEP(I’1)*2 00 185 I31.LL 185 SUMSQ(t)90»0 C 6 DO 190 t=1.R 190 KOUNT(1)=O 200 L=0 00 260 tsi.K IFCKOUNH I )-LAsTS(D> 210,£50.*10 210 IF<L) 220.220.240 220 KOUNTCI)=KOUNT(I)*1 IF(MOUNT(I)-LEVEL(I)) 230.250.250 230 LeL*MSTEP(I) GO TO 260 240 tF<MOUNT(I)-lEVELСI)> 230.260,230 250 KOUNTCpeQ (Продолжение} 260 CONTINUE IF(L) 285.285.270 270 SUMSQ(L)=SUMSQ(L)*X(NN1*X(NN>! NN«NN*1 GO TO 200 C 7 285 F№N GMEAN«X(NN)/FM C 8 DO 310 1=2.X 310 MSTEP<I)«O NN«O MSTEP(1)»t 320 N01e«| , ND2«1 DO 340 l«1.K (F(MSTEP(t>) 330.340.330 330 ND1«N01*LEVEL<D ND2«N02*(LEVEL(I>-1) 340 CONTINUE FN1=N*ND1 FN2«N02 NN=NN*1 SUMSQ(NN)aSUMSQ(NN)/FN NDF(NN)=N02 SMEAN(NN)sSUMSQ(NN)/FN2 IF(NN-LL) 345.37Q.370 345 00 360 1=1,X
!F(MSTeP(I>) 347.350,347 34? MST£P(I)»0 60 TO 360 350 MSTEP(I)«1 GO TO 320 360 CONTINUE 370 RETURN END GMEAN — выводимая переменная, содержащая итоговое среднее. SUMSQ — выводимый вектор содержащий суммы квадратов. Длина SUMSQ равна двум в k-й степени минус один. (2**К) — 1. NDF — выводимый вектор, содержащий число степеней свободы. Длина вектора NDF равна двум в k-й степени минус один. (2** К) — 1. SMEAN — выводимый вектор, содержащий средние квадраты. Длина век- тора SMEAN равна двум в k-й степени минус один. (2**К) — 1. MSTEP — рабочий вектор длиной К. KOUNT — рабочий вектор длиной К. LASTS — рабочий вектор длиной К. Примечания Эта подпрограмма должна следовать за подпрограммой AVCAL. Требуемые функции и подпрограммы Нет. Метод Метод основывается на способе, описанном в [6]. Перевод комментариев в тексте 1. Если необходима версия этой программы, отвечающая вычислениям с двойной точностью, то С в первом столбце в следующем операторе двойной точ- ности должно быть опущено. 2. С должно быть опущено также и из операторов двойной точности, на- ходящихся в других программах, работающих совместно с этой программой. 3. Вычисление общего числа данных. 4. Настройка управления для оператора средних квадратов. 5. Очистка поля для хранения сумм квадратов. 6. Исполнение оператора средних квадратов. 7. Вычисление итогового среднего. 8. Вычисление первого делителя для образования суммы квадратов и вто- рого делителя (который равен числу степеней свободы), необходимого для образования средних квадратов. Дискриминантный анализ В этом наборе научных программ дискриминантный анализ обычно выполняется путем обращения к трем подпрограммам в такой последовательности: 1. DMATX — для вычисления среднего переменных в каждой группе и объединенной дисперсионной матрицы. 2. MINV —для обращения объединенной дисперсионной мат- рицы. 3. DISCR —для вычисления коэффициентов дискриминантных функций и оценки функций для каждого наблю- дения (в отдельности). 80
Подпрограмма DMATX Эта подпрограмма вычисляет средние переменных в каждой группе и объединенную дисперсионную матрицу для совокупности групп в дискриминантном анализе. Для каждой группы k=l, 2, g подпрограмма вычисляет средние и суммы взаимных произведений отклонений от средних, как показано ниже. Средние 2? __ ,2 = (О где пл — размер выборки в fe-й группе; j—1, 2, ..., т — переменные. Сумма взаимных произведений отклонений от средних (2) где/=1, 2......т; 1= 1, 2, ..., т. Объединенная дисперсионная матрица вычисляется следующим образом: g (3) где g — число групп. ПОДПРОГРАММА DMATX Назначение Вычисление средних для переменных в каждой группе и объединенной дис- персионной матрицы для всех групп. Обычно эта подпрограмма служит для выполнения дискриминантного анализа. Обращение CALL DMATX (К, М, N, X, XBAR, D, CMEAN) Описание параметров К — число групп. М — число переменных (должно быть одинаковым во всех группах). N — вводимый вектор длиной К, содержащий размеры выборок групп. X — вводимый вектор, содержащий данные, организованные по спо- собу, эквивалентному трехмерному массиву в Фортране, X (1, 1, 1), X (2, 1, 1), X (3, 1, 1) и т. д. Первый индекс —но- мер события, второй — номер переменной, третий — номер группы. Длина вектора X равна общему числу точек данных Т*М, где T = N (1) +N (2) + .,. + N(K). 81
XBAR — выводимая матрица (М X К), содержащая средние переменных в К группах. D — выводимая матрица (М X М), содержащая объединенные дис- персии. CMEAN — рабочий вектор длиной М. Примечания Число переменных должно быть больше либо равно числу групп. Требуемые функции и подпрограммы Нет. Метод См. [7], [8]. SUBROUTINE OmATX(R»M,N»X,X8AR»DiCMEAN) 01 ME ON N (1)«X (1Ь X BAR <Л ) । D Cl I 1 * с t 60U8LE PRECISION XBARiDiCMEAN с । (Продолжение) с 3 00 150 IM.N1 00 100 00 140 J*1’11 100 oam.o il=ll+ni € * N2=LMEAN*J Л 140 CMEAN(J)5X(LD“XBAR(N2> N4»0 t=o ll=0 ’ 00 1 50 -J = 1,M LW«O . «2Л . 00 150 JJ=1,N 00 160 N G s 1»1 W1=N(NG) LL=LL+1 FN=N1 » 150 D(LL)=D(LL)+CM£AN(J7*CMEANCJJX 00 130 JSbB 160, N4 = N4^II LM«LM+1 c 6 $BAR( LM)=7).O lL-“* DO 120 1*1,N1 00 170 Isl** l = l + 1 170 LL=Ll*N<n 120 XВ AR(1М)=Х0AR(L^)♦X(L> fN«|A 130 XBAR(LM)=XBAR(lM)/FN 00 180 1*1*мм ( 5 180 0( I)«0(D/FN С 5 RETURN IMEAN=|„M-M eN° 82
Перевод комментариев в тексте к Если необходима версия этой программы, отвечающая вычислениям с двойной точностью, то С в первом столбце следующего оператора двойной точ- ности должно быть опущено. 2. С должно быть также опущено и из операторов двойной точности, нахо- дящихся в других программах, работающих совместно с этой программой. 3. Подготовка. 4. Вычисление средних.. 5. Вычисление сумм взаимных произведений отклонений. 6. Вычисление объединенной дисперсионной матрицы. Подпрограмма DISCR Эта подпрограмма выполняет дискриминантный анализ при расчете совокупности линейных функций, которые служат указа- телями для классификации индивидуума в одну из К групп. Для всех групп сочетаний получаем следующее. Общие средние g _ _ S nkxjk *!=—,-----------------------------, (1) где g— число групп; / = 1, 2, m— переменные; пл — размер выборки в k-й группе; Xjk — среднее /-й переменной в k-й группе. Обобщенную D2 статистику Махаланобиса V: ' m m g У= S S d„ S nk (xlk - X,) (xJk - Xf), (2) 1=1j=l k=l где da — обратные элементы объединенной дисперсионной матрицы D. V может быть использовано как хи-квадрат (если распределе- ние предположить нормальным) с m (g—1) степенями свободы для проверки гипотезы, что средние значения одинаковы во всех g группах для данных пг переменных. Для каждой дискриминант- ной функции kt = \, 2, .... g вычисляются следующие статистики: Коэффициенты m Cikt = dqX^, (3) где Z= 1, 2, ../и; k —— • Константа (4) 83
Для каждого t-ro события в каждой fe-й группе выполняются следующие вычисления. Дискриминантные функции — S CjkXijk 4" (5) где kt = 1, 2, ..., g. Вероятность, соответствующая наибольшей дискриминантной функции Р£ =------------!--------- *«=1 (6) где {ь — значение наибольшей дискриминантной функции; L — индекс наибольшей дискриминантной функции. ПОДПРОГРАММА DISCR Назначение Вычисление совокупности линейных функций, которые служат как указа- тели для классификации индивидуума в одну из нескольких групп. Обычно эта подпрограмма используется при выполнении дискриминантного анализа. Обращение CALL DISCR (К, М, N, X, XBAR, D, CMEAN, V, С, Р, LG) Описание параметров К — число групп. К должно быть больше единицы. М — число переменных. N — вводимый вектор длиной К, содержащий размеры выборок по группам. X — вводимый вектор, содержащий данные, организованные по спо- собу, эквивалентному трехмерному массиву в Фортране X (1, 1, 1), X (2, 1, 1), X (3, 1, 1) и т. д. Первый индекс — номер события, второй — номер переменной, третий — номер группы. Длина вектора X равна общему числу точек данных Т*М, где T = N(l)+N(2)+...+N(K). XBAR — вводимая матрица (М X К), содержащая средние М перемен- ных в К группах. D — вводимая матрица (МХМ), содержащая обращенную объеди- ненную дисперсионную матрицу. CMEAN — выводимый вектор длиной М, содержащий общие средние. V — выводимая переменная, содержащая обобщенный показатель D-квадрат Махаланобиса. С — выводимая матрица (M-f-lxK), содержащая коэффициенты дискриминантных функций. Первая позиция каждого столбца (функции) содержит значение константы для этой функции. Р — выводимый вектор, содержащий вероятности, связанные с наи- большей дискриминантной функцией всех событий и всех групп. Вычисленные результаты хранятся по способу, эквивалентному двумерному массиву (первый индекс — номер события и вто- рой— номер группы). Вектор Р имеет длину, равную общему числу событий Т (Т = N(l) + N(2) +... + N(К)). LG —выводимый вектор, содержащий индексы наибольшей дискрими- нантной функции, хранимой в векторе Р. Длина вектора LG та же, что и у вектора Р. 84
SUBROUTINE ОISCRС XN,X.XBAR.О.CMEAN.V,С,P.LG) DIMENSION N( D,X(1>,XBAR(1)•0(1>•CMEAN(1),C(D.PC1).L6C1) c c DOUBLE PRECISION XBAR.O,CMEAN.V.C.SUM.P.Pl 2 (Продолжение) c • S l«L*l N1«N(1> 160 V»V*D(L)*SUH 00 100 I«2.K C 5 100 N1sN1*NCI> N2»0 FNT»N1 00 190 KA«DR 00 110 181.» 00 170 («1.N 110 P(D*N(I) Ji2«N2*1 00 130 I«1,N 170 P(I)=XBAR(N2) CMEANCDsO (Q«(M*D*(KA-1 )*1 N1«I-M SUM«0.0 00 120 00 180 J81«N N1=N1*N •jfbj.K 120 CMEANCD3CNEANCI)*P(J)*X8AR(N1) 00 180 t«1»N 130 CMEANCIJSCMEANCI)/FN1 N1SNOM c. A 180 SUH«$UM4OCN1 »*P(J)*P(U l«o C(!Q)«-($UM/2.0> 00 140 13.1, К 1 00 190 ishH 00 140 J=1.H NTM-H L»L*1 10810*1 HO C(L)«XBAR( D-CMEANCj ) C(!0)8Q.0 V»0.0 00 190 J81,J* l«0 N18N1*M 00 160 J=1.M 190 CCIQ)3C(IQ>*0CNl)*P<n 00 160 tal.M C 6 Nlsl-N C 7 N2«J-M SUM«0.0 CBASE80 00 150 U«1.I 11180 N1«N1<N *2«N2*M 150 SUN»SUM*P( IJ)*C(N1)*C(N2)
00 270 KG = 1,к NNSN(KG) 00 260 1=1,NN ls!’NN*l0A.SE 00 200 J=1,M l=L*NN 200 0(J)aX(L> N2 = 0 00 220 KA=1,K N2=N2*1 SU№CCN2‘ DO 210 J = 1 .M N2=N2*1 21'0 SUM=SUH*C (N2) *0 C j ) 220 X.8 AR (KA > =SUN C 8 1 = 1 SUMsXBAR(l) ©0 240 J=2»K !F(SUM-XBAR(J)) 2304240,240 Z30 L=J SUM=XBAR(J) 2Z0 CONTINUE C 9 Pl«0.0 00 250 J=1,K 250 Pl=PL* EXP(X8AR(J)-SUM) N1=N141 LGCN1)=l 260 P(N1)=1.0/Pl 270 LBASE = LBAS£_+NN*M return ENO Примечания Число переменных должно быть больше либо равно числу групп. Требуемые функции и подпрограммы Нет. Метод См. [7], [8]. • Перевод комментариев в тексте I. Если необходимо пользоваться версией этой программы, отвечающей вы- числениям с двойной точностью, то С в первом столбце следующего оператора двойной точности должно быть опущено. 2. С должно быть опущено также и из операторов двойной точности, нахо- дящихся в других программах, работающих совместно с этой подпрограммой. Версия этой программы для работы с операндами двойной точности должна также содержать функции Фортрана двойной точности. ЕХР в операторе 250 должен быть заменен на DEXP. 3. Вычисление общего среднего. 4. Вычисление обобщенного показателя D-квадрат Махаланобиса. 5. Вычисление коэффициентов дискриминантных функций. 6. 7. Для каждого события в каждой группе вычисляются дискриминантные функции. 8. Наибольшая дискриминантная функция. 9. Вероятность, связанная с наибольшей дискриминантной функцией. 86
Факторный анализ (см. анализ собственных величин) * В этом наборе научных подпрограмм факторный анализ обычно выполняется путем обращения к пяти подпрограммам в такой последовательности: 1. CORRE —для нахождения средних, стандартных отклонений и корреляционной матрицы. 2. EIGEN —для вычисления собственных значений и соответ- ствующих собственных векторов корреляционной матрицы. 3. TRACE — для выбора собственных значений, больших либо равных контрольному значению, указанному поль- зователем. 4. LOAD —для вычисления матрицы факторов. 5. VARMX — для выполнения варимаксного вращения матрицы факторов. Подпрограмма CORRE работает двумя возможными способами: 1) предполагается, что все наблюдения помещены в оперативной памяти; 2) используется подпрограмма для ввода DATA, состав- ленная пользователем для считывания наблюдений по одному на рабочее поле. В любрм случае пользователь обязан обеспечить наличие подпрограммы DATA (см. «Требуемые подпрограммы», указанные в описании подпрограммы CORRE). Подпрограмма TRACE Эта подпрограмма находит k — число собственных значений, больших либо равных значению заданной константы. Заданные соб- ственные значения Xi, Хг, ...» должны быть упорядочены в убы- вающем порядке. Накопленные отношения ** для этих k собственных значений равны: = ' 0) где j — 1, 2, k\ т — число собственных значений (или переменных); k tn. * В факторном анализе при обработке наблюдаемых случайных переменных Хь *2, . .хР делается основное предположение, что k ~ I'lrfr “Ь eb Г = 1 где fr — r-й фактор; k — точно задано; — остаток, действующий только на Цг—нагрузка r-го фактора в i-й переменной. Так как факторы fr могут быть заменены любым ортогональным преобразованием (вращениехМ с соответствующим преобразованием нагрузок), то вращение подбирается так, чтобы определенные переменные имели наиболее высокие нагрузки на один фактор и почти нулевые на другие факторы (см., например, Д. Л о у л и, А. Максвелл. Факторный анализ как статистический метод. М., «Мир», 1967). — Прим, перев. * * В английском тексте стоит percentages—процентовка, но по смыслу алго» ритма эта величина — отношение.— Прим, перев. 87
ПОДПРОГРАММА TRACE Назначение Вычисление накопленных отношений собственных значений, больших либо равных значению константы, заданной пользователем. Эта подпрограмма обычно находится в последовательности обращений к подпрограммам CORRE, EIGEN, TRACE, LOAD и VARMX при выполнении факторного анализа. Обращение CALL TRACE (М, R, CON, К, D) Описание параметров М — число переменных. R — вводимая матрица (симметрическая и хранимая в уплотненном виде только с верхней треугольной частью, размещенной по столбцам в оперативной памяти), содержащая на диагонали собственные значения. Собственные значения расположены в убы- вающем порядке. Порядок матрицы равен М X М. В памяти находятся только М*(М+1)/2 элементов. (Способ хранения 1.) CON — константа для решения, сколько собственных значений необхо- димо оставить. Вычисляются накопленные отношения собствен- ных значений, которые больше либо равны этой величине. К — выводимая переменная, содержащая число собственных значе- ний, больших либо равных CON. (К равно числу факторов.) D — выводимый вектор длиной М, содержащий накопленные отноше- ния собственных значений, которые больше либо равны CON. Примечания Нет. Требуемые функции и подпрограммы Нет. Метод Каждое собственное значение, большее либо равное CON, делится на М и результат деления складывается с ранее полученной суммой накопленных отно- шений для каждой переменной. SUBROUTINE TRACE (М.й»CON*К•0> DIMENSION BCD,0(1) С 1 (Продолжение) с DOUBLE PRECISION R»0 00 110 I=1»M с г !F(D(I)-CQN) 120,105,105 FMSH 105 КзК*1 LsO 110 0(DsO(D/FM 00 100 I±1»N C 4 LSL*1 120 00 130 IsR'K 100 O(I)«R(L> 130 D(Ds0(IUD(l-1) KsO RETURN с 3 ENO 88
Перевод комментариев в тексте 1. Если необходима версия этой программы, предназначенная для вычисле- ний с двойной точностью, то С в первом столбце следующего оператора двойной точности должно быть опущено. 2. С должно быть также опущено во всех операторах двойной точности, встречающихся в других программах, работающих совместно с этой программой. 3. Проверка, действительно ли 1-е собственное значение больше или равно константе. 4. Вычисление накопленных отношений собственных значений. Подпрограмма LOAD Эта подпрограмма вычисляет коэффициенты каждого фактора, умножая элементы каждого нормализованного собственного век- тора на квадратные корни из соответствующих собственных зна- чений = (О где /=1, 2, ш — переменные; /=1, 2, k — оставленные собственные значения (см. под- программу TRACE). ПОДПРОГРАММА LOAD Назначение Вычисление матрицы факторов нагрузок по собственным значениям и соот- ветствующим собственным векторам. Эта подпрограмма обычно находится в по- следовательности обращений к подпрограммам CORRE, EIGEN, TRACE, LOAD и VARMX при выполнении факторного анализа. Обращение CALL LOAD (М, К, R, V) Описание параметров М — число переменных. К — число факторов. R — матрица (симметрическая и хранящаяся в уплотненном виде только с верхней треугольной частью, помещенной по столбцам в оперативной памяти), содержащая по диагонали собственные значения. Собственные значения расположены в убывающем по- рядке. Подпрограмма пользуется первыми К собственными зна- чениями. Порядок матрицы R равен М X М. Только М*(М -|- 1) /2 элементов ее находятся в памяти. (Способ хранения 1.) V — при обращении к этой подпрограмме матрица V (М X М) содер- жит собственные векторы, расположенные по столбцам. При воз- вращении в обратившуюся программу матрица V содержит матрицу факторов (М X К). Примечания Нет. Требуемые функции и подпрограммы Нет. Метод Нормализованные собственные векторы преобразуются в систему нагрузок факторов при помощи умножения элементов каждого вектора на квадратный корень соответствующего собственного значения. 89
SUBROUTINE lOADCM,K.R.V) c 1 DIMENSION R(1),V(„ C DOUBLE PRECISION R.V.SQ с г l«0 JJ = O 00 160 J = 1 ,K JJ=JJ+J 150 SQ=SORT(R(JJ)) DO 160 1 = 1»M t=L*1 160 V(l)sS0*V(L> RETURN 'E-NO Перевод комментариев в тексте. I. Если необходима версия этой программы, предназначенная для вычис- лений с двойной точностью, то С в первом столбце следующего оператора двой- ной точности должно быть опущено. 2. С должно быть опущено также из операторов двойной точности, нахо- дящихся в других программах, работающих совместно с этой программой. Вер- сия этой программы для вычислений с двойной точностью должна содержать также функции Фортрана с двойной точностью. SQRT в операторе 150 должен быть заменен на DSQRT. Подпрограмма VARMX Эта подпрограмма выполняет ортогональное вращение мат- рицы факторов размером tn X k так, что 3{»3(а?,/Чг-[2(«УЧ)]’} (1) будет максимальным, где i= 1, 2, .... th — переменные; /= 1, 2, ..., k — факторы, ац — нагрузка для i-й переменной /-го фактора и Л? — суммарная нагрузка i-й переменной, определяемая ниже. Суммарная нагрузка k hl=%a2tj, (2) J-i где i = 1, 2, .... tn. Нормализованная матрица факторов (3) где i = 1, 2,..., m; j=\, 2.....k. 90
Вариация матрицы факторов где с — 1, 2, ... (итерационный цикл). Проверка на сходимость: Если Vc - Vc_, < IO"7 (5) для последовательных результатов, то программа прекращает вра- щение и выполняет расчет по уравнению (28). В противном случае программа повторяет вращение факторов, пока проверка на схо- димость не будет удовлетворена. Вращение двух факторов: Подпрограмма одновременно вращает два нормализованных фактора (Ьц). 1 с 2, 1- с 3, ..., 1 с k, 2 с 3, ..., 2 с k, ..., k— 1 с k. Это образует итерационный цикл. В предположении, что х и у — вращаемые факторы, причем х — фактор, имеющий меньший индекс или находящийся слева. Вра- щение этих двух факторов записывается в следующей форме: *1 yz х2 у2 cos <р — sin <р sin <р cos <р хт Ут (6) где Xi и yi — имеющиеся в данный момент нормализованные на- грузки, a Xi и Yi — требуемые нормализованные нагрузки явля- ются функциями ф угла вращения. Шаги вычисления от (а) до (е) приведены ниже: а) вычисление NUM и DEN A = ’Z(xi + yl)(xl-yiy, B = 2'Zxlyi; С = S [(-^ + У/) (X/ - У/) + 2 xzyz] [(xz + yz) (xz - yz) - 2 xzyzJ; £> = 4S(xz + yz)(xz-yz)xzyz; (7) NUM = D — 2 AB/nr, DEN = C - [(A + B) (A - B)]/m-, б) сравнение NUM и DEN 91
При этом могут возникнуть следующие четыре случая: NUM < DEN — перейти ниже к (в1); NUM > DEN — перейти ниже к (в2); (NUM + DEN) s* — перейти ниже к (вЗ); (NUM + DEN) О — перейти к следующему вращению; (в1) tan 40 = | NUM |/| DEN |**. (8) Если tan 40 < e и 1) DEN положительно, перейти к следующему вращению, 1^2 2) DEN отрицательно, положить cos<p = sin<p = -у и перейти к пункту (е). Если tan 40 е, вычислить: cos 40 = 1 /У 1 + tan2 40 ; (9) sin 40 = tan 49 -cos 40 (10) и перейти к пункту (г); (в2) ctn 40 = | NUM |/| DEN |. (11) Если ctn 49 <8, положить cos 40 = 0 и sin 40 = 1. Перейти к пункту (г). Если ctn 40 8, вычислить: sin 40 = 1 /У 1 + ctn2 40 ; (12) cos 40 = ctn 40 • sin 40 (13) и перейти к пункту (г); _ (вЗ) положить cos 40 = sin 40 = (|2)/2 и перейти к пункту (г); (г) определение cos 0 и sin 0; cos 20 = }/(1 +cos40)/2; (14) sin 20 = sin 40/2 cos 20; (15) cos 0 = ]/(l +cos20)/2; (16) sin 0 = sin 20/2 cos 0; (17) (д) определение cos <p и sin q>: (д!) если DEN положительно, принять cos<p = cos0; (18) sin <p = sin 0 (19) и перейти к пункту (д2). * е — малый допуск на фактор. ** Обозначение tan для тангенса принято в связи с транскрипцией этой функ- ции в Фортране.— Прим, перев. 92
Если DEN отрицательно, вычислить cos ср = cos ® sin ®’’ (20) sin <р = I cos 0----- sin б| (21) и перейти к пункту (д2); (д2) если NUM положительно, положить cos <р = | cos <р |; (22) sin <р = | sin ср | (23) и перейти к пункту (е). Если NUM отрицательно, положить cos ср = | cos <р|; (24) . sin <р = — | sin ср |. (25) (е) вращение ^=3 х( cos срyz sin ср; (26) Yt = xt sin ср + уi cos ср, (27) где i == 1, 2.т. После того как один цикл с k (k— 1)/2 вращениями закончен, подпрограмма возвращается к вычислению вариации для матрицы факторов по уравнению (4). Денормализация aij = bij'hlt (28) где 1= 1, 2, ..т\ /=1, 2......k. Проверка суммарных весов: А Окончательный суммарный вес fl — S а?у. (29) Разность = Л/ — fl, (30) где i = 1, 2, ..., т. ПОДПРОГРАММА VARMX Назначение Выполнение ортогонального вращения матрицы факторов. Эта подпрограмма обычно находится в последовательности обращений к подпрограммам CORRE, EIGEN, TRACE, LOAD, VARMX при выполнении факторного анализа. Обращение CALL VARMX (М, К, A, NC, TV, Н, F, D) 93
Описание параметров Ж — число переменных и число строк матрицы А. К — число факторов. ж А — при вводе исходная матрица факторов, при выходе из подпро- граммы — обращенная матрица факторов. Порядок матрицы А равен М X К. NC — выводимая переменная, содержащая число выполненных циклов итерации. TV — выводимый вектор, содержащий дисперсию матрицы факторов на каждом цикле итерации. Вычисляется дисперсия также и перед первым циклом итерации. Это означает, что в векторе TV находятся NC + 1 значений дисперсий. Максимальное число цик- лов итерации, допускаемое подпрограммой, равно 50. Поэтому длина вектора TV равна 51. Н — выводимый вектор длиной М, содержащий исходные суммарные нагрузки. F — выводимый вектор длиной М, содержащий окончательные сум- марные нагрузки. D — выводимый вектор длиной М, содержащий разности между ис- ходными и окончательными суммарными нагрузками. Примечания Если дисперсия, вычисленная после каждого цикла итерации последова- тельно 4 раза не возрастает, то подпрограмма прекращает вращения. Требуемые функции и подпрограммы Нет. Метод См. [9]. Перевод комментариев в тексте 1. Если необходима версия этой подпрограммы, предназначенная для вычис- лений с двойной точностью, то С в первом столбце следующего оператора двой- ной точности должно быть опущено. 2. С должно быть также опущено во всех операторах двойной точности, встречающихся в других программах, работающих совместно с этой программой. Версия этой программы для вычислений с двойной точностью должна также содержать функции Фортрана с двойной точностью. SQRT в операторах 115, 290, 330, 350 и 355 должен быть заменен на DSQRT. ABS в операторах 280, 320 и 375 должен быть заменен на DABS. 3. Подготовка. 4. Вычисление исходных суммарных нагрузок. 5. Вычисление нормализованной матрицы факторов. 6. Вычисление дисперсии для матрицы факторов. 7. Проверка на сходимость. 8. Вращение двух факторов продолжается до оператора 120. 9. Вычисление NUM и DEN. 10. Сравнение NUM и DEN. 11. NUM + DEN больше либо равны допустимому фактору. 12. NUM меньше DEN. 13. NUM больше DEN. 14. Определение косинуса тэта и синуса тэта. 15. Определение косинуса фи и синуса фи. 16. Выполнение вращения. 17. Денормализация нагрузок варимакса. 18. Проверка суммарных нагрузок, 94
subroutine varmxcm,k,a,nc.tv.h,f»0) DIMENSION A(1),TV(1),H(1).F(1>.OC1) c 1 • c DOUBLE PRECISION A.TV.H.F. D.TVLT.C0NS.AA.9B,CC.OO.U.T.B.C0S4T. c 1 SIN4T.TAN4T •SINP. COSP.CTN4T»C0S2T.SIN2T.COST»SINT c 2 (Продолжение) c 3 IJ»M*(J-1) EPS*O.00116 00 140 1«1,И TVLTsO.O L=LB+j LL=K-1 CC=A(D*A(L> NVM AA=AA*CC NC»O 140 88=BB*CC*CC FN«M 150 TV(NV)sTV(NV)♦(FN*B8-AA*AA)/FFN> " ffn=fn*fn IFCNV-51) 160.430.430 CONSsO.7071066 C 7 c 6 160 IF((TV(NV)-TVLT)-(1.E-7}i 170.170.100, 00 110 Jsl'M 170 NC«NC+1 H( DeO.O IFCNC-3) 190,190.430 00 110 J«1.R C 8 L=M*(J-1)*I 190 00 420 Jsi.li, 110 H( I )cH(I)*A(l)*A(L) L1=M*(J-' e 5 Usj*1 00 120 I«1.M C 9 115 H(I)CSQRT(H(I)) 00 420 K1alI.K 00 120 J»1.K L2=M*(K1-1) LsM*(J-1)*I AAsO.O 120 A ( L) □ A ( L) / H ( I ) BB=0.0 GO TO 132 CC=0.0 c 6 OOsO.O 130 NV=NV*1 00 230 T«t.> TVITaTV(NV-1) L3=L1*1 132 TV(NV)=0.0 L4«L2*1 00 150 Jsl.ll U=(A(L3)*A(L4))*^AXL3)-ACL4)) AAsO.O Tsa<|»3)*A( L4) 88*0.0
CC = CCMU*D * (U-T) C 15 0D = DQ*2. O*LL* AA=AA*U 230 BB=0B*T T = DD-2.0*AA*BB / FW 8 = CC-(AA*A’A-BB*BB) /FM C 10 IF(T-B) 280,240.320 240 I F ((T*B)-6PS) 420.250,250 C 11 250 CQ$4T=C0N3 SIM4I«CONS CO TO 350 С T2 280 TAN4T=ABS(T)/ AffS(B> IF(TAN4T-EPS) 300.290,290 290 C034T=1.0/SQRTC1,0*TAN4T*TAN4T) S IC4T = TAN4T*C.0S4T GO TO 350 BOO IF(B) 310,420,420 ЗЮ SINPsCONS COSPaCONS 'GO TO 400 C 13 320 CTN4T=ABS(T/B) I4CTN4T-EPS) 340,330,330 330 SIM4T»1 .O/SQRT0.0*QTN4T*CTN4T) tOS4T«CTN4T*SIN4T GO To 350 540 C054T*0.0 81^ = 1 .0 € 14 350 COS2TsS0mC1.0*C0S4TV2.0> SIN2TsSJN4T/(2.a*CC52T) 355 COSTwSORT ((1.0.+ CQS2T)/2.0) SIN T 9 S! Ш/12 • 0 * C 05 T ) IF(B) 370.370.560 360 COSPsCOST SINPsSINT GO TO 380 370 COSP = CONS*COST*CQNS*SI NT 375 S I N P = A 0 S ( C ON S * C 0 S T-£.0N S ♦ S I N T ) 380 IF(T) 390.390,400 390 SINPs-SINP C 16 400 00 410 1=1.M t♦I £4«L2*I AA = A.< £3) *COSP*A ( L4) *S I NP A(14)=-A(L3)*SINP*A(L4)•COSP 410 A(L3)=AA 420 CONTINUE GO TO 130 C 17 430 00 440 1=1 DO 440 J«1,K LsM*(J-1)♦? 440 A(L)sA(L)*H(I> 18 NC=NV-1 DO 450 1s1,M 450 DO 470 1=1,И F(I)=0.0 00 460 <1=1 ,K l«M>(j-1 >♦I 4£0 HDOClHACLHACll €70 Ь(П*И(1)»Я(1> RETU8M 96
Временные ряды (см. сглаживание) Подпрограмма AUTO Эта подпрограмма вычисляет автоковариацию для отставания (лагов) 0, 1, 2, (L—1) заданных временных рядов наблюдений Ль Аг, Ап и числа L. 1 л^+1 Rj = )Г=7+Т S (Л - AVER)(А/+м - AVER), (1) где AVER = 4- S Л; п — число наблюдений во временном ряде А; / = 1, 2, L — временные лаги 0, 1, 2, (L— 1). ПОДПРОГРАММА AUTO Назначение Нахождение автоковариации ряда А для лагов от 0 до L—1. Обращение CALL AUTO (A, N, L, R) Описание параметров А — вводимый вектор длиной N, содержащий временной ряд, авто- ковариацию которого желательно вычислить. N — длина вектора А. L — автоковариация вычисляется для лагов 0, 1, 2, ..L—1. R — выводимый вектор длиной L, содержащий автоковариации ряда А. Примечания Длина R отличается от длины A. N должно быть больше L. В противном случае R (1) полагают равным нулю и происходит возвращение к обратившейся программе. Требуемые функции и подпрограммы Нет. Метод См. [И]. (Распечатку подпрограммы см. на стр. 98). Перевод комментариев в тексте 1. Вычисление среднего для временного ряда А, 2. Вычисление автоковариаций. Подпрограмма CROSS Эта подпрограмма вычисляет взаимные ковариации ряда В: с отставанием (лагом) от Л и с опережением А при двух времен- ных рядах Л1, Л2, ..., Ап и В В2, ...» Вп и заданном числе L: 4 Заказ № 517 97
SVfROUTfNt AUT0(A,fM,B) <НШ$ЮИ KlhW) C 1 *ш«м 4Q,5Q*1O0 50 <(1)гОЛ ЙЕTURу tOO 00 110 1=1,И K10 AVgR»AVER*A(I) FNeN C 11 oo no jcta еивзд»о 0*9 UD t-1 *fU WfHM 12 О 80МВДВШ (! РШR)* < A(IJ)-AV£®) FNJ=NJ 130 ЙШ = $ОМ/Ш RfTUftO CNO а) В опережает A . «-Hl fy = „_/+" s (A-AVERA)(Bi+M-AVERB); (1) б) В отстает от A , л—Л-1 $/ = 7=7+1 £ (А/+м - AVERA) (^-A VERB), (2) 1 n где AVERA = 4- £ A,; ” i=i 1 n AVERB = 4- SBi, n /=1 n — число наблюдений в каждом ряду; / = 1, 2, .... L представляет временное отставание (или опережение) на 0, 1, 2, L — 1. ПОДПРОГРАММА CROSS Назначение i Отыскание взаимной ковариации ряда А с рядом В (который отстает или опережает А). Обращение CALL CROSS (А, В, N, L, R, S) Описание параметров А — вводимый вектор длиной N, содержащий первый временной ряд. В — вводимый вектор длиной N, содержащий второй временной ряд. N — длина рядов А и В. L — взаимная ковариация вычисляется для значений отставания и опережения, равных 0, 1,2,..L — 1. 98
R — выводимый вектор длиной L, содержащий взаимную ковариацию А с В, когда В опережает А. S — выводимый вектор длиной L, содержащий взаимную ковариацию А с В, когда В отстает от А. Примечания N должно быть больше L. Если это не так, то R (1) и S (1) полагают рав- ными нулю и происходит возвращение в обратившуюся программу. Требуемые функции и подпрограммы Нет. Метод См. [И]. SUBROUTINE CROSS(A,В,N,LiR»S) с 2 DIMENSION AC1),В(1),R(1),S(1) 00 130 J=1,l C 1 NJ=N-J*1 FN«N SUMRsO.O AVERA=0.0 SUMSaO.O AVERBsO.O 00 120 I«1,NJ IF(N-L) 50,50.100 50 RCDsO.O SUMR=SUMR*(Aa)-AVERA)*(0(!J)-AVER8) S(1)»0.0 120 SUMSsSUMSHA(IJl-AVERA)♦(B(J)-AVER|) RETURN FNJ»NJ 100 00 110 I«1.N R(J)=SUMR/FNJ AVERA»AVERA*A(I> 130 S (J ) s SUMS/Fit J 110 AVERB»AVERB*B(I) RETURN AVERA»AVERA/FN ENO AVERB*AVERB/FM Перевод комментариев в тексте 1. Вычисление средних значений рядов А и В. 2. Вычисление взаимных ковариаций рядов А и В. Подпрограмма SMO Эта подпрограмма вычисляет сглаженные или отфильтрованные значения ряда, заданного в виде временного ряда Ль Л2, ЛЛ, отборочного целого L и ряда значений весов №i, №2, Wm. m Rt=%Ap-Wj, (1) где р =j-L — L + Л; k — i — lL + 1; Z = IL до IH\ 4* 99
= _|_ 1; 1Н = п — ±(т~± (2) (3) L — заданное отборочное целое число. Например, L = 4 приме- няет веса к каждому четвертому элементу временного ряда; т — число весов. Должно быть нечетным целым числом. (Если tn — четное число, то результаты деления, полученные при вычислении в (2) и (3), будут округленными в меньшую сторону; п — число элементов во временном ряду. Элементы вектора R от IL до IH будут заполнены сглаженным рядом, а остальные элементы вектора — нулями. ПОДПРОГРАММА SMO Назначение Сглаживание или фильтрация ряда А при помощи W. Обращение CALL SMO (A, N, W, М, L, R) Описание параметров А — вводимый вектор длиной N, содержащий данные временного ряда. N — длина ряда А. W — вводимый вектор длиной М, содержащий веса. М — число позиций в векторе весов. М должно быть нечетным целым числом. Если М четное число, результаты деления при вычис- лении (L*(M —1))/2 в (1) и (2), приведенных ниже, будут округленными в меньшую сторону. L — отборочное целое число. Например, L = 12 означает, что веса будут применены к каждому 12-му элементу A. L = 1 приме- няет веса к последовательным элементам А. Для помесячных данных L = 12 дает сглаживание по годам, a L — 1 дает поме- сячное сглаживание. R — выводимый вектор длиной N. Элементы вектора R от IL до 1Н будут заполнены сглаженным рядом, а остальные элементы — Примечания N должно быть больше либо равно произведению L*M. Требуемые функции и подпрограммы Нет. Метод €м. [12]. Перевод комментариев в тексте 1. Подготовка 2. Сглаживание ряда А с весами W. 100
subroutine smoca.n.w.m,l.rj DIMENSION e 1 DO 110 1 = 1.N 110 R(I)=0.0 IL=(L*(M-1))/2*1 C 2 DO 120 I-IL.IH K=I-IL*1 DO 120 J=1.M 1P«CJ*L)-L*K 120 R(I )=R(I)♦A(IP)*W(J) RETURN END Подпрограмма EXSMO Эта подпрограмма вычисляет сглаженные значения ряда Sb S2, Snx по заданному временному ряду Х2, ...» XNx и по кон- станте сглаживания а. Кроме того, к концу сглаживания коэффи- циенты А, В и С будут даны для выражения А4~В(Т) + С(Т)2/2. Этим выражением можно пользоваться для нахождения оценки сглаженного значения ряда вперед на заданное число периодов времени Т. Эта подпрограмма имеет следующие два этапа для /=1, 2, NX, которые начинаются с А, В, и С либо заданными пользовате- лем, либо получаемыми автоматически подпрограммой: а) определение Si на один период вперед: S, = А + В + 0.5С; (1) б) преобразование коэффициентов А, Ви С: д = ^ + (1-«№-*/); (2) В = в + С- 1.5 (а2) (2-а) -ХО; (3) С= С —(а8)(5, — Х(), (4) где а — константа сглаживания, указанная пользователем (0.0 <а< 1.0). Если коэффициенты А, В и С не равны все нулю (0.0), то данные величины принимаются за исходные значения. 101.
Если же А = В = С = 0.0, то образуются начальные значения А, В и С по следующим формулам: С = Х' -2X3 + Xt; (5) в=х2 -X,- 1.5 С; (6) A = Xt - В - 0.5 С. (7) ПОДПРОГРАММА EXSMO Назначение Нахождение ряда S, сглаженного трехчленным полиномом и полученного из заданного ряда X. Обращение CALL EXSMO (X, NX, AL, А, В, C, S) Описание параметров X — вводимый вектор длиной NX, содержащий временной ряд, кото- рый необходимо сгладить степенным полиномохМ *. NX — число элементов в X. AL — константа сглаживания альфа. AL должна быть больше нуля и меньше единицы. А, В, С — коэффициенты уравнения предсказания, когда S предсказывается на Т периодов вперед по формуле А + В#Т + С#Т*Т/2. При об- ращении, если А = В = С = 0, то программа вырабатывает на- чальные значения. Если хотя бы одна величина не равна нулю, то программа принимает заданные величины, как начальные значения. При выходе из подпрограммы А, В, С содержат по- следние преобразованные коэффициенты предсказания. S — выводимый вектор длиной NX, содержащий временной ряд, сглаженный трехчленным полиномом. Примечания Нет. SUBROUTINE EXSMO (X.NX.Al.A.B.C.S) DIMENSION X(1),S(1) С 1 ПСА) Н0.М0.140 МО ПС8) 140.120.140 120 IF(C) 140.130*140 130 С«ХС1)ч2«0*ХС2)*ХСЗ) В«Х(2)-Х(1)-1.5«С А»Х(1)-В-0»5*С НО BE«1.0-AL BECUBsBE*BE*BE AlCUB»AL*Al*AL е -2 00 ISO I«1.NX С 5 8( I )аА*8*0Л*С С 4 01F«S(n*XCf) 4«Х(I)*8ECUB*OIF В»В*С-1 .5*At*Al.*C2.0-AL)*OIF ВО CeC-AUCUB*On RETURN ENO * В данной программе предполагается, что все наблюдения получены с по- стоянным шагом, который авторами назван «периодом». — Прим, перев. 102
Требуемые функции и подпрограммы Нет. Метод См. [13]. Комментарии в тексте 1. Если А = В = С = 0.0, то образовать начальные значения А, В и С, 2. Произвести следующее для I от 1 до NX. 3. Найти S (I) на один период вперед. 4. Преобразование коэффициентов А, В и С. Непараметрические статистики Подпрограмма KOLMO Для выборки из п независимых и одинаково распределенных случайных переменных Xit Х2, Хп с непрерывной (накапливае- мой) функцией распределения * F (х) эта подпрограмма проверяет абсолютное значение разности между эмпирическим распределе- нием Fn (х) и теоретическим распределением F (х) с помощью пре- дельного распределения Колмогорова—Смирнова. Для этого: 1. Порядок статистик {х«)} определяется из последователь- ности {х.} путем упорядочения {х,} в неубывающую последователь- ность. 2. Вычисляется накапливаемая эмпирическая функция распре- деления. Это будет следующая ступенчатая функция: 0 х < X(i) ЛЛХ)= kln *(*)<* . 1 Х(я)<Х 3. Вычисляется абсолютное значение максимального расхожде- йия Dn между эмпирическим и теоретическим распределением: D„= max |F„(x)-F(x)|. п — 1 Так как Fn (х) и F (х) неубывающие функции, то результат будет равен: Dn = max | Fn [x (Л)] — F [x(ft)] |. l<k<n Dn — случайная переменная и L (z) — предельное накапливаемое распределение величины nl/>Dn: lim Prob [n'1’ Dn <iz}=L (z). 4. Окончательно вычисляются значения для __________ г = »*/.£>„ * Накапливаемое распределение соответствует понятию функции распреде- ления F (х) == Р (С < х). — Прим, перев. 103
и вероятность получения величины, большей либо равной вычислен- ному значению пЧ2Оп'- Р=\ — L(z). В общем случае теоретическая функция распределения должна быть введена пользователем, как это указано в программе. Однако четыре функции оцениваются в KOLMO по формуле £ndF(t) = F(x) в точках ряда {Х(г-)}, когда F (х) будет одной из следующих функ- ций: нормальной функцией распределения вероятностей со средним и и дисперсией s2; экспоненциальной функцией распределения вероятностей со средним и и дисперсией s2; функцией распределения вероятностей Коши с медианой и и первой квартилью s — и\ равномерной функцией распределения вероятностей с конце- выми точками и и s. Как было указано выше, будет вычислена любая написанная пользователем функция распределения вероятностей с использова- нием и и s при выборе подходящей функции. При этом необходимо следовать инструкциям, данным в программе KOLMO. Лиллиефорс (1967) заметил, что критические значения, опреде- ляемые при этой проверке, не будут корректными в том случае, когда один или несколько параметров оцениваются по выборке. Пользователь должен прочитать эту статью, чтобы обратить внима- ние на аппроксимации, которые могут быть рассмотрены при ис- пользовании таких оценок. См. [14], [15], [16], [17], ] 18]. ПОДПРОГРАММА KOLMO Назначение Проверка разности между эмпирическим и теоретическим распределением с использованием критерия Колмогорова—Смирнова. Обращение CALL KOLMO (X, N, Z, PROB, IFCOD, U, S, IER) Описание параметров . X — вводимый вектор N независимых наблюдений. При возвращении из KOLMO X упорядочено в монотонную неубывающую после- довательность. N —• число наблюдений в X. : Z — выводимая переменная, содержащая наибольшее значение по X величины SQRT (N)# ABS (FN (X) —F(X)), где F (X) — теоре- тическая функция распределения и FN (X) —эмпирическая функ- ция распределения. PROB — выводимая переменная, содержащая вероятность того, что ста- тистика будет больше либо равна Z при условии, что гипотеза о распределении X с рассматриваемой плотностью верна. Напри- мер, PROB = 0.05 означает, что можно отбросить нулевую гипо- тезу о выборе X из распределения с заданной плотностью-, если- предположить, что 5%-ная вероятность некорректна. PROB = = l.O-SMIRN(Z). 104
IFCOD — код, обозначающий данную рассматриваемую теоретическую функцию распределения вероятностей: 1. — F (X) — нормальная функция распределения вероятностей; 2. — F (X) — экспоненциальная функция распределения вероят- ностей; 3. — F (X) — функция распределения вероятностей Коши; 4. — F (X) — равномерное распределение вероятностей; 5. — F (X) — распределение указано пользователем. U — если IFCOD равен I или 2, то U — среднее плотности, заданной выше. Если IFCOD равен 3, то U — медиана распределения Коши. Если IFCOD = 4, то U — левая концевая точка равномерной плот- ности. Если IFCOD = 5, то U — смысл указывается пользователем. S — если IFCOD равен I или 2, то S — стандартное отклонение плот- ности, заданной выше, должно быть положительным. Если IFCOD = 3, U — S обозначает первую квартиль плотности рас- пределения Коши и должно быть не равно нулю. Если IFCOD ~ = 4, то S — правая концевая точка равномерной плотности, если IFCOD = 5, то смысл S указывается пользователем. IER — индикатор ошибки, который не равен нулю, если S нарушает вышеуказанные условия. При возвращении проверка не произ- водится, и X и Y упорядочиваются в монотонную неубывающую последовательность. IER принимает значение нуль при входе в KOLMO. IER принимает значение единицы, если требуется функция распределения вероятностей, составленная пользовате- лем. Это должно быть изменено (см. примечания), когда функ- ция распределения вероятностей задается пользователем. Примечания N должно быть больше либо равно 100 (см. математическое описание, дан- ное для программы SMIRN, относительно асимптотической формулы), так как уровни вероятностей, определяемые этой программой, некорректны, если сама выборка применяется для оценки параметров непрерывного распределения, ко- торое используется в этой проверке (см. математическое описание данной про- граммы). F (X) должно быть непрерывной функцией. Любая функция накапли- ваемого распределения вероятностей, задаваемая пользователем, должна быть указана, начиная с оператора 26, приведенного ниже, и должна возвращать управ- ление в оператор 27. Использование проверки с двойной точностью сомнительно при выполнении этой проверки. Если же пользователь захочет работать с KOLMO в программе с двойной точностью, то должен сначала обратиться к программе Фортрана SNGL (X) перед обращением в KOLMO и к программе - Фортрана DBLE (X) после выхода из KOLMO. (Заметим, что подпрограмма SMIRN имеет возможность действовать с двойной точностью, что обеспечено в этом сборнике.) Требуемые функции и подпрограммы SMIRN, NDTR и любая требуемая подпрограмма, предоставляемая пользо- вателем. Метод См. [14], [15], [16], [17]. Перевод комментариев в тексте 1. Неубывающая последовательность X (I) -ых (Метод Дуби). 2. Вычисление максимального абсолютного отклонения DN между эмпири-1 ческим и теоретическим распределениями 3. Вычисление Z — DN*SQRT (N) и вероятности. 105
SUBROUTINE KOLMO(X.N.Z.PROB. IFCQO.U.S.I ER) DIMENSION XC1) c * (Продолжение} TER»O CALL NOTR(Z.Y.O) DO $ !«2»N GO TO 27 1 F(X(f)-X(I-1))1,5,5 13 IFCS) 11.11.14 1 TEMPsX(J) 14.Za(X(J)-U)/5*1 .0 IM«I-1 IFCZ) 1S.15.16 00 3 J»1.IM 15 YsO.O l«1-j GO TO 27 IF(TEMP-X(L))2.4.A 16 Ys1.-EXP(-Z> 2 X(L*1)«X(l) GO TO 27 3 continue 17 IF(IFCOD-4)18.20,26 X(1IsTEMP 18 IF($)19.11•19 GO TO 5 19 Y*ATAN((XCJ)-U)/S)«0.3183099*0.5 4 X(lt1)«TEMP GO TO 27 1 continue 20 IE(S-U)11.11.21 о 2 ?1 1F(X(J)-U)22.22.2> KM1«N-1 22 YsO.O XN«N ON«0.0 GO TO 27 23 IF(X(j)-S)2S,25.24 FS«0.0 . 24 Ysl.o GO TO 27 о 00 7 IHL.NM1 25 Y=(X(J)-U)/($-U) 60 TO 27 IF(X(J)«X(J*1)) 9.7,9 26 IER«1 7 CONTINUE 60 TO 29 8 J»N 27 EI=ABS(Y-FI) 9 IL«J+1 ES=ABS(Y-FS) FI»FJ 0NSAMAX1(0N.E1,ES) FSaFLOAT(J)/XN IF(Ii-N) 6.8.28 IHIFC00-?) 10.13,17 C 3 Ю IFCS) 11.11.12 28 ZsON*SQRn 11 tERsi CALL SMIRN(Z.PROB) GO TO 29 PROBsI.0-PR08 <2 ZeCXfn-U)/$ 29 RETURN <*P
Подпрограмма KOLM 2 Дана выборка п н.о.р. (независимых и одинаково распределен- ных) случайных переменных X и выборка т н.о.р. случайных пере- менных У. Эта подпрограмма проверяет разность между двумя эмпирическими функциями распределения Fn (х) и Gm (у) с по- мощью предельного распределения Колмогорова—Смирнова. Для этого: I. Ряды X и У перестраиваются в ряды {Х<<)} и {У(ц}, которые являются неубывающими последовательностями. 2. Вычисляются эмпирические накапливаемые функции распре- деления Fn (х) для ряда X и Gm (у) для ряда У. Например, Л,С*) = О х<л(1) kjn х(к) <х<х(4+1>; k = \, 1 х(л)<х — 1 3. Вычисляется максимум абсолютного значения разности меж- ду двумя выборочными функциями распределения. Dm, „ = max | Fn (х) - Gm (у)|. х, у Статистика j/ п будет случайной величиной с предельной накапливаемой функцией распределения L (г), которая в этом ру- ководстве описана как подпрограмма SMIRN. Это означает, что lira Prob ( VDm.n<^> = L (z). •и I у т п I /И, оо \ • } 4. В конце вычисляется вероятность (асимптотическая) того, что статистика 1/ п будет не меньше, чем вычисленное Vm-\-n значение, при предположении о равенстве двух теоретических функций распределения, из которых взяты X и У. P=\-L(z). Для справок см. [14], [15], [17]. ПОДПРОГРАММА KOLM2 Назначение Проверка разности между двумя выборочными функциями распределения при помощи критерия Колмогорова—Смирнова. Обращение CALL KOLM2 (X, Y, N, М, Z, PROB) 107
Описание параметров X —вводимый вектор N независимых наблюдений. При возвращении из KOLM 2 X упорядочен в монотонную неубывающую последо- вательность. Y — вводимый вектор М независимых наблюдений. При возвращении из KOLM2 Y упорядочен в монотонную неубывающую последо- вательность. N — число наблюдений X. М — число наблюдений Y. Z — выводимая переменная, содержащая наибольшее значение по набору X и Y SQRT ((M*N)/(M + N) ) ABC (FN (X) — GM (Y)), где FN (X) — эмпирическая функция распределения ряда X и GM (Y) —эмпирическая функция распределения Y. PROB — выводимая переменная, содержащая вероятность того, что ста- тистика будет больше либо равна Z, если гипотеза, что X и Y имеют одинаковую функцию распределения вероятностей, верна. Например, PROB = 0.05 означает, что можно отбросить нуле- вую гипотезу о том, что ряды X и Y имеют одинаковую функцию плотности при предположении о некорректности 5%-ной вероят- ности. PROB = 1. —SMIRN (Z). Примечания N и М должны быть больше либо равны 100.0 (см. математическое описа- ние этой подпрограммы и подпрограммы SMIRN относительно асимптотики формулы). Сомнительно, что будет производиться проверка с двойной точностью. Если же пользователь захочет работать с KOLM2 с двойной точностью, он должен перед обращением к KOLM2 обратиться сначала к программе Фортрана SNGL (X), а после обращения к KOLM2 — к программе Фортрана DBLE (X). (Заметим, что подпрограмма SMIRN имеет возможность работать с двойной точностью, что обеспечивается в этом сборнике.). Требуемые функции и подпрограммы SMIRN Метод См. [14], [15], [16], [17]. Перевод комментариев в тексте 1. Упорядочение Х в возрастающую последовательность. 2. Упорядочение Y в возрастающую последовательность. 3. Вычисление D = ABS (FN — GM) по всем X и Y. 4. Выбор максимума разности D. 5. Вычисление статистики Z. 6. Вычисление вероятности, соответствующей Z. Подпрограмма SMIRN : Эта подпрограмма вычисляет значение предельного распреде- ления Колмогорова—Смирнова для заданного аргумента х. 0 х<0 1 (*) = ] 1 _ 2 £ (—1 )*-» ехр (-2£2х2) х > 0, Л=1 L (х) — предельное распределение Колмогорова накапливаемой функции распределения ^nDn и предельное распределе- ние Смирнова для [mnj{т -{• n)}li2Dmtn> 108
\ \ Subroutine ко1м2(х.у,н.м,2*рйов)' SIMENSTON XCD.YC1) t 1 DO 5 1=2.N TF(XCJ)-X( I-1))1,5.5 1 TEMPsX(I) IM«I-1 00 3 J=1.IM IF(TEMP-X(l))2,4.4 (Продолжение} ХМ1=1 ./Х.Ц, 0=0.0 I«0 J=0 K = D LsO 11 IF(X(t*1)-Y(J*1)>12.13.18 2 X(L*1)eX(L) 3 CONTINUE X(1)sTEMP GO TO 5 4 X(L*1)«TEMP 12 K = 1 4., GO TO 14 13 K = 0 14 1=1*1 IF(I-N)15.21,21 5 CONTINUE 15 IFCX(I *1)-X(I) ) 1 4 ,14,16 с 2 00 10 1=2.M IF(Y( 1)*Y(t“1)>6• Ю.10 6 TEMPsYCl) IM«!-1 00 8 J=1.IM l=|-J 1 FCTEMP-Y(I))7,9,9 7 Y(L*1)«Y(L> 16 I F (К ) 17,18.17 C 4 17 0sAMAX1(D.ABS(FL0AT(D*XN1-FL0ATU)*XM1)J !F(L)22.11.22 18 J=J*1 I F(J-M)19.20,20 19 IF(Y(j*1>-Y(j)>18.18.17 20 L«1 GO TO 17 8 CONTINUE Y(1)xTEMP GO TO 10 9 Y(L*1)sTEMP 21 l«1 GO TO 16 C 5 22 Z = O*SQRT((XN*XM)/(fcjHXHH с 10 CONTINUE 3 XN=FIOAT(N) XNlsi./XN XMsFL0AT(MX C 6 CALL SMIRN(Z,PROB) PR0B=1.O-PROB RETURN NO
где Dn — максимум по всем х разности | Fn (х) — F (х) | между выборочной функцией распределения Fn (х) и непре- рывной теоретической функцией распределения F (х); Dm, п — максимум по всем х радности между двумя выбороч- ными функциями распределения Fm (х) и Gn (х), полу- ченной по двум независимым выборкам размером в тип. Когда х очень мало, ряд (1) медленно сходится, но с помощью тэта-функции Якоби 0? (и, t) и 04 (u, t): 02 (и, t) = 2 У exp [йг (k + 1 /2)2 /] cos [(2й + 1) и]; л=о 04 (и, Л = 1 - 2 Е (-1)*-1 ехР (i*k2t) cos (2ku) Л-0 и мнимого преобразования Якоби 04(О, Z) = (-z?)-i/202 (O, -1/0 получаем L (х) = 04 (0, 2гх2/к) = (У^/х) S exp [-(2k - I)2 к2/8х2], z? = 1 которое быстро сходится при малых х. Применяемый в подпрограмме метод вычисления (с ошибкой Ei (х), i= 1, 2): 0 х<0.27 __ з (У 2к/х) S exp [-(2£ - I)2 к2/8х2] + Et (х) 0.27 < х < 1.0 Л=1 Z. (х) = J _ 2 Д exp (-2 k2 х2) + Е2 (х) 1.0<х<3.1 1 3.1 -Сх < СО где Ei (х) 6 (10-15), когда х < 1; F2(x)< IO"20, когда х>1. Для справок см. [19], [14], [15]. ПОДПРОГРАММА SMIRN Назначение Вычисление значений предельной функции распределения для статистики Колмогорова—Смирнова. Обращение CALL SMIRN (X, Y) 110
Описание параметров \ X — аргумент функции Смирнова. Y — значение, получаемое\ при вычислении функции Смирнова. Примечания \ Y получает значение нуль, если к не больше 0.27, и получает значение единица, если X не меньше 3.1. Проверки точности производятся по данным, приведенным ниже. Два аргумента X = 0.62 и Х=1.87 дают результат, который отличается от таблицы Смирнова на 2.9 и 1.9 в пято^м десятичном знаке. Все остальные ре- зультаты дают меньшие ошибки. При модификации для двойной точности эти же аргументы дают разность с табличными значениями на 3 и 2 в пятом деся- тичном знаке. У Линдгрена отмечено, что для верхних уровней значимости (скажем, 0,01 и 0,05) асимптотические формулы дают значения, которые завы- шены (на 1.5 процента при N = 80). Это означает, что при пользовании асимп- тотическими формулами для высоких уровней значимости гипотеза об отсут- ствии разницы будет отбрасываться слишком редко. Требуемые функции и подпрограммы Нет. Метод См. [14], [15], [20]. (Распечатку подпрограммы см. на стр. 112). Перевод комментариев в тексте 1. Если необходима версия этой программы с двойной точностью, то в пер- вом столбце перфокарты с двойной точностью, данной выше, следует опу- стить С, а также С в операторах СЗ, С5 и С8. Эти карты должны заменить карты 3, 5, и 8 соответственно. Все программы, вызываемые этой программой, также должны быть обеспечены аргументами двойной точности. Подпрограмма CHISQ Эта подпрограмма вычисляет степени свободы и хи-квадрат для заданной таблицы смежности А наблюдаемых частот с п строками (условиями) и m столбцами (группами). Число степеней свободы* d. f. = (n — 1) (m — 1). (1) Если в одной или нескольких ячейках ожидаемое значение меньше 1.0, то вычисляется хи-квадрат, но код ошибки будет положен рав- ным единице. Вычисляются следующие суммы: Т,= У! A,j, Z=l, 2, ..., п (суммы строк); (2) >=i п Tj= 2, .... m (суммы столбцов); (3) GT = S Tj (общая сумма). (4) Хи-квадрат получают для двух случаев: ♦ d. f.— degrees of freedom — число степеней свободы.— Прим, перев. Ш
SUBROUTINE SM1RN(X,Y) / C DOUBLE PRECISION X,Q1,02,0^.08.* ‘ ’ / I F ( X - . 27) .1 , 1\ 2 / 1 Y=0.0 / GO TO 9 2 IF (X-1.03,6,6 / 3 01=EXP(-1.233701/X**2> I t 3 Q1sDEXPC-1.23370050136170/X**2J 02=01*01 04=02*0? 08 = 04*04 ,;y 1F(08-1.OE-25)4»5,9 < 08=0.0 5 Y=(2.506628/x)*01*(1.0*08*(1.0*08*08)) t 5 Y = (2.506628274631001 /X)*Q1 *( 1 .000*08*(1 •0DO*08*Q8)Э % GQ TO 9 * 6 I F(X-3»1)8,7.7 7 Y=1.0 $ GO TO 9 | 8 01=EXPC-2.0*x*x> i C 8 Q1=DEXP (-?.ODO*X*X) 1 O2SQ1*QJ | O4efJ2»tf2 t 08=04*04 J T«1.0-2.001-04*08*(01-Q8J) 9 RETURN two : i - а) для таблицы 2X2 / gt \2 G T | АцАзз — AtlAit | g / (Ai + Aa) (Ai + As) (Ai + Ai) (^is + As) ’ (5) б) для других таблиц большей размерности (б) 112
i = 1, 2, ..., n\ \ j = 1, 2, ..tn. \ ПОДПРОГРАММА CHISQ \ Назначение \ Вычисление хи-квадрат для таблицы смежности. Обращение | - CALL CHISQ (A, N, М, CS, NDF, IERR, TR, ТС) Описание параметров А — вводимая матрица М X N, содержащая таблицу смежности. N — число строк в А. М — число столбцов в А. CS — хи-квадрат (выводится). NDF — число степеней свободы (выводится). IERR — код ошибки (выводится): О — нормальный случай; 1 — ожидаемое значение меньше 1.0 в одной или в нескольких ячейках; 3 — число степеней свободы равно нулю. TR — рабочий вектор длиною N. ТС — рабочий вектор длиною М. Примечания Если в одной или нескольких ячейках ожидаемая величина (т. е. теорети- ческое значение) будет меньше единицы, то хотя хи-квадрат и будет вычислен, но код ошибки получит значение, равное единице. Хи-квадрат равен нулю, если либо N, либо М равно единице. (Ошибка код 3). Требуемые функции и подпрограммы Нет. Метод См. [21]. (Распечатку подпрограммы см. на стр. 114), Перевод комментариев в тексте 1. Определение числа степеней свободы. 2. Вычисление сумм по строкам. 3. Вычисление сумм по столбцам. 4. Вычисление общей суммы. 5. Вычисление хи-квадрат для таблицы 2X2 (особый случай). 6. Вычисление хи-квадрат для других таблиц смежности. Подпрограмма KRANK ( Подпрограмма вычисляет коэффициенты ранговой корреляции । по Кендэлу для двух заданных векторов по п наблюдений в каж- I дом из двух переменных А и В. Наблюдения по каждой перемен- t ной ранжируются от 1 до п. Связь наблюдений вызывает осредне- ! ние связанных классов. Ранги упорядочиваются в последователь- | ности переменной Д. i Ш
SUBROUTINE CNlsQ(A,N,M,CS.NDF.!<wRyTR.TC> DIMENSION Ad ) ,TR(1) ,TCd> / NM8N*M / (Продолжение^ TERReO С3»0.0 / ОТвО.О / 00 110 I8T.X С 1 NDF«(N-1)*СМ-1) IF(NOF) 5,5,10 110 GT«GT*TR(I) JC4 5 J IFCNM-4) 130.120.130 S IERR«3 RETURN 120 CS3GT*(ABS(Ad)*A(4)-A(2)*A(3))“GT 1 2.0)**2/(TCd)*TCC2)*TR(1) C 2 2 *TR(2)J 10 DO 90 I«1,N TR(l)«0.0 IJ«I-N 00 90 J»1,M IJ=IJ*N RETURN C 6 130 IJ«0 00 140 J’l.K 00 140 I81.N 90 TR(D»TRfI)*A<!J> C 3 u«o DO 100 J«1.M <TC(J)«0.0 00 100 lal.lt E«TR(I>*TCCJ)/Gf IFCE-1.0) 135,*14O.14(J 135 IERRbI 140 CS«C$*(ACn)'-E? RETURN IJ«IJ*1 100 TC(J)8TC(J)*rClJ> Для связи определяется корректирующий множитель: Та = 2 — Для переменной А; t(t-l) W Tb = 2-=^2—~ Для переменной В, где t — число связей наблюдений для заданного ранга. Затем вычисляется коэффициент ранговой корреляции по Кен- далу для следующих двух случаев: а) если Та и Ть равны нулю, то , (2) '22л(«—1) где п — число рангов; 114
S — суммарная метка, вычисленная для рангов в переменной В при выборе по очереди каждого ранга, суммирующего единицу справа для каждого большего ранга, уменьшаю- щего на единицу справа для каждого меньшего ранга; б) если Та или Ть не равны дулю, то т = —--------- \ S =====. (3) j/-g-n (и — 1) — ]/-g-л (n — 1) — 7* \ Вычисляется стандартное отклонение: $ — 1/* 2 (2п. + 5,L (4) V 9л (л-1) * w Значимость т равна: * = (5) ПОДПРОГРАММА KRANK Назначение Проверка корреляции между двумя переменными при помощи коэффициента ранговой корреляции Кендэла. Обращение CALL KRANK (А, В, R, N, TAU, SD, Z, NR) Описание параметров А — вводимый вектор N наблюдений первой переменной. В — вводимый вектор N наблюдений второй переменной. R — выводимый вектор ранжированных данных длиной 2*N. Наимень- шее наблюдение имеет ранг 1, наибольшее — ранг N. Связь вы- зывает осреднение связанных рангов. N — число наблюдений. TAU — коэффициент ранговой корреляции Кендэла (выводимый). SD — стандартное отклонение (выводимое). Z — проверка значимости тау в терминах нормального распределения (выводимая). NR — код: О— для неранжируемых данных в А и В; 1 — для ранжируемых данных в А и В (вводимый). Примечания SD и Z полагаются равными нулю, если N меньше десяти. Требуемые функции и подпрограммы RANK TIE Метод См. [21]. 115
SUBROUTINE KRANK(A.8,R,N.TAUiSD.2,NR) DIMENSION A (1 ) , 8 (1 ) , 8 < 1 ) / SD=0.0 (Продолжение) s 10 Z = 0.0 FN = N FN1=N*(N-1) 1 tF(NR-1) 5,10.5 2 CALL RANK (A.R.KT) CALL RANK (B,R(N*1),N) GO TO 40 3 DO 20 1=1»N IF(^SORT) 40.55.40 C 5 55 S = 0.0 NM=N-1 DO 60 1=1,NM J =N ♦ I DO 60 L=I,N K«N*L 1 F ( R (К) - R (J ) ) 56.60.5? 56 S=S-1.0 GO TO 60 20 so 40 45 50 R(I)sA(I) 00 30 1 = 1.N J«I*N R(J)=B(I) 4 ISORT=0 DO 50 1=2.N ! F (R (I )-R ( I-1 )) 45.50.50 I SORTS ISORT + 1 RSAVEaR(I) R(I)=R(I-1) R(I-1)=RSAV6 12=ItN SAVERSR(I2) 8(121=R(12-1} ft< 12-1)=SAVER С0ЫШ6 57 S=S*1.0 60 CONTINUE C 6 KT«2 CALL TIEtR.N.Kf,TA) CALL TIE(R(N*T>,N.Kf,T8) C 7 IF(TA) 70,65.70 65 IF(TB) 70.67,70 67 TAU=S/(0.5*FNT) GO TO 80 70 TAU=S/((SQRT(0.5*FN1-TA))*(SORT(0.5*FN1-T8))) C 8 80 TFCN-10) 90,85,85 85 SD3(SQRT( (2.0* (FN*FH*5^0))/ (9.Q*FN1 )♦)’) z»tAu/sd 90 RETURN
Перевод комментариев в тексте \ \ 1. Проверка, являются ли данные\ ранжируемыми. 2. Ранг данных в векторах А и В и назначение связанным наблюдениям осреднения связанных рангов. 3. Перемещение ранжированных данных в вектор R. 4. Упорядочение вектора рангов R в последовательность по переменной А. 5. Вычисление S по переменной В. Начиная с первого ранга прибавить 1 к S для каждого большего ранга и вычесть единицу для каждого меньшего ранга. Повторить для всех рангов. 6. Вычисление индекса метки связей для обеих переменных. 7. Вычисление тау. 8. Вычисление стандартного отклонения и Z, если N больше либо равно 10. Подпрограмма MPAIR Эта подпрограмма выполняет проверку Уилкоксона ранга зна- ков соответствующих пар, если даны два вектора из п наблюдений попарных выборок. Шаги, вычисления будут следующими: 1. Для каждой соответствующей пары определяется разность со знаком (di) между двумя метками. 2. Ранг этих d определяется независимо от знака. Для этого (а) пренебрегают теми d, которые равны нулю (0), и (б) при связях d назначают осреднение^ связанным рангам. 3. Каждому рангу присваивается знак (+ или —) d из пункта 1. 4. Вычисляется Т-сумма положительных рангов или сумма отри- цательных рангов, в зависимости от того, какая из них меньше. 5. Вычисляется среднее: н = ^П_. (1) где К— сумма значений d, которые не равны нулю (0). 6. Вычисляется стандартное отклонение: .= /ВШЖ±1>. (2) 7. Вычисляется Z: Z = —— а (3) Z приблизительно нормально распределено с нулевым средним и единичной дисперсией. 8. При помощи подпрограммы NDTR вычисляется вероятность р, соответствующая получению величины, не превосходящей Z. Примечание, р — это вероятность для односторонней про- верки; таким образом, при двусторонней проверке пользователь должен удвоить значение р. Для справок см. [21], [22]. 117
ПОДПРОГРАММА MPAlR Назначение Выполнение проверки Уилкоксона ранга знаков соответствующих пар, за- данных двумя векторами из N наблюдений парных выборок. Обращение CALL MPAIR (N, А, В, К, Т, Z, Р, D, Е, L, IE) Описание параметров N — число наблюдений в векторах А и В. А — вводимый вектор длиной N, содержащий данные из первой вы- борки. В — вводимый вектор длиной N, содержащий данные из второй вы- борки. К — выводимая переменная, содержащая число пар из парных выбо- рок, для которых разность не равна нулю (0). Т — выводимая переменная, содержащая сумму рангов положитель- ны^ или отрицательных разностей, в зависимости от того, какая из них меньше. Z — значение стандартизированной нормальной метки, вычисленной для проверки Уилкоксона ранга знаков соответствующих пар. Р — вычисленное значение вероятности получения значения, не пре- восходящего Z (при выполнении проверки). D — рабочий вектор длиной N. Е — рабочий вектор длиной N. L — рабочий вектор длиной N. IE— 1 — если выборки А и В идентичны; 0 — в противном случае. Если IE = 1, то Т = Р = 0 и Z = 10**75. Примечания Вычисленная вероятность служит для односторонней проверки. Умножив Р на 2, получим значение для двусторонней проверки. Требуемые функции и подпрограммы RANK NDTR Метод См. [23]. Перевод комментариев в тексте 1. Нахождение разностей соответствующих пар. 2. Разность имеет отрицательный знак (—). 3. Разность равна нулю (0). 4. Разность имеет положительный знак (+). 5. Помещение большего значения на место нулевой разности с целью на- значения большего ранга (больше К). Абсолютное значение разности со знаком будет ранжировано соответствующим образом. 6. Нахождение сумм рангов (+) разностей и (—) разностей. 7. Присвоение Т-значения меньшей суммы. 8. Вычисление среднего, стандартного отклонения и Z. 9. Вычисление вероятности значения, не превосходящего Z. Подпрограмма QTEST Эта подпрограмма определяет статистику Q-теста Кокрена за- данной матрицы А дихотомиЗированных данньре с п строками (рядами) и пг столбцами (группами). 118
«VBRQUHS, MP*lRt»iA.8.K»TiЕ.₽.В<Е.1,tЕ> • EH£U$ION tc=o (Продолжение) M 59 8lG«8lG*2.0 C 1 00чф5 1 = 1.N , П<1П>~2> 65.60.65 6IG=D,0 60 DCDsetG •0 SS 1=1.N 65 Continue eirucn-Bxn CALO flAMUD.E.Nl шоп» iO'20i3t У e $ C 1 SU^O.Q 10 Hint SUtfMaO.ir 60 TO 40 00 Яо 1«1.N 0 3 ПСГШ-2) 70,$0/75 10 LCDs? 70 SUMMsSUMMoE(]3 ReL-1 Go TO 00 6Q TO CO 75 SUMPeSUMPH C1 > k < 80 CONTINUE TO l(DaJ c 1 40 DU-?A$C(DTH tHSUMP<UNM) 85,85.90 IMBIG-DIF) 45,5Q,50 85 TsSUMP 45 eiG=0M 60 TO 95 50 DCDeDIF 90 TF5U.MB 55 CONTINUE C 8 IFCK1 57.57.11 95 FK=K 57 1EAJ UxfK*-(FK*1.6) /4-0 T=0.0 $ = SQRT((FK*(FlU1.0)*(2.0lFKUMWZ.lilOJ Z«*1.0E75 C 9 P±0 CALL NDTRU.P. 8 Ш 60 TO 100 100 RETURN ® 5 END Подсчитываются суммы по строкам и столбцам: Lt = £ Ay (сумма по строкам), (1) у=1 где i = 1, 2, п. п Gf—Yt Аи (сумма по столбцам), (2) /=1 где / = 1, 2, т. 119
Вычисляется Q-статистика Кокрена: (3) Число степеней свободы равно: (4) ПОДПРОГРАММА QTEST Назначение Проверка на значительное различие трех и более соответствующих групп дихотомизированных данных при помощи теста Кокрена. Обращение CALL QTEST (A, N, М, Q, NDF) Описание параметров А —вводимая матрица NXM дихотомизированных данных (0 и 1). N — число рядов в каждой группе. М — число групп. Q — Q-статистика Кокрена (выводимая). NDF — число степеней свободы (выводимое). Примечания М должно быть либо равно трем, либо больше трех. Требуемые функции и подпрограммы Нет. Метод См. [21]. SUBROUTINE QTESTCA'N»M'Q,NDF> OIMENSION А(1) С t RSQ»0.0 GD=0.0 00 20 I«1.N TR=0.0 IJ8I-N 00 Ю J«1.M №!J*N 10 TR=TR*A(IJ) GD=GO*TR 20 RSO=RSO+TR*TR C 2 CSQ=0.0 IJ80 f Продолжение} 00 40 J81.M TCeO.O 00 30 T=1.N SO TCsTCfA(IJ) 40 CS08CSQ*TC*TC C 3 ₽M=M 08CPM-1.0)*(FH*CSQ“GD*GD)/(FM*GD-R$Q) C 4 NDF=M-1 RETURN «NO i 120
Перевод комментариев в тексте 1. Вычисление суммы квадратов сумм по строкам и общей суммы всех элементов GD. 2. Вычисление суммы квадратов сумм по столбцам CSQ. 3. Вычисление значения Q-теста Кокрена. 4. Определение числа степеней свободы. Подпрограмма RANK Назначение Ранжирование вектора величин. Обращение CALL RANK (A, R, N) Описание параметров ; А — вводимый вектор N величин. R — выводимый вектор длиною Af. Наименьшая величина ранжируется 1, наи- большая величина ранжируется N. Связи вызывают осреднение связанных рангов. Л' — число величин. Примечания Нет. Требуемые функции и подпрограммы Нет. Метод Вектор исследуется на последовательные наибольшие элементы. Если встре- чаются связи, они фиксируются и вычисляется значение их ранга. Например, если две величины связаны с шестым рангом, то им назначается ранг. 6.5 (.= (6 + 7) /2). (Распечатку подпрограммы см. на стр. 122). Перевод комментариев в тексте 1. Подготовка. 2. Определение ранга данных. 3. Проверка, была ли точка данных уже ранжирована. 4. Точка данных, подлежащих ранжированию. 5. Вычисление числа точек данных, которые меньше. 6. Вычисление числа точек, которые равны. 7. Проверка на наличие связи. 8. Хранение ранга точки данных без связи. 9. Подсчет ранга связанных точек данных. Подпрограмма SIGNT Эта подпрограмма выполняет проверку знака двух заданных векторов п наблюдений двух парных выборок. Шаги вычисления следующие: 1. Определение знака разности между двумя числами каждой . пары. 2. Определение К — числа пар, разность между которыми не равна нулю (0). Не принимаются во внимание те пары, разность между которыми равна нулю (0). 121
SUBROUTINE RANK(A#R,lH • 6 е DIMENSION А(1>.Л(П 1 00 10 !»1 »• 10 R(|)s0'0 40 50 € CONTINUE, f t с i DO 100 3 C 60 8 R (I) ssmaulh «0 с 1Р(Я(1Л 20.20.100 4 ?0 $МДц»0.0 c 20 00 TO 100 9 PsSMAU*<cOUAl*1.01* 0.5 с EQUAi.aO.0 ГеАСП 00 SO .и 30.40,50 5 JO SMALL=SMAIL*1,0 . £0 TO SO 80 90 1 CTO 00 90 J = LN ГНЙШН.О) 90/80.90 CONTINUE CONTINUE RETURN ENO 3. Определение М, равного либо числу (+) —разностей, либо числу (—) — разностей, в зависимости от того, что меньше. 4. Если К меньше либо равно 25, то вероятность, соответствую- щая значению, не превосходящему наблюдаемой величины М, дается биномиальным распределением м /К\ р=%[ (1) z=0 \ * / где Р = Q = 0.5; К\ Z! (К — /)! • Для облегчения вычислений уравнение (1) может быть перепи- сано следующим образом: (2) Если К больше 25, то вероятность вычисляется по закону нормаль- 122
ного распределения, апроксимирующему биномиальное распреде- ление, следующим образом: среднее: = КР = -у- (3) стандартное отклонение: а = VKPQ~-^-VK\ (4) _ „ (М + 0.5) — у, значение Z: Z = -— ’——. (5) После этого при помощи подпрограммы NDTR вычисляется вероят- ность р получения значения, не превосходящего Z. Примечание, р, вычисленная этой подпрограммой, дает одностороннюю проверку; следовательно, для получения двусто- ронней проверки необходимо удвоить значение р. Для справок см. [21]. ПОДПРОГРАММА SIGNT Назначение — Выполнение непараметрического знакового теста заданных двух рядов пар- ных наблюдений. Проверяется нулевая гипотеза, что разности между каждой парой совместных наблюдений имеют медиану, равную нулю. Обращение CALL SIGNT (N, А, В, К, М, Р, IE) Описание параметров N число наблюдений в рядах А и В. А — вводимый вектор длиной N, содержащий данные первой вы- борки А. В — вводимый вектор длиной N, содержащий данные второй вы- борки В. К — выводимая переменная, содержащая число пар наблюдений из двух выборок, разность между которыми не равна нулю. М —выводимая переменная, содержащая число положительных или отрицательных разностей, в зависимости от того, чго меньше. Р — вычисленная вероятность получить меньше, чем М, пар, имеющих одинаковый знак. Предполагается, что выборки получены из од- ной совокупности. IE - 0 — если нет ошибок; 1 — если К равно нулю. В этом случае Р полагается равным 1.0 и М равным 0. Примечания Если К меньше либо равно 25, вероятность вычисляется с помощью бино- миального распределения. Если К больше 25, вероятность вычисляется по нор- мальному распределению, аппроксимирующему биномиальное распределение. Вы численное Р будет вероятностью для односторонней проверки; для двусторон- ней проверки Р необходимо удвоить. Требуемые функции и подпрограммы, NDTR Метод См. [23]. 123
SUBROUTINE SIGN!K.M.P,1E) DIMENSION DOUBLE PRECISION FN.FD c 1 (Продолжение) c c IES0 K«O MPLUS»0 MMINS9O 2 DO 40 f«1.N DsA(I)-B(D IF(O) 20*40.30 3 20 K=K+1 HMIN5’MMINS*1 GO TQ 40 € 6 55 lFCK-25) 60.60.77 C 7 60 P81.0 IF(R) 75.75.6? 65 FNcl.O F0«1.0 00 70 I«1.N Ф1 F№FN*(FK-<FI-1 .OH FD«FO*FJ 70 P«P*FN/FO c 4 30 K=K*1 MPLUS«MPLUS*1 40 CONTINUE IF(K) 41,41,4$ 75 PsP/C?.O**K> GO TO 95 C $ 77 Us0.5*FK c 41 IE»1 Ps1.0 MaO 60 TO 95 42 FKM 3 IF(MPLUS-MMINS) 4S.45.S0 45 MsMPtUS GO TO 55 50 HaNMlNS SsO.5*Sbrr(FK> FM=M 1F(FM-U> 80.85,85 80 COB50.5 GO TO 90 85 CON’O.O 90 Za(FM4C0N-U)/S C 9 CALL NDTR(Z.P.O> 95 RETURN -• FOO
Перевод комментариев в тексте 1. Подготовка. 2. Определение (+) или (—) разности. 3. (—) разность. 4. (+) разность. 5. Определение числа наименьших знаков. 6. Проверка, задано ли К больше 25. 7. К меньше либо равно 25. 8. К больше 25. Вычисление среднего, стандартного отклонения и Z. Подпрограмма SRANK Эта подпрограмма при помощи коэффициента ранговой корре- ляции. Спирмэна проверяет корреляцию между двумя переменны- ми по данным двум векторам по п наблюдений в каждом. Наблюдения для каждой переменной ранжируются от 1 до п. Связь наблюдений требует осреднения связанных рангов. Вычисляется сумма квадратов разностей рангов п £>=S(Ai-B<)2, (1) где Ai — первый вектор рангов; Вг — второй вектор рангов; п — число рангов. Находится корректирующий множитель для связей: 7^ = 2 по переменной А; (2) /3_t Tb — ^ 12~~ п0 переменной В, где t — число связанных наблюдений для заданного ранга. Затем вычисляется коэффициент ранговой корреляции Спирмэна для следующих двух случаев: если Та или Ть равны нулю, если Та и/или Ть не равны нулю, Г_X+Y-P 3 2 У ХУ v П3 — п г где X = ----Та; у_П3 — П ~ 1 — ~12 Значимость rs равна: (3) (4) (5) (6) (7) 125
Число степеней свободы d.f. = п — 2. (8) ПОДПРОГРАММА SRANK Назначение Проверка корреляции между двумя переменными при помощи коэффициента ранговой корреляции Спирмэна. Обращение CALL SRANK (А, В, R, N, RS, Т, NDF, NR) Описание параметров А — вводимый вектор N наблюдений для первой переменной. •, В — вводимый вектор N наблюдений для второй переменной. R — выводимый вектор ранжированных данных длиною 2*N. Наимень- шее данное ранжировано 1, наибольшие ранжированы N. Связи назначают осреднение связанных рангов. N — число наблюдений. RS — коэффициент ранговой корреляции Спирмэна (выводится). Т — проверка на значимость RS (выводится). NDF— число степеней свободы (выводится). NR ~ код: О — для неранжируемых данных в А и В; 1. — для ранжируемых данных в А и В (вводится). Примечания Т полагается равным нулю, если N меньше десяти. Требуемые функции и подпрограммы RANK TIE Метод См. [21]. Перевод комментариев в тексте 1. Проверка, являются ли данные ранжированными. 2. Ранжирование данных в векторах А и В и назначение связанным дан- ным осреднения связанных рангов. 3. Перемещение ранжированных данных в вектор. 4. Вычисление суммы квадратов разностей рангов. 5. Вычисление индекса связанной метки. 6. Вычисление коэффициента ранговой корреляции Спирмэна. 7. Вычисление Т и числа степеней свободы, если N равно 10 или более. Подпрограмма TIE Назначение Вычисление корректирующего множителя, обусловленного связями. Обращение CALL TIE (R, N, KT, T) Описание параметров R — вводимый вектор рангов, длиною N, содержащий значения от 1 до N. N — число ранжируемых величин. 126
subroutine srank(a,6,r,n,rs,t.nOE,nR) DIMENSION А (1) . В (1 > ,.R С1) (Продолжение) KNNNsN*N*N-ll C 5 с 1 KT81 1FCNR-1) 5.10,3 CALL TtECR.N,KT,TSA> с 2 CALL TIECRCN*1).N.KT.T$B> 5 CALL RANK(A.R>N) C 6 CALL RANK(В,R(N*1)»N> IF(TSA) 60.55.60 60 TO 40 55 IFCTSB) 60.57.60 с 3 5? RS=1.0-6.0*07FNNN 10 00 20 l3l.fr GO TO 70 20 60 XsFNNNZ12.0-TSA 00 30 Id.К YxX*TSA-TSB J»I*N RS»(X**-0)/(2.0*<SORTCX*Y)) ) 30 R(J)«BClJ C 7 с 6 ТжО.О 40 0*0.0 70 IF(N-10) 80,75.75 00 50 !31.N 75 T»RS*SORT(FLOAT(N-2>/<1.O-RS*RS)> J»I*N 80 NDFsN-2 50 DeD*(R(I)-R(J))*(R(I)-R(j))- RETURN ENO KT--вводимый код для вычисления корректирующего множителя: 1 — решение уравнения (1); 2—решение уравнения (2). Т — корректирующий множитель (выводится): Уравнение 1 Т = SUM(CT**3—СТ)/12; Уравнение 2 Т = SUM(CT*(CT—1)/2), где СТ — число связанных наблюдений для заданного ранга. Примечания Нет. Требуемые функции и подпрограммы Нет. Метод Вектор отыскивается для последовательно возрастающих рангов. Вычис- ляются связи, и корректирующий множителе вычисляется по формуле (1) или (2). Перевод комментариев в тексте 1. Подготовка. 2. Отыскание следующего большего ранга. 3 Если все ранги проверены, возврат. 4. Вычисление числа связей. 5. Вычисление корректирующего множителя. 127
SUBROUTINE ТIЕ(R,N»КТ.Т) DIMENSION Rd) 40 Y = X ст=о.е с 1 C 4 т=о. 0 DO 60 1 = 1,R Y = 0.0 IF(R(I)-X) 60*50,60 5 Х=1.0Е38 50 CT = CT*.1.0 IN D = 0 60 continue с 2 C 5 DO 30 1 = 1,N IF(CT) 70,5,70 IFCR(I)-Y) 30,30,10 70 IF(KT*1) 75,80,75 10 IF(Rd)-x) 20*30,Д0 75 T=T+CT*(CT*1,)/2.0 20 X=R(i) GO TO 5 IND=IND*1 80 T=T*(CT*CT*CT-CT)/12.0 30 CONTINUE GO TO 5 с 5 90 RETURN IF(IND) 90,90,40 END ' Подпрограмма TWOAV Эта подпрограмма определяет двусторонний дисперсионный статистический анализ по Фридману заданной матрицы А с п строками (группами) и т столбцами (событиями). Данные в каж- дой группе ранжируются от 1 до т. Связь наблюдений требует осреднения связанных рангов. Вычисляется сумма рангов п R^ZA,,. (1) Затем вычисляется статистика Фридмана о 19 т X =-----Z L (Я/)2 - 3« (rn + 1). (2) г пт(т^\) J 7 v 7 Число степеней свободы d.f. = т — 1. ПОДПРОГРАММА TWOAV Назначение Проверка получения некоторого количества выборок из одной и той же совокупности при помощи двустороннего дисперсионного статистического ана- лиза по Фридману. Обращение CALL TWOAV (A, R, N, М, W, XR, NDF, NR) 128
Описание параметров А — вводимая матрица N X М исходных данных. R— выводимая матрица NXM ранжированных данных. N — число групп. М — число событий в каждой группе. W — рабочее поле длиною 2*М. XR — статистика Фридмана (выводится). NDF — число степеней свободы (выводится). NR — код: О — для неранжируемых данных в А; 1 —• для ранжируемых данных в А (вводится). Примечания Нет. Требуемые функции и подпрограммы RANK Метод См. [21]. SUBROUTINE TWOАV(А.R.N.М,W.XR,N0₽.NR) DIMENSION А(1).R(1>.W(1) С 1 (Продолжение) IF(NR-1> 10,30.10 с 3 С 2 35 RTSQsO.O ю оо го i=i.n (R = 0 !J=I-N 00 SO J = 1.M IK = IJ RTsO.O 00 IS J3l,M 00 40 1=1 .N IJ a IJ*N IRSIR>1 15 W(J)3A(IJ) 40 RT=RT+R<IR) CALL RANK(W.W(M*1).M) 50 RTSQ8RTSQ*RT*AT 00 20 J=1.M C A !K3|K«N IW=M+J FM=M 20 R(IK)«W(IW> XR3(12,O/(FM«FMM) )*RTS'*-3.0*FNM GO TO 35 C 5 30 NM=N*M nof«m-1 00 32 1=1,NM RETURN 32 R( I)sA(I) END Перевод комментариев в тексте L Проверка, являются ли данные ранжируемыми. 2. Ранжирование данных в каждой группе и назначение связанным данным осреднения связанных рангов. 5 Заказ № 517 129
3. Вычисление суммы квадратов сумм рангов. 4. Вычисление проверочного значения Фридмана XR. 5. Определение числа степеней свободы. Подпрограмма UTEST Эта подпрограмма проверяет, выбраны ли две независимые группы из одной и той же совокупности при помощи (7-теста Манн-Уйтнея по данному введенному вектору А, у которого мень- шая группа предшествует большей группе. Метки в обеих группах ранжируются одновременно в убывающем порядке. Связь наблю- дений требует осреднения связанных рангов. Подсчитывается сумма рангов большей группы /?2- Затем вы- числяется статистика U по следующей формуле: ^=д,/г2 + -»Н^+..О._/?2> (1) где ni — число событий в меньшей группе; П2 — число событий в большей группе; U = П1П2— U'. Если U' < U, то принять U = (7'. (2) Получают корректирующий множитель связей /з__t (3) где t — число наблюдаемых связей для данного ранга. Стандарт- ное отклонение вычисляется для двух различных случаев: если Т — О, + (4) если Т > О, <=> где N— сумма числа событий (гъ + пг). Проверяется значимость Z = -^-, (6) где л—среднее, равное — Z принимается равным нулю, если п2 меньше 20. ПОДПРОГРАММА UTEST Назначение Проверка, выбраны ли две независимые группы из одной и той же сово- купности при помощи U-теста Манна-Уйтнея 130
Обращение CALL UTEST (A, R, Nl, N2, U, Z) Описание параметров A — вводимый вектор событий, состоящий из двух независимых групп. Меньшая группа предшествует большей группе. Длина равна N1 + N2. R — выводимый вектор рангов. Наименьшая величина ранжируется 1, наибольшая ранжируется N. Связи требуют осреднения связан- ных рангов. Длина равна Nl + N2. N1 — число событий в меньшей группе. N2 — число событий в большей группе. U — статистика, служащая для проверки однородности двух групп (выводится). Z — мера значимости U в терминах нормального распределения (вы- водимая). Примечания Z принимается равным нулю, если N2 меньше 20. Требуемые функции и подпрограммы RANK TIE Метод См. [21]. (Распечатку подпрограммы см. на стр. 132). Перевод комментариев в тексте 1. Ранжирование меток совместно из обеих групп в убывающем порядке и назначение осреднения связанных рангов при связанных наблюдениях. 2. Сумма рангов в большей группе. 3. Вычисление U. 4. Проверка, дано ли N2 меньше 20. 5. Вычисление стандартного отклонения. 6. Вычисление Z. Подпрограмма WTEST Эта подпрограмма вычисляет коэффициент согласия Кендэла для данной матрицы А из п строк (переменных) и пг столбцов (событий). Наблюдения во всех переменных ранжируются от 1 до пг. Связанные наблюдения требуют осреднения связанных ран- гов. Получение корректирующего множителя для связей о» где t — число связей наблюдений для данного ранга. Вычисление суммы рангов (2) где / = 1,2, ..., пг. 5* 131
SUBROUTINE UTE$T(A,R,N1,N2»U, DIMENSION A C1),R(1) C 1 N=N1*N2 CALI RANKCA.R.N) Z = 0.0 • I a2so.o SP = N1 >00 10 f=NP,N 10 R2«R2 + RU) t 3 fn=n FN2»N2 tn>sFNX + FN2*( (РП?*Т»ПУ/2.0)-«а tl*fNX-UP IF(Ufc-U) 20,30,31) 80 U=UP € k SO THN2-20) 80.40,40 c $ 40 KT»1 CALI TIEtR.N,KT,TS) TF(TS) 50,60,50 50 SsSQRTC (FNX/(FN*(FN-_1.0)) )*( (( FN*FN*FN-FN}/1 2.0J-TS) ) GO TO 70 60 SSSQRT(FNX*( F'N + 1 .0)/12.0) t 6 70 Z=(B-FNX*0.5)/S 80 RETURN END
По ним находится среднее сумм рангов т (3) Выводится сумма квадратов отклонений т s—£(Yj — R)2. (4) j=i Затем вычисляется коэффициент согласия Кендэла = _. (5) —12— л2 (/и3 — т) Для т, больших 7, хи-квадрат равен = W. (6) Число степеней свободы d.f.=n — 1. (7) ПОДПРОГРАММА WTEST Назначение Проверка степени ассоциации среди некоторого числа переменных при по- мощи коэффициента согласия Кендэла. Обращение CALL WTEST (A, R, N, М, WA, W, CS, NDF, NR) Описание параметров А — вводимая матрица N X М исходных данных. R — выводимая матрица N X М ранжированных данных, наименьшее значение имеет ранг 1, наибольшее — ранг N. Связи требуют осреднения связанных рангов. N — число переменных. М — число событий. WA — вектор рабочего поля длиною 2*М. W — коэффициент согласия Кендэла (выводится). CS — хи-квадрат (выводится). NDF —число степеней свободы (выводится). NR —• код: О — для неранжируемых данных; 1 — для ранжируемых данных в А (выводится). Примечания Хи-квадрат принимает значение нуль, если М равно или менее 7. Требуемые функции и подпрограммы RANK TIE Метод См. [21]. 133
SUBROUTINE WTESTCA.R,N,M,WA,W,CS,NDF,NR) DIMENSION A(1),R(1),WA(1), FMsM FN=N f Продолжение) C 1 00 40 J=1.M TsO.O WA(J)=0.0 KT=1 j *00 40 J=1.N 00 20 1=1. IT IN=IR*I IJ=I-N 40 WACJ)=WA(J)*R(IR) IK=IJ C 3 IFCNR-1) 5,2,5 SNsO.O 2 00 3 J=1,M 00 50 J=1.M IjeXJ+N 50 SM»SM*WA(JX K«M*J $M=SM/FM 3 WA(K)=A(IJ) C 4 GO TO 15 S=0.0 5 00 10 J=1.K 00 60 J=1.M IJ=IJ+N 60 $8S4(WA(J)-SM)*(WA(J)-$M) TO WA(J)«A(IJ) C 5 CALL RANKCWA,WA(M*1),M) Wss/C((FN*FN)*(FN*FM*FM-FM)/12.0)-FN*n 15 CALL TIE(WA(M*1).M.KT.TI) C 6 T«T*TI CS=0.0 00 20 J=1,M NDFsO !F(M-7) 70,70.65 IWsM+J 65 C$«Fn*(FM-1.0)*W 20 R(IK)=WA(IW) NDF=M-1 C 2 70 RETURN l,R«0 ENO Перевод комментариев в тексте 1. Проверка, ранжируемы ли данные. Ранжирование данных для всех пере- менных с назначением связанным наблюдениям осреднения связанных рангов и вычисление коррекции для связанных меток. 2. Вычисление вектора сумм рангов. 3. Вычисление среднего сумм рангов. 4. Вычисление сумм квадратов отклонений. 5. Вычисление W. 6. Вычисление числа степеней свободы и хи-квадрат, если М больше 7. 134
Генератор случайных переменных и функции распределения Подпрограмма RANDU Назначение Вычисление равномерно распределенных случайных действительных чисел между 0 и 1.0 и случайных целых между 0 и 2**31. Для каждого обраще- ния в качестве входа служит целое случайное число и образуется новое целое число и вещественное случайное число. Обращение CALL RANDU (IX, IY, YFL) Описание параметров IX — при первом обращении IX должно содержать нечетное целое число с числом цифр девять или меньшим. После первого обра- щения IX должно быть равно значению IY, вычисленному под- программой при предыдущем обращении. IY — полученное в результате целое случайное число, требуемое при последующих обращениях к подпрограмме. Это число находится между 0 и 2**31. YFL — полученное в результате равномерно распределенное случайное число в интервале от 0.0 до 1.0, представленное в форме с пла- вающей точкой. Примечания Эта подпрограмма специально предназначена для системы 1БМ/360 и обра- зует 2**29 значений перед началом повторений. В статье; на которую дана ссылка, обсуждаются исходная величина (в данном случае 65539), проблемы хода программы и вопросы, касающиеся случайных чисел, использующих эту порождающую схему. Маклорен и Марсалия (АСМ 12, стр. 83—89) рассмотрели конгруэнтность метода порождения и проверок. В ряде случаев полезно при- влечение двух генераторов типа RANDU: один для заполнения таблиц и дру- гой для выбора из таблиц. 65539 приведена как исходная величина, имеющая лучшие статистические свойства для битов высшего порядка порождаемых от- клонений. Исходная величина выбрана в соответствии с обсуждением, данным в приведенной выше ссылке на статью. Необходимо заметить, что при выборе случайного числа с плавающей точкой при получении его из RANDU случай- ные характеристики отклонений с плавающей точкой модифицированы и в дей- ствительности имеют большую вероятность сохранять нули в битах низшего порядка в дробной части числа. Требуемые функции и подпрограммы Нет. Метод См [24]. 135
^SUBROUTINE RANDUCIX. ПЛН>| IY=IX*65539 IF(IY) 5.6»6 $ 1 Y = IY + 2147483647 + 1 6 YFlsiY YFL=yFI*.4656613E-9 RETURN ENO Подпрограмма GAUSS Эта подпрограмма вычисляет нормально распределенные слу- чайные числа с заданными средним и стандартным отклонением. Аппроксимация к нормально распределенным случайным числам может быть найдена из последовательности равномерно распреде- ленных чисел с помощью формулы Y___*=1_____£_ ~ /^/12 ’ где Xi— равномерно распределенное случайное число о < аг,.<1 ; К—число используемых значений Хь Y аппроксимирует точное нормальное распределение асимпто- тически, когда К стремится к бесконечности. В этой подпрограм- ме К было выбрано равным 12 с целью сокращения времени вы- полнения. В этом случае уравнение (1) имеет вид: 12 (1) Тогда переход к требуемому среднему и стандартному отклонению получим по формуле Yr= Г*$ + AM, (2) где У'— случайная переменная с требуемым нормальным распре- делением; S — требуемое стандартное отклонение; AM — требуемое среднее. ПОДПРОГРАММА GAUSS Назначение Вычисление нормально распределенного случайного числа с заданным сред- ним и стандартным отклонением. 136
Обращение CALL GAUSS (IX, S, AM, V) Описание параметров IX — должно содержать при первом обращении к GAUSS нечетное целое число с девятью или менее цифрами. В последующем оно будет содержать равномерно распределенное целое случайное число, образованное подпрограммой для пользования при сле- дующих обращениях к подпрограмме. S — желаемое стандартное отклонение нормального распределения. AM — желаемое среднее нормального распределения. V — значение вычисленной нормально распределенной случайной пе- ременной. Примечания Эта подпрограмма использует RANDU. Требуемые функции и подпрограммы RANDU Метод См. [25]. Использование 12 равномерно распределенных случайных чисел для вы- числения нормально распределенных случайных чисел согласно центральной предельной теореме. Результат затем приводится в соответствие с заданным средним и стандартным отклонением. Равномерно распределенные случайные числа вычисляются вне подпрограммы и отыскиваются при помощи метода остатков степеней. SUBROUTINE GAUSS(IX.SiAM.V) А=0.0 00 $0 I«1»12 CALL RANOU(IX»IY,Y) IXsiy 50 a=a*y Vs(A-6.0)*S*AM RETURN ENO Функции распределения Подпрограмма NDTR Эта подпрограмма вычисляет у = Р (х) = Prob (Х^х), где X— нормально распределенная случайная переменная с нулевым средним и единичной дисперсией Р (х) — —-— J ехр (— и2/2) du. — оо 137
Применяется следующая аппроксимация: Р(х) = 1 — /(х) 2 > О» /=1 где w= 1/(1 + рх); f(x) = exp (—л2/2) j/2iT; /> = 0.2316419; а, = 0.3193815; а2 = — 0.3565638; а8= 1.781478; а4 = - 1.821256; а5 = 1.330274. Максимальная ошибка равна 7 (10-7); при выходе из подпрограм- мы также выдается f (х). ПОДПРОГРАММА NDTR Назначение Вычисление Y = Р(Х) — вероятности, что случайная переменная U, рас- пределенная нормально (0,1), меньше либо равна X. В этой подпрограмме также вычисляется F(X) — ордината нормальной плотности. Обращение CALL NDTR (X, Р, D) Описание параметров X — вводимый скаляр, для которого вычисляется Р(Х). f Р — выводимая вероятность. D — выводимая плотность. Примечания Максимальная ошибка равна 0.0000007. Требуемые функции и подпрограммы Нет. Метод См. [26], [27]. SUBROUTINE NDTR(X.P»O> AX«ABS(X) Ts1.0/(1.Of.2316419*AX) Ds0.3989423*EXP(-X*X/2.0) P=1.O-D*T*((((1.330274*7-1,821256)*T*1.781478)*T- 1 0.3565638)*T*O.3193815) IF(X) 1.2.2 1 PS1.0-P « 2 RETURN END J 38
Подпрограмма BDTR Эта подпрограмма вычисляет P = lx (т, n)=Prob (Х^х), где X — случайная переменная, подчиняющаяся бета-распределе- нию с числом степеней свободы (непрерывные параметры) тип. Для вычисления должно иметь место 0 х 1, 0.5 т 10+5 и 0.5 С п С 10+5. При выходе из подпрограммы также выдается D — ордината плотности бета-распределения. Для 0< х 1 Л (т, п) может быть записано в следующем виде: 4 И, п) = $/(т, п, y)dy, о где = (1) В,т' Гги+(») ; D=/(m. »• 1Х (т, п) может быть приведено к биномиальной частной сумме, которая оценивается при помощи разложения в цепные дроби. Пусть N — т-\- п — 1 и г = т — 1. - Тогда: /х(щ, я) = 4(г+1, АГ-г); * (N\ Ix(r+\, N-r)= S x‘(l - x)N~s = s=r+l \ s / / N \ = [r+x)x^(\-x)^S, (2) где О s N', S — цепная дробь с 80 элементами, которых достаточно для необходимой точности. О _' 1 _£1_ ^2 ^2 _£so ^80 . ° — 1—1+1— 1+1— • • 1+ 1 ’ (N-i-r)(r + i) х . 1~ (г + 2Z—1) (г + 2Z) 1—х’ d - W + D x 1 (r + 2Z + 1) (г + 2Z) 1— x’ (3) (4) (5) Вышеприведенное разложение lx (m, n) через цепные дроби пригодно для положительных тип (как целых, так и не целых), ^>0(m-|-n>l)иr>0 (/п^1). Для удовлетворения этим двум последним условиям при т <. 1 необходимо выполнить сле- дующее преобразование перед началом вычисления 1Х (т, п): Ix (т, п) = хт (1 _ ху + 1х (т + 1 э й). (6) 139
Величина, стоящая в правой части уравнения (6), уже может быть вычислена. Известно, что 1Х (т, п) = 1\_х (п, т). Таким образом, любая из двух совокупностей параметров, указанных этим уравнением, может быть использована при вычислении интеграла бета. Выбор совокупности параметров производится по следующему эмпири- ческому правилу. Пусть р и q — степени свободы, соответствующие г, где z = x, если х 0.5 или (Г — х) в противном случае. Если величина [ (р — 1) — (р + q — 1) z’1» + 2 ] положительна, берется совокуп- ность параметров, соответствующая г. В противном случае привле- кается совокупность параметров, соответствующая (1—г). Если 0 < х 5^ 10-8 или 0^1 — х 10“8, то аппроксимация производится для х, равного 0 или 1 соответственно. Р и D затем получают значения в соответствии со следующей таблицей: 0<х<10-8 0 < 1 - х < 1СГ8 Р=1 Р = 0 Если то Если то А<1 А=1 А> 1 D=1075 D = 1/B(m, п) 0 = 0 В<1 £>=1075 В> 1 D= \/В(т, п) 0 = 0 Если т или п или обе эти величины находятся в пределах 10~8 от 1, то интеграл бета вычисляется точно для т — 1, п=1 или т = п = 1: Если А = 1, Д=1 А=1, ВФ 1 А =# 1, 5=1 то Р=х Р=\ -(1 -х)« Р=хт Если т или п больше 1000, то пользуются хи-квадрат аппрокси- мацией: Z\=2tn (1—х)/х распределено как %2 с 2т степенями сво- боды и Р = 1 — Рх> (zi) для т > 1000. z2 = 2nx/(l—х) распределено как %2 с 2т степенями свободы и Р = РХ2 (z2) для п > 1000. Если тип больше 1000, то применяется аппроксимация, соответ- ствующая Zj. Значения Р, очень близкие к нулю или к единице, могут быть несколько неточными. Для исключения возможности ошибочного толкования результатов при 0 Р 10-8 или 0 1 —Р 10~8 Р полагается равным 0 или 1 соответственно. Для справок см. [27], [28]. 140
ПОДПРОГРАММА^ BDTR Назначение \ Вычисление Р (X) — вероятности, что случайная переменная U, распреде- ленная в соответствии с бета-распределением с параметрами А и В, меньше либо равна X. Также вычисляется ордината F (А, В, X) плотности бета-распре- деления. Обращение CALL BDTR (X, А, В, Р, D, IER) Описание параметров X — вводимый скаляр, для которого вычисляется Р(Х). А—параметр бета-распределения (непрерывный). В — параметр бета-распределения (непрерывный). Р — выдаваемая вероятность. D — выдаваемая плотность. IER — код ошибки результата: IER = 0 —нет ошибки; IER = — 1, 4-1 — было вызвано CDTR и при этом встретилась ошибка (см. CDTR); IER = —2 — ошибочен вводимый параметр. X меньше 0.0 или больше 1.0, либо А или В меньше 0.5 или больше 10**(4-5). PhD получают значение — 1.Е75; IER ® 4-2 — ошибочен вывод. Р меньше 0 или больше 1. Р получает значение 1.Е75, Примечания См. математическое описание. Требуемые функции и подпрограммы DLGAM NDTR CDTR Метод См. [28]. Перевод комментариев в тексте 1. Проверка правильности вводимых данных. 2. Вычисление log (бета (А, В)). 3. Проверка на близость X к 0.0 или 1.0. 4. Установка параметров программы. 5. Вычисление ординаты. 6. А или В или обе величины в пределах 1.0±1.Е — 8. 7. Проверка, не превосходят ли А или В значения 1000.0. 8. Выбор параметров для вычисления цепных дробей 9. Проверка, будет ли А меньше 1.0. 10. Вычисление Р с использованием разложения по цепным дробям. 11. Установка индикатора ошибок. 141
subroutine boTrCx.a.b.p.o,ierj / double precision xx,dlxx.dlix, aa.bb.gi »g2,g3,G4,’O6,pp.,xo. pf.fn IX bSS. CC • RR, DLBETA J I C 1 IFCA-C.5-1.E-5)) 640,10.10 / 10 IF(B-C.5-1.E-5)) 640,20,20 20 IFCA-1.E+5) 30,30,640 30 IF(B-1.E*5) 40,40,64b 40 IFCX) 640,50,50 50 IF(MX) 640,60,60 2 60 AA=DBlE(A) BBs0BLE(B) CALL DLGAM(AA,G1,IOK) CALL 0LGAM(BB.62,IOK) CALL DLGAM(AA+BB,G3.IOK* DLBETA=G1*G2-G3 C 3 IF(X-1.E-8) 80,80.70 70 IF((1.-X)-1.E-8> 130,130,140 80 P=0.0 1FCA-1.) 90,100,120 90 D*1.E*75 60 TO 660 100 DDs-OLBETA I F(Do*1.68002) 120,120,110 110 DO=DEXP(DO) OS=SNGL(DD> 60 TO 660 120 0=0.0 GO TO 660 130 P&1.0 IFCB-1.) 90,100,120 C 4 140 XXsOBLECX) DLXXxDLOGCXX)
l1X=6L0G(1.ОО-Хх) xn = xx/d .O0-xx) tdVo C \5 DO=(AA-1.D05*DlXX*(B8-1.D6)*Dl1X-DLBeTA TFCDOVi.68D02) 150,150,160 150 IF CDD*.1.68D02) 170.170,180 160 0 = 1 .E75 60 TO 190 170 0=0.0 GO TO 19'0* 480 D0=0EXP(00> D=SNGL(DD) t 6 190 IF(A0S(A-1.)-1,E-8) 200,200,210 200 IF(ABSCB-1.)-1.E-8) 220,220.230 210 I F<AВS(В”1•)~1•E-8) 260,260,290 220 P=X GO TO 660 230 PP=BB*DL1X IF(PP*1.68D02) 240,240,250 240 P = 1.0 ' GO TO 660 250 PP=0EXP(PP) PP = 1 ,00-PP GO TO BOO 260 PP=AA*HLXX IF(PP>1.68D02> 270,270.280 270 P3D.0 GO TO 660 280 PPSDEXP(PP) P=SNGt<PP) GO TO 600
290 300 31.0 320 330 340 350 360 370 380 390 400 410 420 IFtA-1000.’) 300*300,310 / !F(B-1OOO.) 330*330,320 / XX<2.DQ*AA/XO / X$*SNGLCXX) / AA=2.D0*BB j OF»SHGl(AA> / / CALL CDTR (X$, OF, P',DUMMY . IER> P=1.0-P GO TO 670 XX=2.DO*BB*Xd XS=SNGL(XX) I AA=2.D0*AA DF=SNGL(AA) CALL CDTR(X9,0P»P«DUMMY,IER) GO TO 670 8 IFCX-eS) 340,340,380 IF(AA-I.DO) 350'350,36$ RR=AA*1.00 GO TO 370 RR = AA pD=DLXX/5.D0 DDsDEXPCOD) DD«(RR-1.OO)-(RR+B0-1.DO)*XX*DO*2.OO IFCDD) 420,420,430 !F(B8-1.00) 390,390.400 RR=BB*1*00 60 TO 410 RR = 8B 0080L1X/5.DO DD=DEXP(OD) 00S(RR-1 . D0)-( AA*RR-1 . DO) *( 1 .'DQ-/X) *00*2.00 IF(DD) 430.430,420 !D = 1 ff=olix
OllXenUXX DLXX=Ff\ XO=1. DOZjLO f'F=AA | A_A = BB \ £b=ff \ t2 = G1 9 430 FF=0.$O IF(AA-I.OO) 440*440,47fl £40 CALL DLGAM(AA+1.DO,G4.IOK) OD=AA*DLXX+BB*OL1X+G3-G2-G4 tF (DD + 1 .68D02) 46О|46О*Ш 550 FF=FF+DEXP(DO) 460 AA?AAt1.00 10 470 FR=AA+BB-1.DO RRiAA-1.D0 tf=8jO X I=0FLOAT(I I) SS=( (BB-Xl)*(RR + XlU/URRt2.0QOI~1 .n0)*(RR + 2.00*Xl)) $s=$s*xo 00 480 1=1,79 (Г=80-Г XI=DFLOAT(IГЭ Op = (XI*( FH+Xb)) 7 ((mZ.D&m*! .00)*W*2.DO*XI)) OD=DD«XO CC = < (BB*»XD*CRR+XI) >/4(RR+ZiDQtXI’LuDD)*(R£+2.00*XI)) €C=CC*XO S$sCC/C1.00*D0/(1.D0-$S)> Ш CONTINUE <$•1.00/(1.00-$$) IF(SS) ^50,650,490 490 CALL DLGAM(AA*BB,G1,IOK) CALL 0LGAM(AA*1.00.64,IOK) CC=G1'G2-C4tAAtDUX+(0B*1 .DO) *DL1X
РР - СС 4 DLOG (SS) fF(РР*168002) 500,500,510 / 500 PP»FP i GO TO 520 I 5Ю PP = OEXP(PP)*fF j 520 IF(IO) 540,540,53ft 530 P0=1.DO-P0 540 P=SMGl<PP) 11 CP(P) 550,570,570 550 !F(A8S(p)-1 .E-7) 560,560,65ft 56Q 0*0.0 60 TO 660 S?0 Iftl ,-P) ’580.6OO.6U0 580 .6*7) 590,590,650 5*90 0=1,0 CO TO 660 600 tf(P-1.e-8) 6Ю,610,620 610 P=o.o GO Г0 660 62U !F((1.O-P)<1.E-8) 630,630,660 630 P=1.0 GO TO 660 640 t£R*-2 0S-1.E75 P«-1.£75 80 TO 670 650 IERs*2 Рз1.£75 GO TO 670 660 lERftO 670 RETURB
Подпрограмма CDTR Эта подпрограмма вычисляет Р = Р (x)=Prob (А'^х), где X — случайная переменная, подчиняющаяся ^-распределению с непрерывным параметром т. Для того чтобы вычисление могло быть выполнено, значение х должно быть больше либо равно нулю и 0.5 т 2(105). рри выходе из подпрограммы также выдает- ся %2 — ордината плотности распределения х. Для х > 0, Р (х) мож'ет быть записано в виде: Р = \f(m, y)dy, (1) О где f(m, у) = у<т~"2'>12е~У12/(2т12Г и D=f(m, х). „ п т Г т 1 Для оценки интеграла сначала определяется 0 = — — I, Гт] , , т где -у I означает наибольшее целое, меньшее либо равное —. Таким образом, 0 будет дробной частью -у-. Подставив это выра- жение в интеграл и выполнив должные преобразования, получим следующие результаты. Если то 0</и<2 Р(х)=П + Г2 2<т<4 Р(х)=7'1 т>4 Р(х)=П-2ГЗ Т1 С /e-^dy где Л1 = ——----------; J 2’+’ Г (1 + 0) Т2 = /(2 + 20, х); [?] Г3= 2/(2/+ 20, х). i=1 Т2 и ТЗ могут быть оценены непосредственно с помощью логариф- мов и антилогарифмов. Если 0=0 — целое), то Т\ легко оценивается по формуле П = 1 - е~х12 Если 0 > 0, то Т1 может быть разложено в следующий беско- нечный ряд: Т1 _ ( z _______________________-4- \ (2) 1 1 — Г(1 4- 0) \ 1 4-0 2 + 6^21(3 + 0) 3! (4 + 0) т • • • ) ’ w 7 Х 147
Этот ряд используется при х, находящемся Ц пределах 10“8< <х^10. Поэтому требуется не более 30 членов для обеспечения необходимой точности сходимости с ошибкой не более 10"9. Для х > 10, 1 — Т1 вычисляется по формуле^§йлера — Маклоре- на с членами по третью производную включительно [см. (27), уравнение 23.1.30]. Окончательно 1 N 1-Tl=fh(u)du, (3) о N где h(u)= г(1^6) и $h(u.)du = N-1 , = (И) + Т h - 12 h' + 4) h'" Заметим, что в нуле h’—h'”—Ъ. С целью получения точности, отвечающей той, что может быть получена по методу уравнения (2), в уравнении (3) использовано У=26. Если О^х^Ю-8, то х аппроксимируется нулем. Р распола- гается равным нулю и D получает значение 1075, 0.5 или 0 соот- ветственно для т, меньшего 2, равного 2 или большего 2. Если т > 1000, то пользуются аппроксимацией Уилсона и Гиль- ферти. (х2//п)1/3 распределено приблизительно нормально со сред- 2 2 * ним 1—и дисперсией [см. (27), уравнение 26.4.14]. Если G С 1000 и х > 2000, или G > 1000 и х > 106, то Р получает значение 1. Так как Т1 может иметь ошибку около 10“9, то значения Р (х), очень близкие к нулю или единице, в ряде случаев могут быть не- точными. Для исключения возможных ошибочных толкований ре* зультата, если 0^Р(х)^10-8 или 0^1—Р(х)^10-8, то Р(х) полагается равным 0 или 1 соответственно. %2-распределение относится к семейству гамма-распределений вероятностей. Общий вид распределений этого класса X PG(x)=f G(n, А, ф; и) du, о где G (п, а, ф, и) = (и — Г («)). Эта подпрограмма, следовательно, может быть также исполь- зована для вычисления интеграла вероятностей от нуля до х и вы- числения соответствующих ординат для х для любого члена этого семейства гамма, положив X — 2 (и — а)/ф и т — 2п. Тогда Р(х) будет искомой вероятностью и 2f(m, х)/ф — искомой ординатой. Для справок см. [28], [27]. 148
ПОДПРОГРАММА CDTR Назначение Вычисление Р (X) вероятности, что случайная переменная U, распреде- ленная в соответствии с хи-квадрат распределением с G степенями свободы, меньше либо равно X. Вычисляется также ордината плотности хи-квадрат рас- пределения X. Обращение CALL CDTR (X, G, Р, D, IER) Описание параметров X — вводимый скаляр, для которого вычисляется Р(Х). G — число степеней свободы хи-квадрат распределения. G — непрерыв- ный параметр. Р — выводимая вероятность. D — выводимая плотность. IER— код ошибки результата: IER = 0 — нет ошибок; IER = —1 — ошибка в вводимом параметре. X меньше 0.0 или G меньше 0.5 или больше 2* 10** (+5). Р и D по- лучают значение —1.Е75; IER =+1—ошибка при выходе. Р меньше нуля или больше единицы или ряд для Т1 (см. математическое описание) не сходится. Р получает значение 1.Е75. Примечания См. математическое описание. Требуемые функции и подпрограммы DLGAM NDTR Метод См. [28]. Перевод комментариев в тексте 1. Проверка на правильность введенных данных. 2. Проверка на близость X к 0.0. 3. Проверка X > 1.Е + 6. 4. Установка параметров программы. 5. Вычисление ординаты. 6. Проверка G>> 1000.0. Проверка X > 2000.0. 7. Вычисление теты. 8. Выбор метода вычисления Т1. 9. Вычисление Т1 для тэты, равной 0.0. 10. Вычисление Т1 для тэты, большей 0.0, и X, меньшего либо равного 10.0. 11. Вычисление Т1 для тэты, большей 0.0, и X, большего 10.0 и меньшего 2000.0. 12. Выбор должного выражения для Р. 13. Вычисление Р для G, большего нуля и меньшего 2.0. 14. Вычисление Р для G, большего либо равного 2.0 и меньшего 4.0. 15. Вычисление Р для G, большего либо равного 4.0 и меньше либо рав- ного 1000.0. 16. Установка индикатора ошибки» 149
SUBROUTINE CDTRCX.G.P.O, IER*) double precision xx.olxx,xj.dlx?.go.g2.dlt3.Гнета.TMP1.6162 1OD • T11,SER,С С,XI • FAC . TLOG•TERM,GTH,A2»A.В.С•ОГ2,DT3« ГНР I C 1 IF(G-(.5-1.E-5)) 590,10,10 10 IFCG-2.E+5) 20,20,590 20 |F(X) 590.30,30 с г 50 IF(X*1.E-8) 40,40,80 40 P=0.0 fFCG-2.) 50.60,70 50 OS1.E75 GO TO 610 60 0=0.5 GO TO 610 70 0=0.0 GO TO 610 C 5 80 IF(X-1.E*6> 100.Ю0.90 90 0=0.0 P = 1 .0 60 TO 610 C 4 ioo xxsdblecx) 0LXXsOLOG(XX) X2SXX/2.D0 0LX2=OLOG(X2) GG=O0LE<G) 62=G6/2.00 C $ CALL OLGArf (G2. GL G2 . ЮЮ 0D = (G2-1.00)«0lxx-x2-G2«.69314 718055094$3-GL62 IF(00-1.68002) 110,110.120 110 IF(OO*1.68002) 130.130.140 • UO 0 = 1.E?5 GO Г0 150
130 0=0.о GO ТО 150 14.0 DD = DEXP(DD) D = SNGJADD) с 6 150 IFCG-1000.) 160»160»/S0 «50 IF(X-200Q.) 490,190.170 170 р=1.0 GO TO 610 180 A=DLOG(XX/GG)/3.00 A=OEXPXA) B=2.00/(9.DO*GG) C = (A-1 .D0tB_)7XSQRT (6> $C=SNGL(C) CALL NOTR($C,P,DUMMY) GO TO 49Q C 7 190 K=ID1NT(G2) THETA=G2-DFLOAT(k) IF ( thEтA-1F0-8) г00,Ш»2Ю 200 THETA=0.00 210 THP1=THETA+1.OQ C 8 IF(THETA) 230,230,220 220 !F(Xx-10,00) 260,260.320 C 9 230 1F(X2-1.68D02) 250,8.40,249 240 T1=1.0 GO TO 400 250 T11=1.DO-DEXP(-X2) T1=SNGI(T11 ) GO TO 4^0 C 10 260 SER = X2*(1 .D0/THPl=X2/(,THP1 + 1.D0) ) J = <-1 СC = 0FLOAJ(4 )
00 270 IT1=3,30 XisDFLOATCIT1) CALL OLGAM(X I,FAC,IOK) TlOG=XI *0LX2-FAC-DL0G(X1+THETA) IERM=DEXP(TLOG) term=dsign(term,сc) SERaSER*TERM CCS-CC IF(0ABS(TERM)-1.0-9) 280/270,270 270 CONTINUE 60 TO 600 280 IFCSER) 600,600,290 290 CALL 0LGAMCTHP1 ,GTH, ЮК) TLO6aTHETA*0LX2*0LO6(SER)-GTH> IFCTLOG+1.68002) 300.300,310 300 TIsO.O 60 TO 400 310 T11«0ЕXP(TLOG) T1»SN6LCT11) GO TO 400 t 11 320 A2=0.D0 00 340 1=1,25 XIsOFLOAT(I) CALL 0L6AM/THP1,GTH,IOK) Т11«-(13.00*ХХWXI*THP1*OLOG(13.00*XX/XI>-gth-dlOgcxi) IF(Tl1*1.68002) 340,340,330 330 T11®DEXP(П1) A2=A2*T11 340 CONTINUE A«1.01282051 + ТНЕТА/156.OO-XX/31 2.00 BsDABS(A) C»-X2*THP1*DLX2*DLOG(B)-GTH-3.951243718581427 IF(C*1.68002) 370,370,350 350 IFCA) 360,370,380 L 360 Cs-OEXPCC)
GO TO 390 370 C=0.00 GO TO 390 380 C=DEXP(C) 390 C=A2*C T11=1.00“C T1=SNGL(T11) C 12 400 !F(G-2.) 420.410.410 410 TF(G-4.) 4S0.460.460 < 13 420 CALL 0LGAMCTHP1,GTH,IOK) 0T2=THETA*DLXX-X2-THP1*.6931471805599453-GT» tF(0t2*1.68002) 430.430.440 430 P=T1 60 TO 490 440 DT2=DEXP(0T2) T2«SnGL(Dt2) P=T1*T2*T2 GO TO 490 C 14 450 P=T1 GO TO 490 C 15 460 0X3=0.00 00 480 13=2,К TflPl = DFLOAT( I3HTHETA CALL 0LGAM(THPbGTH.rOK> OLT3=THP|*OLX2-DLXX-X2-GTH IF(OLT3*1.68D02) 480.480.470 J 470 0T3=0T3*DEXP(0LT3) 480 CONTINUE T3=SNGL(DT3) PsTI-ТЗ-ТЗ C 16 490 IF(p; 500.520.520
500 if(AB$(P)-1.E-7) 510,510.600 510 PsO.Q 60 TO 610 520 t.F(1.-P) 530.550,550 530 IF(ABS(1.-P)-1.E-7) 560,540,600. 540 Psi.o 60 TO 610 550 IFCP-1.E-8) 560.560.570 560 P = 0.0 GO TO 610 570 !F((1.0-P)-1.E-8) 580,580.613 580 P=1.0 GO TO 610 590 IER«-1 0S-1.E75 P«-1.E75 GO TO 620 600 !ERe*1 P«1.E75 GO TO 620 610 IER*0 420 RETURN END Подпрограмма NDTRI Эта подпрограмма вычисляет x=p~1(y), такое, что у=Р(х) = = Prob (Х^х), где X—нормально распределенная случайная переменная с нулевым средним и единичной дисперсией. Это озна- чает, что данное Р(х) разрешается относительно х следующим образом: Р(х) = —Д=^ f ехр(—u?/2)du. у 2л J — оо Для этого применена следующая аппроксимация: 2 /3 х = w — S a/w1 / S btW1, i=0 I /-0 (П 154
где w = Y\n(\lp-) а0 = 2.515517; at = 0.802853; а2 = 0.010328; d, = 1.432788; b2 = 0.189269; bs = 0.001308. (0<p<0.5); (2) Если P(x) больше 0.5, то в уравнении (2) в качестве р исполь- зуется 1—Р(х) и результат (1), х принимается отрицательным. Максимальная ошибка равна 0.00045. Одновременно подсчиты- вается f(x). Для справок см. [26], [27]. ПОДПРОГРАММА NDTRI Назначение Вычисление X = Р** (—1) (Y); аргумент X, отвечающий Y = Р(Х) —вероят- ности, что случайная переменная U, распределенная нормально (0,1), меньше либо равна X. Одновременно вычисляется ордината плотности нормального рас- пределения F (X). Обращение CALL NDTRI (Р, X, D, IER) Описание параметров Р — вводимая вероятность. X — выводимый аргумент, причем Р = Y — вероятности и U — случай- ная переменная меньше либо равна X. D — выводимая плотность вероятности F(X). IER —код ошибки при выходе: IER = —1, если Р не находится на интервале (0,1) включи- тельно; IER “ 0, если нет ошибок. См. примечания. Примечания Максимальная ошибка равна 0.00045. Если Р = 0, то X получает значение — (10)** 74, D получает значение 0. Если Р-1, тоХ получает значение (10)** 74, D получает значение 0. Требуемые функции и подпрограммы Нет. Метод См. [26], [27]. 155
SUBROUTINE NDTRI(P•X,О•IE> IE = O !F(P) 1,4,? 1 IE = -1 GO TO 12 2 iF<P-1.0) 7,6,1 4 X=-.999999E+74 5 D=0.0 - GQ TO 12 6 x?.999999E+74 GO TO 5 Г Q.= P !F(0-0.5) 9,9,8 8 D = 1.0-0 9 t? = A LOG (1.0/-C 0*0) > X=SQRT(T2) X=T-C2.515517*0.802853*T*0.010328*T2)/(1.0*1.432738*T*0.189269* 1T2*0.001308*T*T2) tF(P-0.5> 10.10,11 10 x=-x 11 D = 0.3989G23*EXP(eJt*X/2.81 12 RETURN • ENO Элементарные статистики и разное Подпрограмма MOMEN Эта подпрограмма вычисляет четыре момента сгруппированных данных Fit Ръ ..., Fn на равных интервалах классификации. Чис- ло интервалов классификации вычисляется следующим образом: п = (UBOS - UBOxyUBO2, (1) где UBOi — заданная нижняя граница; UBO2 — заданный интервал классификации; UBO3 — заданная верхняя граница, и суммарная частота определяется как п T=^Fi, (2) 7=1 где Fi — отсчет частоты появления в f-м интервале. 156
Затем вычисляются: первый момент (среднее) 2 Fi [UBOi + (i — 0.5)UBO2] ANSi = —------------т------------; (3) второй момент (дисперсия) 2 Fl [UBOi ->г (i — 0.5) UBO2 - Л^S1]^ ANS2 = —----------------т----------------; (4) третий момент п s Fl [UBOi + (Z — 0.5) UBO2 — ANSJ3 ANSa = -------------т----------------; (5) четвертый момент 2 Fi [UBOi + (i — 0.5) UBOi — ANSiY ANSt = —----------------f. (6) Эти моменты смещенные и не корректированы на группирова- ние. ПОДПРОГРАММА MOMEN Назначение Отыскание первых четырех моментов для группированных данных на рав- ных интервалах классификации. Обращение CALL MOMEN (F, UBO, NOP, ANS) Описание параметров F — группированные данные (частоты) задаются в виде вектора длиною (UBO(3) — UBO (1))/UBO (2). UBO — вектор, занимающий 3 ячейки, UBO(l)—нижняя граница и UBO(3)—верхняя граница данных. UBO (2) — интервал класси- фикации. Заметим, что UBO(3) должно быть больше UBO(l). NOP — параметр выбора. Если NOP = 1, то ANS(l)—среднее, если NOP = 2, то ANS(2)—второй момент, если NOP = 3, то ANS(3) — третий момент, если NOP = 4, то ANS(4) —четвертый момент, если NOP — 5, то вычисляются все четыре момента. ANS — выводимый вектор длиною 4, в котором находятся моменты. Примечания Заметим, что первый момент не центральный, а значение его равно сред- нему. Среднее всегда вычисляется. Моменты смещены и не корректированы на группирование. Требуемые функции и подпрограммы Нет. Метод См. [29], 157
'subroutine momeN(F,ubo,nop,ans> DIMENSION FC1),UBO(1),ANS(11 DO 100’ I= 1,4' 100 ANS(D=0.0 C 1 №(ивосз>-ueo(1>)/U80(2) C 2 T=0.0 7 00 110 1 = 1,N 110 TsT*F(t) !F(N0P-5) 130,120,115 115 NOP’S 120 JUMP=1 GO TO 150» 130 JUMP=2 C 3 150 00 160 1=1 ,N/ f I = I 160 ANSC1)=ANS(1)+F(T)*(UB0(1)*(FI-0.5)*UB0(2)) ANS(1)= ANS(1)/Т GO TO (350,200,250,300,200),NOP C 4 200 DO 210 1=1,N FI = I 210 ANS(2)=ANS(2)*F(I)*(UB0(1)*(FI-0»5)*UBO(2)"AN$(* 4 ? **2 ANS(2)=ANS(2)/T GO TO (250,350),JUMP C 5 250 00 260 1=1,N F| = I 260 ANS(3)=ANS(3)*F(1)*(UBO(1)♦(FI~0•5)*UBO(2)pANS(1 ) )**3 ANS(3)=ANS(3)/T GO TO (300,350),JUMP e 6 SOO DO 510 1=1,N
ЗЮ ANs(4)•AN$(4)♦F(I)*(ивО(1)♦сpI-0 * 5)*иВО<2)-ANs(1))**4 ANS(4)8ANS(4)/Т 350 RETURN END Перевод комментариев в тексте 1. Вычисление числа интервалов классификации. 2. Вычисление общей частоты. 3. Первый момент. 4. Второй момент. 5. Третий момент. 6. Четвертый момент. Подпрограмма TTEST Эта подпрограмма вычисляет определенные f-статистики по средним совокупностей при различных гипотезах. Выборочные средние Аь А2, ...» Ana и Bi, В2, ..., Bnb обычно находятся по следующим формулам: NA NB _ S Af 2 Bt А = в=-^в-« 0) и соответствующие выборочные дисперсии: 2(А,-Л)! ™(В,-В)! 5Л^-Ь-яг-_-; SB^ %в_, (2) Количества ц и о2 обозначают для совокупности соответствен- но среднее и дисперсию в последующих гипотезах. Гипотеза: р,в=А; А — заданное значение (выбор 1). Пусть В — оценка цв и NA= 1. Подпрограмма вычисляет: ANS = —• VNB (/-статистика). (3) NDF = NB — 1 (число степеней свободы). (4) Гипотеза: Ца=цв; а2А=°2в (выбор 2). Подпрограмма вычисляет: В___д 1 ANS = —$—• ./ —j— i (/-статистика). (5) г ‘na+'nb’ NDF = NA4-NB — 2 (число степеней свободы), (6) 159
где о 1 / (NA — 1) SA2-|-(NB — 1) SB2 m Г NA + NB —2 • Гипотеза: Ца = Цв; g2a¥= g2b (выбор 3). Подпрограмма вычисляет: R —A ANS = —7^ Jr -== (/-статистика); (8) V ‘NA’ + ’NB’ / SA2 . SB2 \2 NDF___________\ NA i" NB / ______ _ SA2 2 z,. (-na)/(na+1)+(w)Anb + 1) Примечание. При выходе из подпрограммы выдается округ- ленное, а не усеченное значение NDF (числа степеней свободы). Гипотеза: ца = Цв без предположения о о2 (выбор 4). Подпрограмма вычисляет: ANS=—• ]/NB (/-статистика); (10) NDF = NB— 1 (число степеней свободы), (11) где‘О='В—Т (12) 1/ SD=F — NB-1---------------• <13) NA = NB ПОДПРОГРАММА TTEST Назначение Нахождение некоторых Т-статистик среднего совокупности. Обращение CALL TTEST (A, NA, В, NB, NOP, NDF, ANS) . Описание параметров к — вводимый вектор длиною NA, содержащий данные. NA — число наблюдений в А. В — вводимый вектор длиною NB, содержащий данные. NB — число наблюдений в В. NOP — выбор различных гипотез: NOP = 1 — среднее совокупности В равно данному значе- нию А (полагаем, что NA =1); NOP = 2 — среднее совокупности В равно среднему совокуп- ности А при задании, что дисперсия В равна дисперсии А; NOP = 3 — среднее совокупности В равно среднему сово- купности А при задании, что дисперсия В не равна дисперсии А; 160
SUBROUTINE TTEST(A,NA,В.NB,NOP,NDF«ANS) DIMENSION ACT),0(1) f 1 NOF«O ANSsO.O C 2 AMEAN=0.0 00 110 1=1.NA 110 AMEA№AMEAN + A( I) FNA=NA AMEAN=AMEAN/FNA C 3 115 BMEAN=0.0 00 120 1=1.N0 120 BMEAN=0MEAN+8(I) FNB=N0 BMEANsBMEAN/FNB IFCN0P-4) 122.180.200 122 IF(f<0P-1) 200.135,125 C 4 125 SA2=0.0 00 130 J=1,NA 130 SA2’SA2*(A(I)-AMEAN)♦*? SA2=SA2/(FNA-1.0) Г 5 135 SB2=0.0 00 140 1=1,NO 140 S82 = SB2 + (B (1)-ВМЕАЮ**2 S82=SB2/(FNB-1.0) .60 T0.(1 50,1 60,1 70), NOP X C 6 150 ANS=((8MEAN-AMEAN)/SQRT(S02))*SQRTCFnB) .NOFsnB-1 GO TO 200 c 7 160 N0F=NA*NB-2 6 Заказ № 517
fNDF=NDF SsSQRTC ((FNA-1.0)*SA2t(FNB*1.0)*SB2) /РШ) ANS = ((BMEAN-ArUW/UW.Q/mHUQ/UAt1.0/F..NB)> 60 TO 200 C 8 170 ANS«(8MEAN-AMEAN)/$QRTXSA2/FNA+S0?/FnB> A1 = (SA2/FNA + SB2/FNB)*♦? A2=(SA2/FNA)**2/(FNA + l,Q)t($82ZFWM?/.0> WOF5A1/A2-?.Q+Q.5 CO T-Q tQO C 9 180 SD=0.0 D=BMEAN-AMEAN 00 190 1=1,NB 190 SD=SD+(В(I)-A(I)-0)**2 SD=SQRT(SD/(FN8-1.0)) ANS=(D/5P)*SORT(FNB) N0F5HB-1 200 RETURN END NOP = 4 — среднее совокупности В равно среднему совокуп- ности А при отсутствии информации относительно дисперсий А и В (полагаем, что NA = NB). NDF — выводимая переменная, содержащая число степеней свободы, со- ответствующее вычисляемой Т — статистике. ANS — Т —статистика для заданной гипотезы. ч Примечания NA и NB должны быть больше 1 за исключением NA = 1 при выборе 1. NA и NB должны быть одинаковыми при выборе 4. Если NOP отличается от 1, 2, 3 или 4, то число степеней свободы и Т - статистика не вычисляются. При этом NDF и ANS получают значение нуль. Требуемые функции и подпрограммы Нет. Метод См. [1]. Перевод комментариев в тексте 1. Подготовка. 2. Вычисление среднего А. 3. Вычисление среднего В. 4. Вычисление дисперсии А. 5. Вычисление дисперсии В. 162
6. Выбор 1. 7. Выбор 2. 8. Выбор 3. 9. Выбор 4. Подпрограмма BISER Эта подпрограмма вычисляет двухсерийный коэффициент кор- реляции между двумя непрерывными переменными. Одна перемен- ная разбита на две части (дихотомизирована). Шаги вычисления следующие: 1. Вычисление среднего непрерывно измеряемой переменной Л N S Al А = (1) где N — число наблюдений в выборке. 2. Вычисление стандартного отклонения непрерывно измеряв- . мой величины А (2) о дихотомизированной 3. Получение следующей информации величине В: р — части наблюдений, находящихся в q — части наблюдений, находящихся в у — ордината кривой нормального распределения в точке де- ления между частями р и q. 4. Получение Др, равного среднему значений А, которые соот- ветствуют значениям В, находящимся в верхней группе. 5. Вычисление двухсерийного коэффициента корреляции помощи следующей формулы: Ар А р Гь s ~ ‘ 6. Стандартная ошибка гь оценивается по формуле верхней группе; нижней группе; Гь при (3) ,2 Srb (4) Для справок см. [30], [31]. 6* 163
ПОДПРОГРАММА BISER Назначение Вычисление двухсерийного коэффициента корреляции между двумя непре- рывными переменными, одна из которых искусственно дихотомизирована. Обращение CALL BISER (N, А, В, HI, ANS, IER) Описание параметров N — число наблюдений. А — вводимый вектор длиною N, содержащий непрерывную перемен- ную. В — вводимый вектор длиною N, содержащий дихотомизированную переменную. HI — вводимый численный код для обозначения верхнего класса дихо- томизируемой переменной. Любая величина в векторе В, которая равна или больше HI, относится к верхнему классу. ANS — выводимый вектор длиною 8 следующего содержания: ANS (1) — среднее переменной А; ANS (2) — стандартное отклонение переменной А; ANS (3) — часть наблюдений, находящихся в верхнем классе В; ANS(4)—часть наблюдений, находящихся в нижнем классе В; AN S (5) — среднее переменной А для наблюдений, совпа- дающих с верхним классом переменной В; ANS (6) — среднее переменной А для наблюдений, совпадаю- щих с нижним классом В; ANS(7) — двухсерийный коэффициент корреляции; ANS (8)—стандартная ошибка двухсерийного коэффициен- та корреляции. IER — 1, если в нижнем классе переменной В нет наблюдений; —1, если все наблюдения переменной В находятся в нижнем классе; О — во всех других случаях. Если lERne равно нулю, то ANS(I) — 10**75, 1 = 5, ..., 8. Примечания Значения дихотомизированной переменной В должны быть в числовом виде. Их нельзя представлять при помощи букв или специальных знаков. Требуемые функции и подпрограммы - NDTRI Метод См. [32]. Перевод комментариев в тексте 1. Вычисление среднего и стандартного отклонения переменной А. 2. Определение наблюдений, относящихся к верхнему и нижнему классам. 3. Отыскание ординаты нормального распределения в точке деления между сегментами, содержащими части Р и Q. 4. Вычисление двухсерийного коэффициента корреляции. 5. Вычисление стандартной ошибки R. 6. Хранение результатов. Подпрограмма PHI Эта подпрограмма вычисляет коэффициент корреляции фи между двумя дихотомизированными переменными. Вычисление происходит по следующим шагам: 164
SUBROUTINE 8 I SEB(N.А,В.нJ,ANS UR* DIMENSION A(1* .8(1),ANS(1* С 1 ( Продолжение) <ER=O 35 TERs-1 SUMsO.O GO TO 50 SUMZsO.O 40 ANS(5)=5UM/P 00 *0 1=1.N IF(Q) 45.45.60 SUM=SUM*A(I> as TERd i 0 SUM2sSUM2*A<b)«A( t * ANS(4)=0.0 FN = N ANS(3)»1.0 ANS(1)=SUM/FN 50 00 55 Is5.8 ANS(2)®(SUM2-ANS(1>*SUM)/(FN-1,0) 55 ANS(I)x1.E?5 ANS<2)=SQRT(ANS<2)) GO TO 65 с 2 60 ANS(6)«SUM2/0 PeO-O PsP/FN SUMsO.O 0a1.0-P SUM2sO.O г 3 00 30 1=1.N САЦ NOTR I CO. X . Y . EP) 1Р(8П)-Н1) ?O,25.25 ( 4 20 SUM2«SUM2♦A(|) R»(CANS(5)-ANS(1))/ANS(2))*(P/Y> GO TO 30 t 5 25 PsP*1.0 ANS(8)»(SQRT(P*Q)/V.A*R)/SORT(FN> SUMssUM*A(I) C 0 50 CONTINUE AN8(3>«P ANS(4)=1.0 ‘ ANS(4)£0 AN3(3)«0.0 ANS(7)xR QsFN-P 69 RETURN IFCP) 35.35.40 ENO 1. Две дихотомизированные переменные суммируются и обра- зуют таблицу 2X2 (рис. 6). 2. Вычисляется коэффициент фи по формуле ф==_ АР~ВС У (А + В)(С + D)(A + С)(В + D) ’ 3. Вычисляется %2 как функция коэффициента фи X2 = NO2, где N — число наблюдений. (1) (2) 165
Переменная 1 Верхняя Нижняя Переменная 2 В рхняя А В Нижняя С D А, В, С и D образованы частотами Рис. 6. Таблица частот %2 с одной степенью свободы может быть проверено на требу- емый уровень значимости. Если х2 значимо, то и полученный ко- эффициент фи также значим. 4. Вычисление максимального коэффициента фи, достижимого в данной задаче, по формуле Фтах = )/ где Pi — наибольшая маргинальная пропорция в таблице смеж- ности 2X2, а рз — соответствующая маргинальная пропорция в другой переменной. Для справок см. [30], [33]. ПОДПРОГРАММА PHI Назначение Вычисление коэффициента корреляции фи между двумя дихотомизирован- ными переменными. Обращение CALL PHI (N, U, V, HU, HV, P, CH, XP, IE) Описание параметров N — число наблюдений. U — вводимый вектор длиною N, содержащий первую дихотомизи- рованную переменную. V — вводимый вектор длиною N, содержащий вторую дихотомизи- рованную переменную. HU — вводимый числовой код, который указывает верхний класс первой переменной. Любое наблюдение, которое больше либо равно HU, относится к верхнему классу. HV — вводимый числовой код для вектора V, аналогичный HU. Р — вычисляемый коэффициент фи. СН — хи-квадрат, вычисляемое как функция коэффициента фи (число степеней свободы для хи-квадрат равно единице). ХР — вычисляемое максимальное значение коэффициента фи, которое только может быть достигнуто в задаче. IE — если IE не равен нулю, то некоторые ячейки в таблице 2X2 равны нулю. В этом случае Р, СН и ХР получают значение 10**75. Примечания Переменные U и V должны быть числовыми. Коэффициент фи — это част- ный случай пирсоновского корреляционного момента произведения, когда пере- менные имеют только два значения. 166
Требуемые функции и подпрограммы Нет. Метод См. [32]. SUBROUTINE PHl(N,U.V,HU.HV,P.CH,XP,If) DIMENSION U(1).V(1) 10 15 20 25 50 55 40 41 42 43 1 !E=0 АзО.О BsO.O C«0.0 0*0.0 00 40 I«1,N IFCU(I)-HU) 10.25.25 IF(Vd)-HV) 15.20.20 0*0*1.0 GO TO 40 B=B*1.0 GO TO 40 IF(V(I)-HV) 30.35.35 C*C*1.0 60 TO 40 a=A*1.0 CONTINUE IF(A) 100.100.41 IF(B) 100.100.42 IFCC) 100.100.43 IFCO) 100.100.44 (Продолжение) C 4 *1«(A*C)/T <>2a(B*0)/T P3«(A*B)/T P4«(O0)/T IFCP1-P2) 75.45.45 45 IFCP3-P4) 65.50.50 50 IFCP1-P3) 60.55.55 55 XPssqrtC(P3/P4)*(P2/P1)> CO TO 95 60 KPsSQRT(CPI/P2)*(P4/P3)» GO TO 95 65 IFCP1-P4) 70,55.55 70 KPsSQRTC(P2/P1)*CP3/P4)> GO TO 95 75 IF(P3-P4) 90.80,80 80 IFCP2-P3) 60,85.85 85 XPsSORT((P4/P3)*(P1/P2)> GO TO 95 90 IFCP2-P4) 70.85.85 95 RETURN • Ю0 IE«1 2 P=1.E75 44 P®(A*D-B*C)/SQRT((A*B)*(C*D)*(A*C)*(e*D)) CH=1.E75 5 xps1.E75 TsN GO to 95 CK=T*P*| (ND Перевод комментариев в тексте 1. Образование таблицы 2X2. 2. Вычисление коэффициента Ф. 3. Вычисление хи-квадрат. 4. Вычисление максимального коэффициента Ф.
Подпрограмма POINT. Эта подпрограмма вычисляет точечный двухсерийный коэффи- циент корреляции между двумя переменными, одна из которых разделена на две части (дихотомизирована), а другая непрерывна. Шаги вычисления следующие: 1. Вычисление среднего непрерывно измеряемой переменной А где N — число измерений в выборке. 2. Вычисление стандартного отклонения непрерывно измеряемой переменной А (2) 3. Получение следующей информации о дихотомизированной переменной В: Np — число событий в верхней группе; N7 — число событий в нижней группе. 4. Получение Ар — среднего значений А, которые соответствуют значениям В, находящимся в верхней группе. 5. Вычисление точечной двухсерийной корреляции гРь: _ Ар —А , /Тр грь~ s |/ n/ (3) 6. Вычисление отношения служащего для проверки гипотезы о равенстве корреляции нулю, . '="'•/ (4) 7. Число степеней свободы для отношения t получается по фор- муле d./.=N-2. (5) Для справок см. [30], [31]. ПОДПРОГРАММА POINT Назначение Вычисление точечного двухсерийного коэффициента корреляции между двумя переменными, когда одна из переменных разделена на две части, а дру- гая — непрерывная. Это специальный случай пирсоновского коэффициента корре- ляционного момента произведения. 168
Обращение CALL POINT (N, A, B, HI, ANS, IER) Описание параметров N — число наблюдений. A — вводимый вектор длиной N, содержащий непрерывную перемен- ную. В — вводимый вектор длиной N, содержащий дихотомизированную переменную. HI—вводимый числовой код, отделяющий верхний класс. Любое зна- чение разделенной на две части переменной, которое не меньше HI, относится к верхнему классу. ANS — выводимый вектор длиной 9, содержащий следующие резуль- таты: ANS (1) —среднее переменной А, ANS (2) — стандартное отклонение переменной А; ANS (3) — число наблюдений в верхнем классе перемен- ной В; ANS (4) — число наблюдений в нижнем классе перемен- ной В; ANS (5) — среднее переменной А для тех наблюдений, ко- торым отвечают наблюдения в верхнем классе переменной В; ANS (6) — среднее переменной А для тех наблюдений, ко- торым отвечают наблюдения в нижнем классе переменной В; ANS (7) — точечный двухсерийный коэффициент корреляции; ANS (8)—Т-тест значимости разности между средними пе- ременной А для высшего и низшего классов соот- ветственно; ANS (9) — число степеней свободы Т-теста. IER — 1 —если все элементы В не меньше HI: —1 — если все элементы В меньше HI; О — во всех других случаях. Если IER не равен нулю, то ANS(I) 1 — 5, ...» 9 получают значение 10**75. Примечания Символы, применяемые для идентификации значений двух классов пере- менной В/ должны быть числовыми. Нельзя пользоваться буквами или спе- циальными знаками. Т-тест (ANS(8)) служит для проверки значимости отличия точечного двух- серийного коэффициента от нуля. Требуемые функции и подпрограммы Нет. Метод См. [32]. Перевод комментариев в тексте 1. Вычисление среднего и стандартного отклонения переменной А. 2. Нахождение числа событий в нижнем и верхнем классах. 3. Вычисление точечной двухсерийной корреляции. 4. Вычисление отношения Т, служащего для проверки гипотезы о равен- стве корреляции нулю. 5. Вычисление числа степеней свободы. 169
SUBROUTINE POINT (N • A•8»HI•ANS,I ER) DIMENSION А(1 ) , В М ) , ANS (1 ). С 1 IER8Q SUMaO.O SMUZaO.O DO Ю !»1'N SUMBSUM+A(I) ( Продолжение) ANS(3)»P ANS(4)*0 IFCP) 35,35.40 35 IER=-1 GO ГО 50 10 $UM2«SUM2*A(I)*AС I) FN=N AN$(1)°SUM/FN ANSC2)»(SUM2-ANS(1)*SUM)/(FN-1 .0) ANS<2)=SQRT(ANS) C 2 P=0.0 SUMsO.O SUM2=0.0 DO 30 [s1.N IF(B(I)-HD 20.25,25 20 SUM2«SUM2*A(I) GO TO 30 40 ANS(5)»SUM/P IF(Q) 45.45.60 45 IER«1 50 DO 55 1=5.9 55 ANS(I)=1.E75 GO TO 65 60 ANS(6)=SUM?/Q C 3 R«(CANS(5)-ANS(1))/ANS(2))*SORT(P;Qj ANS(7)«R C 4 T=R*SQRT((FN-2.0)/(1,0-R*R)) ANSC8)«T 25 PsPM-0 SUM«SUM+A(I> 30 CONTINUE ' QsFN-P C 5 ANS(9)«FN-2 65 RETURN ENO Подпрограмма TETRA Эта подпрограмма вычисляет тетрахорический коэффициент корреляции между двумя переменными, когда они подразделены на два класса. Шаги вычисления следующие: 1. Обе дихотомизированные переменные суммируются в таб- лице 2 Х2 (рис. 7). А, В, С и D образуют частоты. Если любая из частот равна нулю, то тетрахорический коэффициент корреляции не вычис- ляется. 1 2. Получение отношений маргинальных сумм (т. е. сумм, обра- зованных по краям таблицы): Л^И-f-Q/N; (1) 17Q
Верхняя Переменная 2 Нижняя Переменная 1 Верхняя Нижняя А В С D Рис. 7. Дихотомизированные переменные ^ = (B + Z))/N; (2) p2 = (A + B)/N; (3) <j2 = (C+D)!N, (4) где N — число наблюдений. 3. Получение z/i — ординаты нормального распределения в точке деления между отношениями pi и qc у2 — то же самое, что и z/i, но с заменой на р2 и q2\ Zi — стандартное отклонение нормального распределения, соот- ветствующего //г, z2 — стандартное отклонение нормального распределения, соот- ветствующего у2. 4. Затем по следующей формуле вычисляется тетрахорический коэффициент корреляции: AD — ВС ,1 2,1/2 / 2 3 , --у1У2ДГ2-— rt + Z^rt + ~ “ 1 ) — 1 ) + 4----Z1 (^1 — 3} Z2 (z2 — з) /> + (zi — 6Z1 + 3) (z2 — 6Z2 4“ З) Г/ 4* 4“ 720 (^1 — 1OZ1 + 15) Z2 (z$ — 1 Ozl + 15) rt + + “5Й0" - 15*1 + 454 - 15) (z% - 154 + 454 - 15) r?. (5) Примечание. rt находится как решение вышеприведенного уравнения подпрограммой POLRT при помощи аппроксимации по методу Ньютона—Рафсона. 5. Для проверки равенства rt=Q.O вычисляется стандартная ошибка по формуле r‘V У1У2Г^’ () 6. Для выбора действительного корня в [—1, 1], если rt = = а-{-Ы и |6|^. 5(10~6) |а|, rt рассматривается как действитель- ный корень. Для справок см. [30], [35]. 171
ПОДПРОГРАММА TETRA Назначение Вычисление тетрахорического коэффициента корреляции между двумя пе- ременными, когда данные обеих переменных подразделены на два класса. Обращение CALL TETRA (N, U, V, HU, HV, R, RS, IE) Описание параметров N — число наблюдений. U — вводимый вектор длиной N, содержащий первую переменную, подразделенную на два класса. V — вводимый вектор длиной N, содержащий вторую переменную, подразделенную на два класса. HU — вводимый числовой код, отделяющий верхний класс первой пе- ременной. Если какое-либо значение переменной U больше либо равно HU, оно- относится к верхнему классу, в противном случае — к ниж- нему классу. HV — то же самое, за исключением того, что HV относится ко второй переменной. R — вычисленная тетрахорическая корреляция. RS — стандартная ошибка вычисленной тетрахорической корреляции. IE — код ошибки: О — нет ошибок; 1 — невозможность вычисления тетрахорической кор- реляции вследствие того, что хотя бы в одной из ячеек таблицы событий 2X2 исходных дан- ных находится нулевая частота. В этом случае R и RS получают значение 10**75. 2 — уравнение либо дает кратные корни, либо вообще не дает корней R в интервале (—1,1) включи- тельно. R и RS получают значение 10**75. 3 — невозможность вычисления удовлетворительных значений тетрахорической корреляции при ме- тоде аппроксимации корней уравнения Ньютона— Рафсона. R и RS получают значение 10**75. См. подпрограмму POLRT, индикатор ошибок. 4—коэффициент при старшем члене полинома равен нулю. См. подпрограмму POLRT, индикатор оши- бок. Примечания Значения переменных U и V должны быть числовыми; буквенными и спе- циальными знаками пользоваться нельзя. Для получения достоверною резуль- тата при вычислении тетрахорической корреляции рекомендуется, чтобы N было не меньше 200. Требуемые функции и подпрограммы NDTRI POLRT — подпрограмма вычисления корней полинома занимает немного места в памяти. Метод См. [30]. 172
SUBROUTINE TETRA(N,U,V9HU,HV,R,RS,IE) DIMENSION XCOF(8)•COF(8),ROOTR(7),ROOTI(7X DIMENSION U(1),V(1) DOUBLE PREC1SI0NX31,X32 .X312.X322 C 1 A=0.0 B=0.0 C=0.0 0 = 0.0 DO 40 1=1,N IF(UCI)-HU) 10,25,25 10 IFCV(I)-HV) IS,20,20 15 DsD*1.0 GO TO 40 20 B«B*1.0 GO TO 40 25 IF(V(I)-KV) 30,35,35 30 C=C+1.0 GO TO 40 35 A=A*1.0 40 CONTINUE C 2 IE«O IF(A) 60,60,45 45 IFCB) 60,60,50 50 IF(C) 60,60,55 55 IF(D) 60,60,70 60 IE=1 GO TO 86 C 5 70 Fn«n P1=(A*C)/?N 01sC8*D)/FN P2=(A+8)/FN Q2=(C*D)/FN
/ I С 4 I CALL NDTR! (01,X1,Y1,ER) CALL NDTRI (Q 2 , X 2. Y 2 » E R > t 5 IF(X1) 76,72,76 72 IFCX2) 76,74,76 74 R«0.0 GO TO 90 76 XC0F(1)-((A*D-8*C)/(Y1♦Y2*FN*FN)) XC0F(2)«1.0 XCOF(3)«Х1*X2/2.0 XCOF(4)»(X1*X1-1.0)*(X2*X2-1.0)/6.0 X31=OBLE<X1) X32=0BLE(X2) X312sX31**2 X322cx32**2 XCOFC5)«SNGLCX31*CX312-3.000)*X32*(X322-3.ODO)/24.ODO) XC0F(6)«SNGL((X312*(X312<6.000 H3.0DO) *CX322*(X322-6.ООО)*3.000) 1 /120.000) XC0FC7)»SNGL(X31*(X312*(X312-10.000)*15.000)*X32*(X322*(X322- 1 10.0D0)*15.000)7720.ODO) XCOF(8)=SNGL((((X312-15.000)*X312*45.ODO)*X312-15.000)*(((X322- 1 15.ODO)♦X322*45.ООО)*X322-15.000)/5040.000) CALL POLRT (XC0F.C0F.7.RQ0TR.R00TI,IER) JsO IF(IER) 78.78,84 78 00 82 I«1.7 IF(ABS(ROOTI(I))-•5*ABS(ROOTR(I))♦1•OE-6) 79,79.82 79 RsROOTRCI) !F(ABS(R)-1.0) 81.81,80 80 Rs1.E7S GO TO 82 81 J8J*1 82 CONTINUE IFCJ-1) 83,88.83 83 TE=2
CO TO 86 С 6 84 lEorgR 36 fV«1.0E7S RS = R 00 TO Ю0 88 rf(R^i.CE75> $0,83.83 C 7 90 RS=SQRT ( PT*₽2*G1 *02) i (Y1*Y2*SQRT(F.N)^ . 100 RETURN ENO Перевод комментариев в тексте I. Образование таблицы событий 2X2. 2. Проверка, имеется ли в таблице событий ячейка, содержащая нуль. Если имеется, то возвращение в обратившуюся программу с R = 0.0 и IE = 1. 3. Вычисление Pl, QI, Р2 и Q2. 4. Отыскание стандартного нормального отклонения Q1 и Q2 и ординат этих точек. 5. Вычисление тетрахорического коэффициента корреляции. 6. Невозможность вычисления R. 7. Стандартная ошибка R = 0.0. Подпрограмма SRATE По этой подпрограмме вычисляют коэффициент дожития людей, проживших п периодов после диагноза или лечения. Коэффициент дожития для каждого из К периодов вычисляется последователь- но, причем К указывается и К п. Пример входных величин при обращении в подпрограмму дан в табл. 2. Таблица 2 Пример входных данных в подпрограмму SRATE Периоды после диагноза Живых к на- чалу периода Умерших в течение периода Потерянных в течение периода Живых, отказав- шихся от изучения в течение периода (0 (U) (D/) (ио (W/) 1 130 40 4 10 2 76 6 2 8 3 60 2 1 5 4 52 1 0 4 5 47 0 0 47 Входная информация включает: периоды после диагноза. Этот столбец показывает, сколько пе- риодов прошло после диагноза или лечения. Период может быть любым интервалом времени; 175
I живых к началу периода. Первый пункт в этом столбце обозна- чает начальное число субъектов (Li = 130). Каждый последующий пункт этого столбца получается путем вычитания из предыдущего числа субъектов суммы тех, кто не охватывается более програм- мой: L2 = + t/j + WJ = 130 - (40 + 4 + Ю) = 76; умерших в течение периода. Этот столбец показывает, сколько субъектов умерло в течение периода; потерянных в течение периода. Этот столбец показывает число субъектов, жизненный статус которых стал неизвестным в течение периода; живых, отказавшихся от изучения в течение периода. Этот столбец показывает число живых субъектов, отказавшихся от изу- чения в течение периода. Для значений i==l, 2, ..., К подпрограмма вычисляет следующую информацию: 1. Действительное число подвергающихся риску умереть в те- чение периода е,=^-(ц+^)/2. (1) 2. Частоту смерти в течение периода Q, = >. (2) 3. Частоту выживания в течение периода = l —Qf. (3) 4. Коэффициент дожития f-го периода П Р, (4) /=1 5. Стандартную ошибку коэффициента дожития Для справок см. [36]. ПОДПРОГРАММА SRATE Назначение Вычисление отношения доживших субъектов, коэффициента дожития и стан- дартной ошибки соответственно для приведенных периодов времени. Коэффи- циент дожития вычисляется для каждого из К периодов, где К — константа, ко- торая должна быть задана и должна быть меньше либо равна N (N — общее число периодов). Обращение CALL SRATE (N, К, X, IE) 176
Описание параметров N — общее число периодов после лечения или диагноза. К — указанный период, до которого вычисляется коэффициент дожития. X — матрица вводимых и выводимых данных (NX9), содержащая следующую информацию: Для ввода В N строках каждого из столбцов помещается: столбец 1 — число субъектов, доживших к началу периода; столбец 2 — число субъектов, умерших в течение периода; столбец 3 — число субъектов, выбывших в течение периода; столбец 4 — число субъектов, отказавшихся от изучения в тече- ние периода, но живых. Для вывода В первые К строк каждого из столбцов помещается: столбец 5 — число субъектов, подвергающихся риску смерти; столбец 6 — частота смерти в течение периода; столбец 7 — частота дожития в течение периода; столбец 8 — коэффициент дожития; столбец 9 — стандартная ошибка коэффициента дожития. IE — 1—если К находится в замкнутом интервале (О, N); 2 — если число субъектов, живших в начале периода I, меньше суммы умерших, утерянных и отказавшихся от изучения в те- чение периода I (1=1, ... N); 3 — если число субъектов, которые умерли, утеряны или отказа- лись от изучения в течение периода I, не равно числу живых в начале периода I за вычетом числа живых к началу периода 1 + 1 (1 = 1........N—1). Примечания Если все субъекты в данной группе диагностировались или лечились в одно и то же время, то константа К может быть равна N. Если субъекты в данной группе выпали из наблюдения в различное время, то К не может быть больше N— 1. Требуемые функции и подпрограммы Нет. Метод См. [36]. Перевод комментариев в тексте 1. Подготовка и. проверка ошибок. 2. Вычисление действительного числа субъектов, подвергающихся риску смерти. 3. Вычисление частот смерти. 4. Вычисление частот дожития. 5. Вычисление коэффициента дожития. 6. Вычисление стандартной ошибки коэффициента дожития.
SUBROUTINE SRATE (N,K,X.!E3 DIMENSION Х(П C 1 IE = O NP4=4*N+1 NP9=NP4+NP4+N-2 DO 1 !«NP4,NP9 1 XCDsO.O IF CK) 2,2,3 2 !E»1 60 TO 45 3 IFCK-N) 4.4,2 4 DO 9 !»1.М NP4M+N NP9sNP4*N NP1=NP9*N IF(INT(X<I)-X(NP4)-X(NP9)-X(NP1)*.O1)) 5,6,6 S IE=2 GO TO 45 6 IF(I-N) 7,9,9 7 IF (INT(X<1*1)-X(!)*X(NP4)+X(NP9)*X(NP1)*.O1)) 8.9,8 8 IE«3 GO TO 45 9 CONTINUE 15 L1»O L2=L1*N 13=L2*N L4»L3*N 15«L4*N 16=L5*N l7»L6*N L8»L7*N L9=l8*N lD = L2 LE = L5 LQ«16
биМ^Л DO 40 l«1*X C г 41 «1ЛИ 13НЗП 14*1ЛМ 15*15+1 1<L5)*X(L1 )-(Х(13)ШИ))/2.О С 3 Ь2П2*1 16»Г6*1 x(U)*x(i2)/xJi5) с и 17П7И Х( к?)«1.0*ХЦ63 С 5 L8=L8+1 IF (1-1) 20f20.2S 20 x(l8)=X(L7J GO TO 30 25 X(L8)=X(L8-1)*X(I?) C 6 30 L9»L9+1 SUM=SUM*X(l6)7(X(l3)*X(L2)> 40 X ( L9)=X (18)* SORT (SUM,) 45 return
ПРИЛОЖЕНИЕ ПРИМЕРЫ НАПИСАНИЯ ПРОГРАММ ОТБОР ДАННЫХ ОПИСАНИЕ ЗАДАЧИ Совокупность наблюдений считывается совместно с информа- цией о предложениях, которые должны быть удовлетворены, и с пределами на отобранную переменную. По этим входным данным получают подпоследовательность и затем строится гистограмма ча- стот в заданных интервалах классификации для выбранной пере- менной. Для выбранной переменной вычисляется сумма, среднее, стандартное отклонение, минимум и максимум. Эта процедура по- вторяется до тех пор, пока не будет обработана вся совокупность вводимых данных. ПРОГРАММА Описание Программа отбора данных состоит из основной программы DASCR и шести подпрограмм SUBST, ТАВ1, LOC, BOOL, HIST и MATIN. Три из них (SUBST, ТАВ1, LOC) взяты из этого же сборника научных подпрограмм. MATIN — это пример программы ввода. HIST — программа для построения гистограммы. Описание подпрограммы BOOL см. в подпрограмме SUBST. Объем Максимальный размер матрицы наблюдений установлен в 1000 элементов, максимальное число наблюдений — 200, число ус- ловий— 21. Эти значения могут быть увеличены (см. модифика- цию программы). ВВОД Управляющие карты Перед каждой матрицей наблюдений должна находиться карта параметров, подготовленная в следующем формате. Для данного Столбцы Содержание примера 1—2 Пробел 3—6 Код идентификации (только числовой) не более четырех цифр 0001 180
7—10 Число наблюдений 0100 11 —14 Число переменных 0004 За каждой матрицей наблюдений должна следовать карта с пробитой девяткой в столбце 1. Перед матрицей условий и гра- ничными данными должна находиться карта, содержащая число условий и выбранную для анализа переменную. Для данного Столбец Содержание примера 1—2 Число условий 02 3—4 Выбранная переменная 03 Пустая карта после последней совокупности вводимых данных прекращает дальнейшее решение. Карты данных 1. Для матрицы наблюдений карты наблюдений имеют семь полей по десять столбцов в каждом. Десятичная точка может за- нимать в поле любое место. Если десятичная точка не показана, то подразумевается, что она стоит справа после последней цифры. Пе- ред числом в каждом поле могут стоять пробелы. Все значения для одного наблюдения набиваются последовательно и могут про- должаться на нескольких картах. Однако новое наблюдение должно начинаться с первого поля следующей карты. 2. Для матрицы условий (см. описание в подпрограмме SUBST) каждое поле в десять столбцов содержит условие, которое должно быть удовлетворено. Первые два столбца содержат уста- новленный справа номер переменной, третий столбец—код отно- шения и последние семь столбцов каждого поля — число с плава- ющей точкой. Это число может быть произвольно размещено на поле в семь столбцов, но обязательно должно содержать десятич- ную точку. На каждой карте может находиться не более семи ус- ловий и суммарно на трех картах — до 21 условия. 3. Для вектора UBO (см. описание подпрограммы ТАВ1) пер- форируются три поля по десять столбцов в каждом, содержа- щие числа с плавающей точкой с набиваемой десятичной точ- кой. Организация колоды перфокарт Организация колоды перфокарт показана на рис. 8. Пример Распечатка вводимых перфокарт для примера показана на рис. 9. В карте 002 находятся параметры для матрицы наблюде- ний. В них указано, что в матрице номер 1 находится 100 наблю- дений четырех переменных. В карте 003 находится первое наблю- дение, в карте 102 — последнее. Каждое наблюдение включает че- тыре характеристики (переменных) индивидуума. Переменные в указанном порядке означают: 1—возраст в годах, 2 — высоту в дюймах, 3 — вес в фунтах и 4 — образование в годах. Карта 103 сигнализирует об окончании матрицы наблюдений. В карте 104 указано, что имеются два условия, которые должны 181
быть удовлетворены, что для анализа выбрана переменная 3 (вес). На карте 105 помещена матрица условий. Первое условие уста- навливает, что при выборе первая переменная (возраст) должна быть меньше либо равна 65. Таким образом, наблюдения для ин- дивидуумов старше 65 лет будут отброшены. Второе условие: пе- а - ма три ио наблюдений О матрица у оладий Окончание решения Последняя задача SUBST 1ASCR 'карго пара- _и/ метрод для А / (данное U ВО I /карты /&7//-Т (J ]ныл для С . /карта пара-\у / \метроб для С / /карта, с отпер\_\ 7 Л \дюр 9 6 стола 1 /карты дан- \MbfK для А /карта. пара\ \метроб для А LOC нют ТАВ1 Первая задача / Подпрограммы и основная * программа (включая нарты управления системой) Подпрограммы Рис. 8. Колода перфокарт (отбор данных) ременная 4 (образование) должна быть больше восьми лет и со- ответственно наблюдения для индивидуумов с образованием мень- ше восьми лет будут отброшены. Карта 106 содержит информацию о границах и числе интервалов для выбранной переменной. В ней указано, что нижняя граница равна 120, а верхняя —210. Всего имеется 20 интервалов (включая один для значений ниже нижней 182
Data (Продолжение) 000101000004 46. 64. 173. 12. 46. 63. 158. 16. 24. 72. 170. 8. 37. 64. 139. 18. 32. 71. 154. 16. 34. 68. 156. 10. 41. 68. 129. 10. 64. 67. 153. 12. 50. 65. 192. 9 57. 67. 141. 13. 63. 75. 203. 12. 32. 68. 157. 17. 29. 70. 122. 14. 29. 70. 183. 15. 28. 64. 136. 13. 53. 72. 164. 18. 52. 77. 147. 11. 47. 72. 156. 18. 36. 67. 153. 18. 56. 73. 160. 16. 31. 68. 165. 9. 61. 74. 169. 12. 72. 70. 178. 10. 21. 68. 161. 10. 53. 71. 205. 14. 25. 76. 178. И. 21. 65. 219. 12. 23. 72. 157. 16. 49. 63. 150. 6. 29. 68. 186. 16. 28. 62. 160. 16. 39. 70. 159. 14. 53. 72. 161. 13. 42. 70. 154. 10. 47. 73. — 142 15 56. 62. 159. 12. 37. 67. 193. 18. 63. 70. 177. 12. 64. 68. 156. 14. 51. 71. 161. 9. 65. 60. 114. 10. 41. 66. 158. 10. 62. 64. 153. 12. 33. 69. 158. 16. 19. 68. 225. 9. 37. 68. ' 157. 16. 46. 67. 158. 11. 25. 70. 163. 15. 33. 72. 121. 4. 63. 68. 159. 12. 37. 55. 132. 13. 53. 71. 202. 6. 41. 76. 148. 16. 51. 72. 167. 14. 52. 71. 123. 16 47. 73. 164. 14. 29. 68. 128. 14. 39. 75. 151. 12. 32. 65. 155. 17. 28. 68. 166. 10. 24. 72. 172. 16. 64. 59. 156. 16 56. 73. 163. 10. 55. 67. 144. 16 63. 65. 158. 11. 51. 66. 177. 10. 67. 69. 146. 2. 46. 65. 157. 12 58. 66. 171. 9. 72. 66. 125. 10. 41. 65. 153. 12. 66. 65. 131. 12. 49. 66. 165. 14. 28. 74. 149. 18. 52. 72. 172. 16 27. 71. 168. 11. 23. 78. 183. 15. 23. 72. 158. 12. 56. 71. 195. 16 23. 72. 163. 12. 52. 68. 118. 7. 60. 68. 157. 9. 40. 66. 165. 14 30. 66. 142. 10. 39. 68. 215. 16. 39. 67. 162. 16. 23. 71. 154. 12 46. 74. 154. 16. 56. 65. 149. 10. 50. 68. 158. 10. 25. 65. 162. 16 61. 66. 161. 14. 37. 68. 152. 16. 36. 64. 157. 15. 46. 70. 159. 15. 32. 71. 156. 16. 41. 69. 137. 14. 9 62. 71. 163. 12. 0203 29. 72. 191. 4 12. 65. 46. 8. 19. 68 168. 10 120 20. 210. Рис. 9. Карты ввода примера задачи (отбор данных) 183
границы и один для значений больших либо равных верхней гра- нице). Карта 107 пустая — для обозначения конца решения. ВЫВОД Описание Вывод состоит из вектора подпоследовательности, показыва- ющего, какие наблюдения отброшены (нуль) и приняты (не нуль), суммарные статистики для выбранной переменной и гистограмму частот по интервалам для этой переменной. Пример Распечатка вывода для этого примера показана на рис. 10*. МОДИФИКАЦИЯ ПРОГРАММЫ Максимальный размер решаемой задачи может быть увеличен или уменьшен путем изменения оператора DIMENSION в DASCR. Подпрограмма BOOL может быть заменена в том случае, если пользователь захочет применить другое булевское выражение (см. описание в подпрограмме SUBST). В программе примера дано булевское выражение, удовлетворяющее обоим условиям. Г=/?(1)*/?(2) ИНСТРУКЦИИ ПО РАБОТЕ Программа примера для отбора данных составлена как стан- дартная программа на Фортране. Специальных технических инст- рукций она не требует. Устройство для данных 5 применено для ввода, логическое устройство 6 — для вывода. Устройство для дан- ных 13 используется для хранения промежуточных данных**. СООБЩЕНИЯ ОБ ОШИБКАХ В случае следующих ошибок появятся сообщения: 1. Зарезервированное поле памяти слишком мало для матрицы DIMENSIONED AREA ТОО SMALL FOR INPUT MATRIX. GO ON TO NEXT CASE. 2. Число карт данных не соответствует тому, что требуется картой параметров,— INCORRECT NUMBER OF DATA CARDS FOR MATRIX. EXECUTION TERMINATED. Ошибка 1 позволяет вычислительной машине продолжать счет. Ошибка 2 прекращает выполнение программы и требует другого прогона для нормального решения. * В данной и последующих распечатках вывода результатов решения тексты даны на русском языке. В машинных распечатках будут выданы тексты на анг- лийском языке. При желании программист может заменить в соответствующих форматах английские тексты на русские — Прим, перев. ** В распечатке для ввода данных применено устройство 97, а для вывода — устройство 99. — Прим 184
ЗАДАЧА ОТБОРА ДАННЫХ 1 ВЕКТОР ПОДПОСЛЕ- ДОВАТЕЛЬНОСТИ 1 1. 33 1. 67 1. 2 0.0 34 о. с 68 1. 3 1. 35 1. 69 1. 4 1. 36 1. 70 1. 5 1. 37 1. 71 1. 6 1. 38 1. 72 1. 7 1. 39 1. 73 1. 8 1. 40 1. 74 1. 9 1. 41 о.о 75 1. 10 1. 42 1. 76 1. 11 1. 43 1. 77 1. 12 0.0 44 1. 78 0.0 13 1. 45 1. 79 1. 14 1. 46 1. 80 1. 15 0.0 47 1. 81 1. 16 1. 18 1. 82 1. 17 1. 49 1. 83 1. 18 1. 50 1. 84 1. 19 1. 51 0.0 85 1. 20 1. 52 1. 86 1. 21 1. 53 1. 87 0.0 22 1. 54 1. 88 0.0 23 1. 55 1. 89 1. 24 1. 56 1. 90 1. 25 ол 57 1. 91 1. 26 1 58 1. 92 1. 1« 59 1. 93 1. 27 1. 60 1. 94 1. 28 1. 61 1. 95 1. 29 1. 62 - 1. 96 1. on 1 63 1. 97 1. Ои 1. 64 1. 98 1. 31 1. 65 1. 99 1. 32 1. 66 1. 100 1. СУММАРНЫЕ СТАТИСТИКИ ДЛЯ 3 ПЕРЕМЕННОЙ СУММА - 14492.000 СРЕДНЕЕ = 161.022 СТАНДАРТНОЕ ОТКЛОНЕНИЕ = 19.329 МИНИМУМ = 114.000 МАКСИМУМ « 225.000 ГИСТОГРАММА 1 ЧАСТОТЫ 1221344 10 23 14 843212111 3 23 22 21 20 19 18 17 16 15 14 13 185
ИНТЕРВАЛ КЛАССИФИКА- ЦИИ 1 2 3 4 5 б 7 8 9 10 11 12 13 14 15 16 17 18 19 20 КОНЕЦ Рис. 10. Распечатка вывода (отбор данных) ТРЕБУЕМОЕ ВРЕМЯ Время решения этого примера на системе IBM/360, модель 30, пользующейся вводом с перфокарт IBM 2540 и широкой печатью IBM 1403, модель 3, равно 42 сек. ПРИМЕР ОСНОВНОЙ ПРОГРАММЫ ДЛЯ ОТБОРА ДАННЫХ DASCR Назначение Выполнение вычислений по отбору данных над совокупностью наблюдений. Требуемые функции и подпрограммы SUBST ТАВ1 LOC BOOL HIST MATIN Метод Образование подпоследовательности наблюдений, удовлетворяющих опреде- ленным условиям в отношении переменных. Для этой подпоследовательности по- лучаются частоты выбранной переменной в заданных интервалах классифика- ции. Они вычерчиваются в виде гистограммы. Вычисляются сумма, среднее, стандартное отклонение, минимум и максимум. МНОЖЕСТВЕННАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ Описание задачи Множественная линейная регрессия определяется для некото- рого множества независимых переменных и одной зависимой пе- ременной. Выбор различных совокупностей независимых перемен- ных и зависимой переменной может быть произведен столько раз, сколько потребуется. 186
SAMPLE main program for data screenihg - DASCR DIMENSION A (1 000) , С C.63),UBO(3) • S (200) , R (21), FREQ (20) * 1PCT(2O>,STAJSC5) EXTERNAL .BOOL 10 FORMATC1H1,22H0ATA SCREENING PROBLEM,13) 11 FORMAT(1 НО,44H0IMENSIONED AREA TOO SMALL FOR INPUT MATRIX,14) 12 FORMATC1H0.20HEXECUTION TERMINATED) 13 FORMAT(1HO,42H'INCORRECT NUMBER OF DATA CAROS FOR MATRIX,14) 14 FORMAT(1HO,18HGO on TO NEXT CASE) IS FORMAT(1 Ho,11нEN0 OF CASE) 16 FORMAT(?(F2.0.F1.0,F7.0)) 17 FORMAT(3F10.0) 18. F0RMATC1H0.13HSUBSET VECTOR.///) 19 FORMAT(1H,13,F5.0) 20 FORMATC1H1,32HSUMMARY STATISTICS FOR VARIABLE,13) 21 FORMAT(1HO,7HTOTAL F10.3.2X.9HAVERAGF =,f10.3,2X,20HSTANDARD DEV UATI0N e, F1 013,2 X, 9HMINI MUM □, F1 0.3.2X , 9HMAX I MUM =,Fl0.3) 22 F0RMATC2I2) KC=O 24 KC«KC*1 CALL MAT IN(ICOD*A.1000,N0,NV,MS,IER) IFCNO) 25,50,25 25 IFGER-1) 40,30*35 30 WR1TE(99*11) I COO WR1TE(O9,14) GO TO 24 35 URITE(99,13) WRITE (99,12)- GO TO SO 40 reao(97,22T nc,novar JC»NC*3 READ(97,16)(С(I),I»1,JC) READ(97,17)(UBOCI).T«1,3) CALL SUBST(A,C,R,BOOL*S,NO,NV,NC) VRITE(99»10) КС URITE(99,18)
VJRIТЕ (9Ф, 19) C|.SW,!«1,N0> CALL TAB1(A,$♦NOVAR,UBQ.FREQ,PCT,STATS,NO,NV) URITEC99.20) ND VAR WRTTE(99> 21)($TAT$(l),l«t<5> JZ=UBO(2F CALL HI8KKC, FRfQUZJ WRITEС99»1S) GO TO 2Ф 50 RETURN ENO В данном примере на множественную линейную регрессию при- ведено 30 наблюдений шести переменных, как показано в табл. 1. Первые пять переменных — независимые и последняя перемен- ная — зависимая. В первом анализе для предсказания зависимой переменной пользуются всеми пятью независимыми переменными, а во вто- ром — только второй, третьей и пятой переменной. Таблица 1 Пример данных для множественной линейной регрессии Наблюде- ния xt Л'а Переменные х5 Наблюде- ния Переменные х& *3 х4 Ха Х3 Xi х5 1 29 289 216 85 14 1 16 45 310 262 94 20 2 2 30 391 244 92 16 2 17 45 151 339 96 35 3 3 30 424 246 90 18 2 18 45 370 оэ7 88 15 4 4 30 313 239 91 10 0 19 45 379 193 147 64 4 5 35 243 275 95 30 2 20 45 463 206 105 31 3 6 35 365 219 95 21 2 21 45 316 245 132 60 4 7 43 395 267 100 39 3 22 45 280 225 108 36 4 8 43 356 274 79 19 2 23 44 395 215 101 27 1 9 44 346 255 126 56 3 24 49 139 220 136 59 0 10 44 156 258 95 28 0 25 49 245 205 113 37 4 11 44 278 249 110 42 4 26 49 373 215 88 25 1 12 44 349 252 88 21 1 27 51 224 215 118 54 3 13 44 141 236 129 56 1 28 51 677 210 116 33 4 14 44 245 236 97 24 1 29 51 424 210 140 59 4 15 45 297 256 111 45 3 30 51 150 210 105 30 0 ПРОГРАММА Описание Программа множественной линейной регрессии состоит из ос- новной программы REGRE, специальной подпрограммы ввода DATA и четырех подпрограмм из сборника научных подпрограмм CORRE, ORDER, MINV и MULTR. 188
Возможности Возможности программы в приводимом примере и требуемые форматы для вводимых данных следующие: 1. До 40 переменных включительно, учитывая как независи- мые, так и зависимую переменную. 2. До 99 999 наблюдений включительно, если наблюдения счи- тываются в вычислительную машину по одному за 1 раз при по- мощи специальной программы ввода DATA. Если все данные по- мещены в оперативную память до вычисления коэффициентов кор- реляции, то ограничения на число наблюдений зависят от размера оперативной памяти, отводимой под данные. 3. В картах вводимых данных используется формат (12 F 6.0). Таким образом, если задача удовлетворяет указанным выше условиям, то программу, приведенную в примере, не требуется мо- дифицировать. Однако, если задано более 40 переменных, то опе- ратор размерности в основной программе примера должен быть соответственно изменен для решения конкретной задачи. При подготовке карт данных в другом формате необходимо мо- дифицировать формат ввода в подпрограмме ввода DATA. Общие правила модификации программы приведены далее. ВВОД Управляющая карта Для каждой задачи требуется одна управляющая карта, кото- рая считывается основной программой REGRE. Эта карта подго- тавливается следующим образом: В данном Столбцы Содержание примере 1— 6 Номер задачи (может быть алфавитно- цифровой) SAMPLE 7—11 Число наблюдений 00030 12—13 Число переменных 06 14—15 Число карт выбора (см. ниже) 02 Набивать нули, предшествующие значащим цифрам, не нужно. Карты данных Так как вводимые данные считываются в вычислительную ма- шину по одному наблюдению за 1 раз, то каждая строка данных в табл. 1 перфорируется на отдельной карте в формате (12 F 6.0). Этот формат подразумевает двенадцать полей по шесть столбцов в каждом на карте. Если в задаче задано более двенадцати переменных, то каждая строка данных может быть продолжена на вторую и третью карты, пока не будут отперфорированы последние данные. Но при этом каждая строка данных должна начинаться с новой карты. Карта отбора Карта отбора служит для указания в анализе множественной линейной регрессии зависимой переменной и совокупности неза- 189
висимых переменных. Любая переменная в совокупности исходных переменных может быть обозначена как зависимая переменная и любое число переменных может бы^ь указано как независимые пе- ременные. Выбор зависимой переменной и совокупности незави- симых переменных может быть сделан неоднократно из одной и той же совокупности исходных переменных, Рис. И. Колода перфокарт (множественная линейная регрессия) , Карта отбора подготавливается следующим образом: Столбцы Содержание В данном примере Выбор 1 Выбор 2 1 —2 Код выбора для таблицы остатков: 01 01 00 — если не требуется составить 01 —если требуется составить 3 — 4 Зависимая переменная, назначенная для регрессии 06 06 5 — 6 Число независимых переменных, вклю- чаемых в регрессию (индексы конкрет- ных переменных указываются ниже) 05 03 190
7 — 8 1-я включаемая независимая переменная 01 02 9—10 2-я включаемая независимая переменная 02 03 И —12 3-я включаемая независимая переменная 03 05 13—14 4-я включаемая независимая переменная 04 15—16 5-я включаемая независимая переменная 05 и т. д. Для карты выбора используется формат (3612). Организация колоды перфокарт Организация колоды перфокарт показана на рис. 11. Пример на Распечатка вводимых карт для рис. 12. данного примера показана ПРИМЕР 000300602 29 289 216 85 14 1 45 310 262 94 20 2 30 391 244 92 16 2 45 151 339 96 35 3 30 424 246 90 18 2 45 370 , 357 88 15 4 30 313 239 91 10 0 45 379 198 147 64 4 35 243 275 95 30 2 45 463 206 105 31 3 35 365 219 95 21 2 45 316 245 132 60 4 43 396 267 100 39 3 45 280 225 108 36 4 43 356 274 79 19 2 44 395 215 101 27 1 44 346 255 126 56 3 49 139 220 136 59 0 44 156 258 95 28 0 49 245 205 113 37 4 44 278 249 110 42 4 49 373 215 88 25 1 44 349 252 88 21 1 51 224 215 118 54 3 44 141 236 129 56 1 51 677 210 116 33 4 44 245 236 97 24 1 51 424 210 140 59 4 45 297 256 111 45 3 51 150 210 105 30 0 0106050102030495 010603020395 Рис. 12. Распечатка ввода (множественная регрессия) вывод Описание Вывод в примере для множественной линейной регрессии вклю- чает: 1. Средние. 2. Стандартные отклонения. 3. Коэффициенты корреляции между независимыми перемен- ными и зависимой переменной. 4. Коэффициенты регрессии. 5. Стандартные ошибки коэффициентов регрессии. 6. Вычисление /-значения. 7. Пересечение. 8. Коэффициенты множественной корреляции. 9. Стандартную ошибку оценки. 10. Анализ дисперсии для множественной регрессии. 11. Таблицу остатков. Пример Распечатка вывода для примера показана на рис. 13. 191
МНОЖЕСТВЕННАЯ РЕГРЕССИЯ..ПРИМЕР ВЫБОР. ....1 СТАН- ДАРТНАЯ НОМЕР СТАН- КОРРЕ- КОЭФФИ- ОШИБКА ВЫЧИС- ПЕРЕ- СРЕДНЕЕ ДАРТНОЕ ЛЯЦИЯ ЦИЕНТ КОЭФФИ- ЛЕННОЕ МЕН- ОТКЛОНЕ- X VS Y РЕГРЕС- ЦИЕНТА ЗНАЧЕ- ной НИЕ СИИ РЕГРЕС- НИЕ Т СИИ 1 43.13333 6.52176 0.28422 0.01242 0.03635 0.34171 2 316.16650 114.42990 0.42189 0.00739 0.00186 3.96545 3 241.79999 36.43074 0.11900 0.01504 0.00635 2.36881 4 105.66666 17.85640 0.37822 0.00151 0.03679 0.04100 5 34.13333 15.97571 0.39412 0.04919 0.04141 1.18782 ЗАВИ- СИМАЯ 6 2.26667 1.41259 ПЕРЕСЕЧЕНИЕ -6.07928 МНОЖЕСТВЕННАЯ КОРРЕЛЯЦИЯ 0.73575 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ 1.05162 АНАЛИЗ ДИСПЕРСИЙ РЕГРЕССИИ СУММА СРЕДНЕЕ ОТТ411Г, ИСХОДНАЯ ДИСПЕРСИЯ 7™ ^ „„ КВАДРА- СВОБОДЫ ТОВ ОТНОСЯЩАЯСЯ К РЕГРЕССИИ 5 31.32506 ОТКЛОНЕНИЕ ОТ РЕГРЕССИИ 24 26.54161 СУММА 29 57.86667 КВАДРА- ЗНАЦЕ- ТИЧЕСКОЕ Г 6.26501 5.66508 1.10590 МНОЖЕСТВЕННАЯ РЕГРЕССИЯ..ПРИМЕР ВЫБОР...1 ТАБЛИЦА ОСТАТКОВ •БЫТИЯ ЗНАЧЕНИЕ Y ОЦЕНКА Y ОСТАТОК 1 1.00000 0.48091 0.51909 2 2.00000 1.77670 0.22330 3 2.00000 2.14586 —0.14586 4 0.00000 0.82880 —0.82880 5 ‘2.00000 1.90522 0.09478 6 2.00000 1.52125 0.47875 7 3.00000 3.46447 —0.46447 8 2.00000 2.25887 —0.25887 9 3.00000 3.80259 —0.80259 10 0.00000 1.02042 —1.02042 11 4.00000 2.49735 1.50265 12 1.00000 2.00066 —1.00066 13 1.00000 2.00735 —1.00735 14 .1.00000 1.15308 —0.15308 15 3.00000 2.90446 0.09554 16 2.00000 1.83532 0.16468 17 3.00000 2.56004 0.43996 18 4.00000 3.45229 0.54771 192
(Продолжение) 19 4.00000 3.62661 0.37339 20 3.00000 2.68068 0.31932 21 4.00000 3.64885 0.35115 22 4.00000 1.86542 2.13458 23 1.00000 2.09863 —1.09863 24 0.00000 1.97217 —1.97217 25 4.00000 1.41253 2.58747 26 1.00000 1.88027 —0.88027 27 3.00000 2.27646 0.72354 28 4.00000 4.51080 —0.51080 29 4.00000 3.95745 0.04255 30 0.00000 0.45458 —0.45458 МНОЖЕСТВЕННАЯ РЕГРЕССИЯ..ПРИМЕР ВЫБОР. ....2 НОМЕР СТАН- КОРРЕ- ПЕРЕ- СРЕДНЕЕ ДАРТНОЕ ЛЯЦИЯ МЕН- ОТКЛОНЕ- X VS Y НОЙ НИЕ 2 316.16650 114.42990 0.42189 3 241.79999 36.43074 0.11900 5 34.13333 15.97571 0.39412 ЗАВИ- СИМАЯ 6 2.26667 1.41259 СТАН- КОЭФФИ- ЦИЕНТ РЕГРЕС- СИИ ДАРТНАЯ ОШИБКА КОЭФФИ- ЦИЕНТА РЕГРЕС- СИИ ВЫЧИС- ЛЕННОЕ ЗНАЧЕ- НИЕ Т 0.00744 0.00172 4.31763 0.01497 0.00551 2.71693 0.05363 0.01258 4.26262 ПЕРЕСЕЧЕНИЕ —5.53528 МНОЖЕСТВЕННАЯ КОРРЕЛЯЦИЯ 0.73423 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ 1.01282 АНАЛИЗ ДИСПЕРСИЙ РЕГРЕССИИ ИСХОДНАЯ ДИСПЕРСИЯ СТЕПЕНИ СВОБОДЫ СУММА СРЕДНЕЕ КВАДРА- КВАДРА- ЗНАЧЕ- ТОВ ТИЧЕСКОЕ НИЕ F ОТНОСЯЩАЯСЯ К РЕГРЕССИИ 3 ОТКЛОНЕНИЕ ОТ РЕГРЕССИИ 26 СУММА 29 31.19594 10.39865 10.13714 26.67073 1.02580 57.86667 МНОЖЕСТВЕННАЯ РЕГРЕССИЯ..ПРИМЕР ВЫБОР...2 ТАБЛИЦА ОСТАТКОВ № СОБЫТИЯ ЗНАЧЕНИЕ Y ОЦЕНКА Y ОСТАТОК 1 1.00000 0.59869 0.40131 2 2.00000 1.88363 0.11637 3 2.00000 2.26619 —0.26619 4 0.00000 0.90704 —0.90704 5 2.00000 1.99812 0.00188 6 2.00000 1.58408 0.41592 7 Заказ № 517 193
(Продолжение) 7 3.00000 3.49858 —0.49858 8 2.00000 2.23348 —0.23348 9 3.00000 3.85875 —0.85875 10 0.00000 0.98943 —0.98943 11 4.00000 2.51254 1.48746 12 1.00000 1.95925 —0.95925 13 1.00000 2.04998 —1.04998 14 1.00000 1.10726 —0.10726 15 3.00000 2.91951 0.08049 16 2.00000 1.76539 0.23461 17 3.00000 2.54052 0.45948 18 4.00000 3.36591 0.63409 19 4.00000 3.67961 0.32039 20 3.00000 2.65435 0.34565 21 4.00000 3.70045 0.29955 22 4.00000 1.84629 2.15371 23 1.00000 2.06900 —1.06900 24 0.00000 1.95640 —1.95640 25 4.00000 1.34019 2.65981 26 1.00000 1.79817 —0.79817 27 3.00000 2.24542 0.75458 28 4.00000 4.41268 -0.41268 29 4.00000 3.92577 0.07423 30 0.00000 0.33332 —0.33332 Рис. 13. Распечатка вывода (множественная регрессия) МОДИФИКАЦИЯ ПРОГРАММЫ Возможности программы могут быть увеличены или уменьшены путем внесения изменений в операторы размерности. Могут быть использованы вводимые данные в другом формате при условии обеспечения оператором указанного формата. Для облегчения модификации программы приняты следующие общие правила в обозначениях этого примера задачи: 1. Изменение операторов размерности в основной программе REGRE: (а) Размерности массивов XBAR, STD, D, RY, ISAVE, В, SB, T и W должны быть больше либо равны числу пере- менных т. Так как в примере дано шесть переменных, то значение т равно 6. (б) Размерность массива RX должна быть больше либо равна произведению т X tn. В примере произведение равно 36 = 6 X 6. (в) Размерность массива R должна быть больше либо равна В примере это число равно 21 = = (6+1)6/2. 2. Изменение оператора формата ввода в специальной подпро- грамме ввода DATA. Необходимо изменить только оператор формата для вводимых данных. Если данные примера состоят из однозначных, двузначных и трехзначных чисел и не используются поля в шесть столбцов, 194
как задано в примере, то каждая строка данных может быть от- перфорирована на полях из трех столбцов. В этом случае формат может быть изменен на (6F3.0). Специальная подпрограмма ввода DATA обычно составляется лользователем для применения различных форматов в различных задачах. Пользователь может преобразовать эту подпрограмму для проверки вводимых данных, преобразования данных и т. д. ИНСТРУКЦИИ ПО РАБОТЕ Основная программа для множественной линейной регрессии является стандартной программой на Фортране. Для нее не тре- буется специальных технических инструкций. Устройство для дан- ных 5 применено для ввода *, а устройство для данных 6 — для вы- вода**. Лента записи (устройство для данных 13) применяется для хранения промежуточных данных. СООБЩЕНИЯ ОБ ОШИБКАХ Следующие ошибки приводят к сообщениям: 1. Число карт отбора не указано в карте управления — NUMBER OF SELECTIONS NOT SPECIFIED. JOB TERMINATED. 2. Матрица коэффициентов корреляции вырожденная (сингу- лярная)—THE MATRIX IS SINGULAR. THIS SELECTION IS SKIPPED. Вторая ошибка позволяет вычислительной машине продолжать вы- числения. Первая ошибка прекращает работу. ВРЕМЯ РЕШЕНИЯ Время выполнения этого примера на системе IBM/360, модель 30, пользующейся вводом с перфокарт IBM 2540 и широкой пе- чатью IBM 1403, модель 3, равно 42 сек. ПРИМЕР ОСНОВНОЙ ПРОГРАММЫ ДЛЯ МНОЖЕСТВЕННОЙ ЛИНЕЙНОЙ РЕГРЕССИИ REGRE Назначение 1. Чтение карты параметров задачи для множественной линейной регрессии. 2. Чтение совокупности карт отбора. 3. Обращение к подпрограмме вычисления средних, стандартных отклоне- ний, одинарных и множественных коэффициентов корреляции, коэффициентов регрессии, Т-значений и анализа дисперсии множественной регрессии. 4. Печать результатов. Примечания Число наблюдений N должно быть больше M-J-1, где М —число перемен- ных. Если отсутствует совокупность карт отбора, то программа не может вы- полнить множественной регрессии. * В распечатке подпрограммы данные считываются с логического устрой- ства 97. — Прим, перев. ** В распечатке подпрограммы данные выводятся на логическое устрой- ство 99. — Прим, перед. 7* 195
После возвращения из подпрограммы MINV значение определителя (DET) служит для проверки на вырожденность корреляционной матрицы. Если DET сравнивается с малой константой, то это может быть также использовано для проверки на близость к вырожденности. Требуемые функции и подпрограммы CORRE (которая в свою очередь обращается к подпрограмме DATA) ORDER MINV MULTR Метод См. [1]. Перевод комментариев в тексте 1. Следующие размерности должны быть больше либо равны числу пере- менных М. 2. Следующая размерность должна быть больше либо равна произведению М*М. 3. Следующая размерность должна быть больше либо равна (М+1)*М/2. 4. Следующая размерность должна быть больше либо равна 10. 5. Если необходима версия этой программы для работы с двойной точностью, то в следующем операторе двойной точности следует опустить С в первом столбце. 6. С необходимо также опустить в операторах двойной точности, появляю- щихся в других программах, используемых совместно с этой программой. 7. Считывание карты параметров задачи. 8. PR — номер задачи (может быть алфавитно-числовой); PR1— номер задачи (продолжение); N — число наблюдений; М — число переменных; NS — число отобранных переменных. Вводимые данные находятся на логической ленте 13, применяемой для хране- ния промежуточных данных. Вводимые данные записываются на логическую ленту 13 специальной программой ввода DATA. Хранимыми данными можно пользоваться при анализе остатков. 9. Проверка числа отобранных данных. 10. Считывание карты подпоследовательности отбора. 11. NRESI — код выбора для таблицы остатков: 0 — если не составляется; 1 — если составляется; NDEP — зависимая переменная; К — число включенных независимых переменных; ISAVE — вектор, содержащий включенные-независимые переменные. 12. Проверка вырожденности обращенной матрицы. 13. Печать средних, стандартных отклонений, взаимных корреляций между X и Y, коэффициентов регрессии, стандартных ртклонений коэффициентов ре- грессии и вычисленного Т-значения. 14. Печать пересечения, множественного коэффициента корреляции и стан- дартной ошибки оценки. 15. Печать анализа дисперсии для регрессии. 16. Печать таблицы остатков. 196
C SAMPLE MAIN PROGRAm'fOR MULTIPLE REGRESSION - REGRE DIMENSION XBAR(40)»STD(40).0(40).RV(40).ISAVE(40),B(40) V S0(4O),T(40).W(4G) DIMENSION RXC1600) DIMENSION R(820> DIMENSION AN$(1O) C * C DOUBLE PRCISION X8AR,STD.RX.R.D.В.T.RY.DET.SB.ANS.SUM C . 6 1 ₽0RMAT(A4,A2.IS.212) 2 FORMAT(25H1MULTIPLE REGRESSION.....A4•А2//6Х,14HSELECT I ON....12// 1) 5 EORMAT(9HOVARIABLE.5X.4HMEAN.6X,8HSTANDARD.6X, 11«CORRELATION.4X,10 1HREGRESSION.4X,1OHSTO. ERROR.5X.8HC0MPUTEО/6Н NO..18X.9HDEVIAT 10 2N.7X.6HX VS Y,7X,11HCOEFFI С I ENT.3X,12H0F REG.COEF.,3X.7HT VALUE) 4 F0RMATC1H .I4.6F14.5) 5 FORMATION DEPENDENT) 6 FORMAT(1HO/1OH INTERCEPT,10X«F16.5//23N MULTIPLE CORRELATION .F13 1.5//23H STD. ERROR OF ESTIMATE.F13.5//) 7 F0RMATC1 НО» 2«1X.39HANALYSIS OF VARIANCE FOR THE REGRESS ION/Z5X.19HS 10URSE OF VAR IAT ION»7X•7HDEGREES•7X,6HSUM OF.10X,4HMEAN.12X,7HF VAl 2UE/30X,10HOF FREEDOM,4X.7HS0UARES.9X,7HSQUARES) 8 FORMATC30H ATTRIBUTABLE TO REGRESSION .I6.3F16.5/30H DEVIATION 9 1R0M REGRESSION .I6.2F16.5) 9 F0RMATC1H .5X.5HT0TAL.19X,16,F16.5> 10 F0RMATC3612) 11 F0RMATC1H •15X,18HTABLE OF RESlDUALS//9Н CASE NQ..<X.7HY VALUE,5X. 110HY ESTIMATE»6X,8HRESIOUAL> 12 F0RMATC1H ,16»F15,5•2F14.5) 13 FORMAT(53H1NUMBER OF SELECTIONS NOT SPECIFIED. JOB TERMINATED.» 14 FORMAT(52H0THE MATRIX IS SINGULAR. THIS SELECTION IS SKIPPED.) c 7 100 READ (97.D PR , PR 1 . N, M, N$ C 8 ' REWIND 13 10 = 0
Х = 0.0 CALL CORRE (N»M,IО»X,XBAR♦Б TO,RX»R,0,В,T) REWIND 13 С 9 TFCNS> 108*108,109 108 WRITE (99,13) GO ТО 30k 109 DO 200 I»1,NS WRITE (99,2) PR»PR1»I C 10 READ (9?,10) HrESI»NOEP,К,(1SAVE(J)*J=1,К) C 11 CALL ORDER (M,R»NDEP,К,I SAVE»RX,RY) CALI MINV <MtKtDET,8,T) C 12 IFCDET) 112,110*112 110 WRITE (99,414> GO TO 200 112 CALL MULTfc (NfK.XBAR«STD,0.RXjRVttSAVt.6>»SB,T, AN’S) C 13 MM=K*1 WRITE (99,31 00 115 J-=1»K LslSAVE(J) 115 WRITE (99,4) L,X8AR(L>,SL0(L) ,RYGIbB<Jb§B(J)»MJl WRITE (99,5) L«ISAVE(MH1 WRITE (99,4) L,X0AR(L)»StO(L1 C 14 WRITE (99,6) ANS(1),ANS(2)*ANS(3) C 15 WRITE (99,7) l=ANS(8) WRITE (99.8) * « An$ (4), AN$ (6) »ANS (1-QJ ,j., ANS (7Э »ANS (9) L = N-1 SUM=ANS(4)+ANS(7)
WRITE (99.9) I.SUM IftNRESD 200.200,120 C 16 120 WRITE (99.2) ₽R»PR1.| WRITE (99.11) MM»ISAVE(K+1) 00 140 IIsl.N READ (13) (W(J).J=1.M) SUMxANSd) 00 130 Jsl.K lolSAVE(J) 130 SUM3SUM+W(L)*B(J) RESI»W(MM)*SUM 140 WRITE (99.12) IbVCMMI.SUM.RESl REWIND 13 200 CONTINUE GO TO 100 300 CONTINUE ENO ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ ОПИСАНИЕ ЗАДАЧИ Для вычисления полиномов последовательно возрастающих по- рядков образуются степени независимой переменной. Если не про- исходит уменьшение сумм квадратов двух последовательных сте- пеней полиномов, то программа заканчивает решение задачи, не завершив анализа высших заданных степеней полиномов. Пример на полиномиальную регрессию состоит из 15 наблюдений, показан- ных в табл. 2. Высший порядок полинома, равный 4, задан в этой задаче. ПРОГРАММА Описание Программа полиномиальной регрессии состоит из основной программы POLRG, специальной подпрограммы построения гра- фиков PLOT и четырех подпрограмм из сборника научных про- грамм: GDATA, ORDER, MINV и MULTR. Возможности Возможности программы примера и требуемый формат для ввода данных следующие: 199
1. До 100 наблюдений. 2. Выбор полиномов до 10-го порядка. 3. Формат карт ввода данных (2F6.0). Таким образом, если задача удовлетворяет вышеуказанным ус- ловиям, то нет необходимости изменять основную программу. Од- нако если имеется более 100 наблюдений или требуется порядок полинома выше 10-го, то в программе примера необходимо изме- нить операторы размерности для применения к частной задаче. Если вводные данные приготовлены в другом формате, то формат ввода в основной программе примера должен быть соответственно изменен. Основные правила изменения программы описаны ниже. ВВОД Карта управления Для каждой задачи требуется одна карта управления, считы- ваемая основной программой POLRG. Эта карта подготавливается следующим образом: В данном Столбцы Содержание примере 1— 6 Номер задачи (может быть алфавитно- числовой) SAMPLE 7—11 Число наблюдений 00015 12—13 Высшая допустимая степень полинома 04 14 Код выбора для вычерчивания значений Y и оценок У: 1 0 — если не требуется вычерчивать 1 — если требуется вычерчивать Нули перед первой значащей цифрой не набиваются. Карты данных Так как вводимые данные считываются в вычислительную ма- шину по одному наблюдению за 1 раз, то каждая пара данных X и У из табл. 2 набивается в таком же порядке на отдельную карту в формате (2F6.0). Таблица 2 Пример данных для полиномиальной регрессии X Y X Y 1 10 8 36 2 16 9 48 3 20 10 62 4 23 11 78 5 25 12 94 '6 26 13 107 7 30 14 118 15 127 Формирование колоды перфокарт Формирование колоды перфокарт показано на рис. 14. 200
Пример Распечатка вводимых карт для примера представлена па рис. 15. Рис. 14. Колода перфокарт (полиномиальная регрессия) ВЫВОД Описание Вывод в программе примера на полиномиальную регрессию включает: 1. Коэффициенты регрессии для последовательных степеней по- линомов. ПРИМЕР00015041 9 48 1 10 2 16 10 62 3 20 11 78 4 23 12 94 5 25 13 107 6 26 14 118 7 30 15 127 8 36 Рис. 15. Распечатка карт ввода (полиномиальная регрессия) 201
2. Таблицу анализа дисперсии для последовательных степеней полиномов. 3. Таблицу разностей для окончательно выбранной степени по- линома (по желанию). 4. График значений Y и оценок Y (по желанию). Пример Распечатка вывода программы примера показана на рис. 16. МОДИФИКАЦИЯ ПРОГРАММЫ Возможности программы могут быть увеличены или умень- шены изменением операторов размерностей. Можно применять другие форматы, вводя соответствующие операторы формата. Для облегчения модификации программы применены следующие ос- новные правила в обозначениях примера задачи: 1. Изменения операторов размерностей в основной программе POLRG: а) размерность массива X должна быть больше либо равна n(/n-f-l), где п — число наблюдений и т — наибольшая допусти- мая степень полинома. Так как в примере 15 наблюдений и ука- зано, что высшая допустимая степень полинома равна 4, то произ- ведение равно 75= 15(4 + 1); б) размерность массива DI должна быть больше либо равна произведению m/m. В примере это число равно 16 = 4X4; в) размерность массива D должна быть больше либо равна (т -|-2) (т 4- 1)/2. В примере это число равно 15= (44-2) (44-1)/2; г) размерность массивов В, Е, SB и Т должна быть больше либо равна высшей допустимой степени полинома т. В примере эта величина равна 4; д) размерность массивов XBAR, STD, СОЕ, SUMSQ и ISAVE должна быть больше либо равна (zn4"l)- В примере эта вели- чина равна 5= (44-1); е) размерность массива Р должна быть больше либо равна 3(га). В примере эта величина равна 45 = 3(15). Массивом Р поль- зуются для построения графиков значений Y и оценок У. ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ.....ПРИМЕР ЧИСЛО НАБЛЮДЕНИЙ 15 ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ ПОРЯДКА 1 ПЕРЕСЕЧЕНИЕ —0.1387613Е 02 КОЭФФИЦИЕНТЫ РЕГРЕССИИ 0.8567849Е 01 202
АНАЛИЗ ДИСПЕРСИИ ДЛЯ ПОЛИНОМА 1 ПОРЯДКА УЛУЧШЕ- ИСТОЧНИК ДИСПЕРСИИ ЧИСЛО СТЕПЕ- НЕЙ СВОБО- ДЫ СУММА КВАДРА- ТОВ СРЕДНЕЕ КВАДРА- ТИЧЕСКОЕ ЗНАЧЕ- . НИЕ F НИЕ В ЗНАЧЕ- НИЯХ СУММЫ КВАДРА- ТОВ ПРИХОДИТСЯ НА РЕ- ГРЕССИЮ 1 20554.26200 20554.26200 135.56577 20554.26200 ОТКЛОНЕНИЕ ОТНО- СИТЕЛЬНО РЕГРЕС- СИИ 13 1971.03910 151.61838 СУММА 14 22525.30100 ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ ПОРЯДКА 2 ПЕРЕСЕЧЕНИЕ 0.1507547Е 02 КОЭФФИЦИЕНТЫ РЕГРЕССИИ —0.1649572Е 01 0.6385619Е 00 АНАЛИЗ ДИСПЕРСИИ ДЛЯ ПОЛИНОМА 2 ПОРЯДКА УЛУЧШЕ- ИСТОЧНИК ДИСПЕРСИИ число СТЕПЕ- НЕЙ СВОБО- ДЫ СУММА КВАДРА- ТОВ СРЕДНЕЕ КВАДРА- ТИЧЕСКОЕ ЗНАЧЕ- НИЕ F НИЕ В ЗНАЧЕ- НИЯХ СУММЫ КВАДРА- ТОВ ПРИХОДИТСЯ ГРЕССИЮ НА РЕ- 2 22235.39100 11117.69500 460.18506 1681.12890 ОТКЛОНЕНИЕ ОТНО- СИТЕЛЬНО РЕГРЕС- СИИ СУММА 12 14 289.91016 22525.30100 24.15918 ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ ПОРЯДКА 3 ПЕРЕСЕЧЕНИЕ 0.1849122Е 02 КОЭФФИЦИЕНТЫ РЕГРЕССИИ —0.3881073Е 01 0.9768364Е 00 —0.1409456Е —01 203
АНАЛИЗ ДИСПЕРСИИ ДЛЯ ПОЛИНОМА 3 ПОРЯДКА УЛУЧШЕ- ЧИСЛО НИЕ СТЕПЕ- СУММА СРЕДНЕЕ В ЗНАЧЕ- KCJO^HHK НЕЙ КВАДРА- КВАДРА- НИЯХ ДИСПЕРСИИ СВОБО- ТОВ ТИЧЕСКОЕ НИЕ F СУММЫ ДЫ КВАДРА- ТОВ ПРИХОДИТСЯ НА РЕ- ГРЕССИЮ 3 22256.32800 7418.77340 303.40063 20.93750 ОТКЛОНЕНИЕ ОТНО- СИТЕЛЬНО РЕГРЕС- СИИ 11 268.97266 24.45206 СУММА 14 22525.30100 ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ ПОРЯДКА 4 ПЕРЕСЕЧЕНИЕ —0.5267349Е 01 КОЭФФИЦИЕНТЫ РЕГРЕССИИ 0.1944943Е 02 —0.5114683Е 01 0.5650751Е 00 —0.1811317Е —01 АНАЛИЗ ДИСПЕРСИИ ДЛЯ ПОЛИНОМА 4 ПОРЯДКА УЛУЧШЕ- ЧИСЛО НИЕ .. СТЕПЕ- СУММА СРЕДНЕЕ В ЗНАЧЕ- источник НЕЙ КВАДРА- КВАДРА- НИЯХ ДИСПЕРСИИ СВОБО- ТОВ ТИЧЕСКОЕ НИЕ F СУММЫ ДЫ КВАДРА- ТОВ ‘ ПРИХОДИТСЯ НА РЕ- ГРЕССИЮ 4 22396.44900 5599.10940 434.53931 140.12109 ОТКЛОНЕНИЕ ОТНО- СИТЕЛЬНО РЕГРЕС- СИИ 10 128.85156 12.88516 СУММА 14 22525.30100 ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ..ПРИМЕР ПОЛИНОМИАЛЬНАЯ РЕГРЕССИЯ ПОРЯДКА 4 ТАБЛИЦА ОСТАТКОВ № НАБЛЮ- ДЕНИЯ ЗНАЧЕНИЕ X ЗНАЧЕНИЕ Y ОЦЕНКА Y ОСТАТОК 1 1.00000 10.00000 9.61436 0.38564 2 2.00000 16.00000 17.40358 —1.40358 3 3.00000 20.00000 20.83865 —0.83865 4 4.00000 23.00000 22.22327 0.77673 5 5.00000 25.00000 23.42639 1.57361 6 6.00000 •26.00000 25.88222 0.11778 7 7.00000 30.00000 30.59026 —0.59026 8 8.00000 36.00000 38.11533 -2.11533 9 9.00000 48.00000 48.58743 —0.58743 204
(Продолжение) 10 10.00000 62.00000 61.70206 0.29794 и 11.00000 78.00000 76.71997 1.28003 12 12.00000 94.00000 92.46704 1.53296 13 13.00000 107.00000 107.33398 —0.33398 14 14.00000 118.00000 119.27710 —1.27710 15 15.00000 127.00000 125.81982 1.18018 ЧЕРТЕЖ 4 1.0000 2 2.1429 3.2857 4.1429 5.2857 6.1429 7.2857 8.1429 9.2857 10.1429 11.2857 12.1429 13.2857 14.1429 15.0000 12 12 21 2 1 2 2 12 12 2 21 21 12 12 2 1 9.6144 21.3529 33.0915 44.8300 56.5686 68.3071 80.0457 91.7842 103.5228 115.2614 127.0000 Рис. 16. Распечатка вывода (полиномиальная регрессия) 2. Изменения оператора формата ввода в основной программе POLRG. Для вводимых данных может быть изменен только оператор формата. Так как данные примера состоят из однозначных, дву- значных и трехзначных чисел, то вместо того чтобы пользоваться полями в шесть столбцов, как это сделано в примере, каждую строку данных можно перфорировать в полях, состоящих из трех столбцов. В этом случае следует изменить формат на (2F3.0). ИНСТРУКЦИИ ПО РАБОТЕ Программа примера на полиномиальную регрессию является стандартной программой на Фортране. Специальные технические инструкции для нее не нужны. Устройство для данных 5 исполь- зуется для ввода, а устройство для данных 6 — в качестве вывода. Лента записи (устройство данных 13) применяется как промежу- точная память при построении графика значений Y и оценок У. ВРЕМЯ РЕШЕНИЯ Время решения этого примера на системе IBM/360, модель 30, пользующейся вводом с перфокарт 1ЁМ 2540 и широкой печатью IBM 1403, модель 3, равно 35 сек. 205
ПРИМЕР ОСНОВНОЙ ПРОГРАММЫ ДЛЯ ПОЛИНОМИАЛЬНОЙ РЕГРЕССИИ POLRG Назначение 1. Считывание карты параметров для задачи полиномиальной регрессии. 2. Обращение к подпрограммам для выполнения анализа. 3. Печать коэффициентов регрессии и анализ таблицы дисперсий полино- мов с последовательно возрастающим порядком. 4. Распечатка по желанию таблицы остатков и графика значений Y и оценок Y. Примечания Число наблюдений N должно быть больше М+ 1, где М — наибольшая ука- занная степень полинома. Если для двух последовательных степеней полинома разность сумм квадратов не уменьшается, то программа заканчивает решение, не завершая анализа до наибольшей указанной степени полинома. Требуемые функции и подпрограммы GDATA ORDER MINV MULTR PLOT (специальная подпрограмма печати графиков, приготовленная для программы примера). Метод См. [1]. Перевод комментариев в тексте 1. Следующая размерность должна быть больше либо равна произведе- нию N*(M4-1), где N — число наблюдений и М — наибольшая указанная сте- пень полинома. 2. Следующая размерность должна быть больше либо равна произведению М*М. 3. Следующая размерность должна быть больше либо равна (М 4- 2) * *(М + 1)/2. 4. Следующая размерность должна быть больше либо равна М. 5. Следующая размерность должна быть больше либо равна (М 4- 1). 6. Следующая размерность должна быть больше либо равна 10. 7. Следующая размерность будет использована при желании печатать гра- фики данных наблюдения и оценок. В этом случае размерность должна быть больше либо равна N*3. В противном случае размерность может быть равна 1. 8. Если необходима версия этой программы для расчетов с двойной точ- ностью, то в следующем операторе двойной точности нужно опустить С в пер- вом столбце. 9. С необходимо также опустить во всех операторах двойной точности, на- ходящихся в других программах, используемых совместно с данной программой. 10. Считывание карты параметров задачи. 11. PR — номер задачи (может быть алфавитно-числовой); PR1 — номер задачи (продолжение); N — число наблюдений; М — наибольшая указанная степень полинома; NPLOT — код для печати графиков: 0 — печать не нужна; 1 — требуется печать. 12. Печать номера задачи и N. 13. Считывание выходных данных. 14. Х(1)—независимая переменная, X(J)—зависимая переменная. 15. Образование подмножества матрицы коэффициентов корреляции. 206
с SAMPLE main program for polynomial regression- POlRG с 1 DIMENSION XC11OO) с г DIMENSION DI(100> с 3 DIMENSION 0(66) с 4 DIMENSION B(lO).E(1O).S&(1O)'ThOr с 5 DIMENSION XBAR(in ,STO(11),COE(11) .SUMS0(l1).I SAVE(11) с 6 DIMENSION ANS(1O> с 7 DIMENSION P(300). с 8 с *• DOUBLE PRECISION X.XBAR,STD.D,SUMSO,01,E,fl,SB.T,ANS.DET,COE с 0 1 FORMAT(A4.A2•IS.12.И> 2 FORMat(2F6.0) 5 F0RMAT(27H1P0LYN0MTAl REGRESSION...;,A4.a2/> 4 FORMAT(23H0NUMBER OF OBSERVAT IONS,16//) 5 FORMAT (32HOPOLYNOMI al REGRESSION OF DEGREE. 13)) ж 6 FORMAT(12HO INTERCEPT,E20.7) 7 FORMAT(26HO REGRESSION COEFFI С I ENTS/<6E20.7)) 8 FORMAT(1H0/24X,24HANALY3IS OF VARIANCE FQR.I4.19H DEGREE PQIYNOMI 1 al/) v FORMAT(1 HO.5X.19HS0URCE OF VAR I AT I ON,7X•9H0EGREE 0F.7X.6HSUM OF,9м 1,4HMEAN,1OX,1 HF.9X.20HIMPROVEMENT IN ТЕRMs/33X,7HFREEDOM.8X,7h$0Ua ERES,7X,6HSOUARE,7X,SHVAlUE.8X.17H0F SUM OF SQUARES) 10 F0RMAT(20H0 DUE TO REGRESSION.12X.16.Fi7 S.F14.5.F13.5,F20.5 ) 11 *ORMAT(32H DEVIATION ABOUT REGRESSION . 16.₽17.5.F14.5) 12 FORMAT(8Х.SHTOTAL.19X,16.F17.5///) 13 FQRMaT(17H0 NO IMPROVEMENT) 14 FORMAT(1H0//27x.18HTAB IE OF R£$ 1 DUALS//16h OBSERVATION NO.,5X,7h> 1VALUE.7X,7HV value,7X.10HV ESTJMATE,7X,flHRE$ I OUAL/)
15 FORMAT(1 НО.Зх.I6,F18.5.F14.5,F17.5,F15.5) С 10 JOO REAO (97,1) PR.PRI.N.M.NPLOT C 11 C 12 WR-ITE (99.3) OR.PR1 WRITE (99,4) n € 13 l = N*M 00 110 !=1,N J = l*l t 14 110 RE AO l97.?) X ( I ) , X(J > CALL GDATA (N.M.X,X0AR.ST 0.D.SQ) MM=M*1 . $UM=0.0 NT=M-1 00 200 1=1.M I 4 AVE( 1) = I C 15 CAL I ORDER <MM,0.MM, J• (SAVE .П! .E> C 16 CALl MTNV fDj.I.DET.8,T) CALL MULTO (N,I.KHAR.STD.SUMSQ.Ol.6.ISAVE.e.SB.T,a«S) C 17 WRITE (90.5) I IF(ANS(7)1 140 130,130 130 SUMIP=ANS(4)-SUM IF(SUMIP) 140 140 150 140 WRITE (99,13) GO TO 2Ю 150 WRITE (99,6) ANS(1> WRITE (99,7) (0(j).ja1,l) WRITE (99.8) WR I ТЕ (99.9) $UM=AN$(4)
$ WRITE (99.10) I.ANS(4),ANS(6),ANS(10).SUMfP NI«ANS(8) WRITE (99.11) N1,ANS(7)* ANS(9) WRITE (99.12) NT.SUMSQ(MM) C 18 COE<1)=ANS(1) 00 160 J’1.I 160 COECJ*1>*B(J) LAM 200 CONTINUE t 19 210 IF(NPLOT) 100*100.220 C 20 220 NP3»N*N 00 230 I»1.H NP3=NP3»1 9(NP3)8COE(1) 1*1 00 230 Jai.LA P(NP3)»P<NP3)♦X(l)*C0E(J*1) 230 L=»L«-N t 21 N2*N l = N*M 00 240 1»1,N P( I )«X(1) N2=NZ*i lel*1 240 P(N2)»X(L) C 22 WRITE (99.3) PR.PR1 WRITE (99,5) LA WRITE (99.14) NP2«N NP3=N*N 00 250 |»1fN
вР2^Р2*1 UP3SNP3+1 ftESTD=PW2)-P(NP3> Z50 «ВИВ <99H5> I. P(I . RES 10 CALL PLOT СЦЬР,Ы,3,0.11 GO TO Wd eiso 16. Обращение подматрицы коэффициентов корреляции. 17. Печать результатов расчета. 18. Сохранение коэффициентов для вычисления оценок Y. 19. Проверка на необходимость печати графиков. 20. Перепись данных наблюдений. 21. Печать таблицы остатков. ПОШАГОВАЯ МНОЖЕСТВЕННАЯ РЕГРЕССИЯ ОПИСАНИЕ ЗАДАЧИ Пошаговая множественная регрессия является статистическим методом анализа связи между зависимой переменной (у) и мно- жеством независимых переменных (xj, х2, хт), а также служит для выбора независимых переменных в порядке их значимости. Критерий значимости основывается на уменьшении сумм квадра- тов, и независимая переменная, наиболее влияющая на это умень- шение в данном шаге, вводится в регрессию. В качестве зависимой переменной может быть принята любая переменная из исходного множества. Некоторое множество переменных может быть прину- дительно введено в регрессию, и некоторое другое множество мо- жет быть отброшено. Пример задачи на пошаговую множественную регрессию со- стоит из 30 наблюдений шести переменных (см. табл. 1). Первые пять переменных приняты в качестве независимых, а последняя переменная взята в качестве зависимой. В первом анализе все пять независимых переменных доступны для выбора. Во втором анализе третья переменная принудительно введена в регрессию, четвертая отброшена, а оставшиеся три переменные доступны для выбора. Заметим, что эта же задача использовалась во множест- венной линейной регрессии. Результаты этих двух программ можно сравнить. ПРОГРАММА Программа пошаговой множественной регрессии состоит из ос- новной программы STEPR, специальной программы ввода DATA, специальной программы вывода STOUT и четырех подпрограмм из сборника научных подпрограмм: CORRE, MSTR, LOC и STPRG. Возможности
Возможности программы примера и формат, требуемый для ввода данных, следующие: 1. Не свыше 35 переменных, включая как зависимую, так и не- зависимые переменные. 2. Не свыше 99,999 наблюдений, если они считываются в вы- числительную машину по одному за I раз при помощи специальной программы ввода DATA. Если все данные хранятся в памяти до начала вычисления коэффициентов корреляции, то ограничение на число наблюдений зависит от размера оперативной памяти, отве- денной для вводимых данных. 3. Карты ввода данных готовятся в формате (12F6.0). Таким образом, если задача удовлетворяет вышеприведенным условиям, то пример программы не следует преобразовывать. Однако если задано более 35 переменных, то оператор размерности в основной программе примера должен быть изменен для условий конкретной задачи. Если карты вводимых данных подготовлены в другом фор- мате, то формат в программе ввода DATA должен быть изменен. Основные правила изменения программы приведены ниже. ВВОД Управляющая карта Для каждой задачи требуется управляющая карта, которая счи- тывается основной программой STEPR. Карта подготавливается следующим образом: Столбцы Содержание В данном примере 1— 6 Код задачи (может быть алфавитно-чис- ловым) SAMPLE 7—11 Число наблюдений 00030 12—13 Число переменных 06 14—15 Число карт отбора (см. ниже) 02 16—21 Эта константа указывает часть суммы квадратов, которой пользуются для огра- ничения ввода переменных в регрессию. Если часть суммы квадратов, приходя- щаяся на вводимую переменную, меньше этой величины, то переменная не вклю- чается в регрессию. Перфорация значе- ния должна иметь десятичную точку * 0.0 22 Для печати таблицы разностей: 0 — если печать не требуется 1 — если требуется печать 1 Нули, предшествующие значащим цифрам, не перфорируются. * Выбор значения зависит от назначения анализа. Может быть предложено при проверке 0.01 (1%) Если необходимо включить все переменные в регрессию, то принимают значение 0.0. • 211
Карты данных Так как вводимые данные могут считываться в вычислительную машину по одному наблюдению за 1 раз, то каждая строка дан- ных в табл. 1 перфорируется на отдельной карте в формате (12 F6.0). Этот формат подразумевает наличие на карте двенад- цати полей по шести столбцов в каждом. Если задано более двенадцати переменных в задаче, то каждая строка продолжается на второй и третьей картах, пока последние данные не будут отперфорированы. Но при этом каждая строка данных должна начинаться с новой карты. Карта отбора Карта отбора применяется для указания зависимой переменной, независимых переменных, принудительно вводимых в регрессию, отбрасываемых переменных и независимых переменных, выбирае- мых программой для ввода в программу. Любая переменная из множества исходных переменных может быть назначена как за- висимая переменная, и любое число переменных может быть на- значено для принудительного ввода, отброшено или не ограничено для выбора программой. Для одного и того же множества пере- менных может быть указано несколько различных назначений пе- ременных. В карте отбора каждая переменная указывается при помощи следующих кодов: Код Указание 0 или пробел Независимая переменная, выбираемая программой для ввода в регрессию 1 Независимая переменная, принудительно вводимая в регрессию 2 Отбрасываемая переменная 3 Зависимая переменная Карта отбора подготавливается следующим образом: Столбцы Содержание В данном примере Выбор 1 Выбор 2 1. Код для 1-й переменной 0 0 2 Код для 2-й переменной 0 0 3 Код для 3-й переменной 0 1 4 Код для 4-й переменной 0 2 5 Код для 5-й переменной 0 0 6 Код- для 6-й переменной 3 3 Для карты отбора применяется формат ввода (72 II) Организация колоды перфокарт Организация колоды перфокарт показана на рис. 17. Пример Распечатка вводимых карт для задачи, данной в примере, представлена на рис. 18. 212
Рис. 17. Колода перфокарт (пошаговая множественная регрессия) ПРИМЕР 29 30 6 2 0.001 45 310 262 94 20 2 289 216 85 14 1 30 391 244 92 16 2 45 151 339 96 35 3 30 424 246 90 18 2 45 370 357 88 15 4 30 313 239 91 10 0 45 379 198 147 64 4 35 243 275 95 30 2 45 463 206 105 31 3 35 365 219 95 21 2 45 316 245 132 60 4’ 43 396 267 100 39 3 45 280 225 108 36 4 43 356 274 79 19 2 44 395 215 101 27 1 44 346 255 126 56 3 49 139 220 136 59 0 44 156 258 95 28 0 49 245 205 113 37 4 44 278 249' НО 42 4 49 373 215 88 25 1 44 349 252 88 21 1 51 224 215 118 54 3 44 141 236 129 56 1 51 677 210 116 33 4 44 245 236 97 24 1 51 424 210 140 59 4 45 297 256 111 45 3 51 000003 001203 150 210 105 30 0 Рис. 18 213
вывод Описание Вывод примера программы пошаговой множественной регрес- сии включает: 1. Для всех переменных: а) средние; б) стандартные отклонения; в) матрицу коэффициентов корреляции. 2. На каждом шаге множественной регрессии: а) сумму вычитаемых квадратов; б) вычитаемую часть; в) накапливаемую сумму вычитаемых квадратов; г) накапливаемую вычитаемую часть; д) коэффициент множественной корреляции (регулярный и нерегулярный) *; е) величину F для анализа дисперсии; ж) стандартную ошибку оценки (регулярную и нерегуляр- ную); з) коэффициенты регрессии; и) стандартные ошибки коэффициентов регрессии; к) вычисленную величину t. 3. При назначении — таблицу разностей. Пример Распечатка вывода в примере задачи показана на рис. 19. Модификация программы Возможности программы могут быть увеличены или умень- шены путем внесения изменений в операторы размерностей. Могут применяться вводимые данные в других форматах при обеспечении соответствующими операторами формата. Если пользователь встре- тится с задачей с большими или меньшими числами в выводе, он * Подразумевается исправленный и неисправленный на число степеней сво- боды.— Прим, перев. 214
ПОШАГОВАЯ МНОЖЕСТВЕННАЯ РЕГРЕССИЯ...........ПРИМЕР ЧИСЛО НАБЛЮДЕНИЙ 30 ЧИСЛО ПЕРЕМЕННЫХ 6 ЧИСЛО ВЫБОРОВ 2 КОНСТАНТА ДЛЯ ОГРАНИЧЕНИЯ ПЕРЕМЕННЫХ 0.0 * № ПЕРЕМЕННОЙ СРЕДНЕЕ СТАНДАРТНОЕ ОТКЛОНЕНИЕ 1 43.13333 6.52176 2 316.16650 114.42990 3 241.79999 36.43074 4 105.66666 17.85640 5 34.13333 15.97571 6 2.26667 1.41259 МАТРИЦА КОРРЕЛЯЦИЙ СТРОКА 1 1.00000 —0.06721 —0.13689 0.49755 0.55849 0.28422 СТРОКА 2 -0.06721 —1.00000 0.17857 —0.05227 —0.18381 0.42189 СТРОКА 3 —0.13689 —0.17857 1.00000 —0.40874 —0.26319 0.11900 СТРОКА 4 0.49755 —0.05227 —0.40874 1.00000 0.93552 0.37822 СТРОКА 5 0.55849 —0.18381 —0.26319 0.93552 1.00000 0.39412 СТРОКА 6 0.28422 0.42189 0.11900 0.37822 0.39412 1.00000 ВЫБОР .........1 ЗАВИСИМАЯ ПЕРЕМЕННАЯ ......................... 6 ЧИСЛО ПРИНУДИТЕЛЬНО ВВЕДЕННЫХ ПЕРЕМЕННЫХ 0 ЧИСЛО ОТБРОШЕННЫХ ПЕРЕМЕННЫХ ................. 0 ШАГ 1 ВВЕДЕННАЯ ПЕРЕМЕННАЯ ......................... 2 СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ 10.300 ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ .... 0.178 НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ 10.300 НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ .... 0.178 57.867 ДЛЯ ПЕРВОЙ ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ . 0.422 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) . . . 0.422 ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . . 6.063 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ ............... 1.303 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . . 1.303 215
СТАНДАРТНАЯ НОМЕР КОЭФФИЦИЕНТ ОШИБКА ПЕРЕМЕННОЙ РЕГРЕССИИ КОЭФФИЦИЕНТА РЕГРЕССИИ ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ Т 2 0.00521 0.00212 ПЕРЕСЕЧЕНИЕ 0.62005 ШАГ 2 ВВЕДЕННАЯ ПЕРЕМЕННАЯ 5 СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ . . . НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . ДЛЯ 2 ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ . (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) . . . ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . . СТАНДАРТНАЯ НОМЕР КОЭФФИЦИЕНТ ОШИБКА ПЕРЕМЕННОЙ РЕГРЕССИИ КОЭФФИЦИЕНТА РЕГРЕССИИ 2 0.00632 0.00186 5 0.04316 0.01332 ПЕРЕСЕЧЕНИЕ —1.20349 ШАГ 3 ВВЕДЕННАЯ ПЕРЕМЕННАЯ . . . 3 СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ . . . НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . ДЛЯ 3 ВВЕДЕННОЙ ПЕРЕМЕННОЙ 2.462 13.324 0.230 23.624 0.408 57.867 0.639 0.622 9.314 1.126 1.146 ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ Т 3.397 3.241 7.572 0.131 31.196 0.539 57.867 / МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ 0.734 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) . . . 0.711 'ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . 10.137 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ ............ 1.013 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . . 1.050 СТАНДАРТНАЯ НОМЕР ПЕРЕМЕННОЙ КОЭФФИЦИЕНТ РЕГРЕССИИ ОШИБКА КОЭФФИЦИЕНТА РЕГРЕССИИ ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ Т 2 5 3 ПЕРЕСЕЧЕНИЕ 0.00744 0.05363 0.01497 —5.53529 0.00172 0.01258 0.00551 4.318 4.263 2.717 ШАГ 4 ВВЕДЕННАЯ ПЕРЕМЕННАЯ.............I 21G
СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ . . . НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . 0,127 0.002 31.323 0.541 57.867 ДЛЯ 4 ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ РЕГРЕССИИ . . 0.736 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) ... 0.699 ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . 7.375 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ ............ 1.030 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . . 1.088 НОМЕР ПЕРЕМЕННОЙ КОЭФФИЦИЕНТ РЕГРЕССИИ СТАНДАРТНАЯ ОШИБКА КОЭФФИЦИЕНТА РЕГРЕССИИ ВЫЧИСЛЕННОЕ значение т 2 0.00741 0.00175 4.222 5 0.05076 0.01524 3.332 3 0.01493 0.00561 2.662 1 0.01226 0.03541 0.346 ПЕРЕСЕЧЕНИЕ —5.94617 шаг 5 ВВЕДЕННАЯ ПЕРЕМЕННАЯ ...........4 СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ 0.002 ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ ... 0.000 НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ 31.325 НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . 0.541 57.867 ДЛЯ 5 ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ . 0.736 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) . . . 0.684 ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . 5.665 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ ........... 1.052 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) ... 1.133 СТАНДАРТНАЯ НОМЕР КОЭФФИЦИЕНТ ОШИБКА ВЫЧИСЛЕННОЕ ПЕРЕМЕННОЙ РЕГРЕССИИ КОЭФФИЦИЕНТА ЗНАЧЕНИЕ Т РЕГРЕССИИ 2 0.00739 0.00186 3.965 5 0.04919 0.04141 1.188 3 0.01504 0.00635 2.369 1 0.01242 0.03635 0.342 4 0.00151 0.03679 0.041 ПЕРЕСЕЧЕНИЕ —6.07929 ВЫБОР .... 1 ТАБЛИЦА ОСТАТКОВ № СОБЫТИЯ ЗНАЧЕНИЕ Y ОЦЕНКА Y ОСТАТОК 1 1.00000 0.48090 0.51910 2 2.00000 1.77670 0.22330 3 2.00000 2.14586 -0.14586 217
(Продолжение) 4 0.00 0.82880 —0.82880 5 2.00000 1.90522 0.09478 6* 2.00000 1.52125 0.47875 7 3.00000 3.46447 —0.46447 8 2.00000 2.25887 —0.25887 9 3.00000 3.80259 —0.80259 10 0.00 1.02042 —1.02042 11 4.00000 2.49735 1.50265 12 1.00000 2.00065 —1.00065 13 1.00000 2.00736 —1.00736 14 1.00000 1.15308 —0.15308 15 3.00000 2.90446 0.09554 16 2.00000 1.83531 0.16469 17 3.00000 2.56004 0.43996 18 4.00000 3.45228 0.54772 19 4.00000 3.62661 0.37339 20 3.00000 2.68068 0.31932 21 4.00000 3.64886 0.35114 22 4.00000 1.86541 2.13459 23 1.00000 2.09863 —1.09863 24 0.00 1.97217 —1.97217 25 4.00000 1.41254 2.58746 26 1.00000 1.88027 —0.88027 27 3.00000 2.27646 0.72354 28 4.00000 4.51080 —0.51080 29 4.00000 3.95746 0.04254 30 0.00 0.45458 —0.45458 ВЫБОР ................. 2 ЗАВИСИМАЯ ПЕРЕМЕННАЯ ...................6 ЧИСЛО ПРИНУДИТЕЛЬНО ВВЕДЕННЫХ ПЕРЕМЕННЫХ 1 ЧИСЛО ОТБРОШЕННЫХ ПЕРЕМЕННЫХ ........... 1 ШАГ 1 ВВЕДЕННАЯ ПЕРЕМЕННАЯ .......3 (ПРИНУДИТЕЛЬНО ВВЕДЕННАЯ ПЕРЕМЕННАЯ) СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ 0.819 ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ . . . 0.014 НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ 0.819 НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . 0.014 57.867 ДЛЯ 1 ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ 0.119 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) ... 0.119 ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . 0.402 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ ............. 1.427 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . . 1.427 СТАНДАРТНАЯ НОМЕР КОЭФФИЦИЕНТ ОШИБКА ВЫЧИСЛЕННОЕ ПЕРЕМЕННОЙ РЕГРЕССИИ КОЭФФИЦИЕНТА ' ЗНАЧЕНИЕ Т РЕГРЕССИИ 3 0.00461 0.00728 0.634 ПЕРЕСЕЧЕНИЕ 1.15093 ШАГ 2 218
ВВЕДЕННАЯ ПЕРЕМЕННАЯ .... 2 СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ . . . НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . 11.738 0.203 12.557 0.217 57.867 ДЛЯ 2 ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ . 0.466 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) . . . 0.435 ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . 3.741 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ 1.295 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . . 1.318 СТАНДАРТНАЯ НОМЕР КОЭФФИЦИЕНТ ОШИБКА ВЫЧИСЛЕННОЕ ПЕРЕМЕННОЙ РЕГРЕССИИ КОЭФФИЦИЕНТА ЗНАЧЕНИЕ Т РЕГРЕССИИ 3 0.00778 0.00671 1.160 2 0.00565 0.00214 2.645 ПЕРЕСЕЧЕНИЕ —1.40194 ШАГ 3 ВВЕДЕННАЯ ПЕРЕМЕННАЯ .... 5 СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ 18.639 ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ . . .' 0.322 НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ 31.196 НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . 0.539 57.867 ДЛЯ 3 ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ .’ 0.734 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) . . . 0.711 ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА . 10.137 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ ............ 1.013 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . . 1.050 СТАНДАРТНАЯ НОМЕР ПЕРЕМЕННОЙ КОЭФФИЦИЕНТ РЕГРЕССИИ ОШИБКА КОЭФФИЦИЕНТА РЕГРЕССИИ ВЫЧИСЛЕННОЕ ЗНАЧЕНИЕ Т 3 2 5 ПЕРЕСЕЧЕНИЕ 0.01497 0.00744 0.05363 —5.53528 0.00551 0.00172 0.01258 2.717 4.318 4.263 ШАГ 4 ВВЕДЕННАЯ ПЕРЕМЕННАЯ .... 1 СУММА КВАДРАТОВ, СОКРАЩЕННАЯ НА ЭТОМ ШАГЕ 0.127 ОТНОШЕНИЕ, СОКРАЩЕННОЕ НА ЭТОМ ШАГЕ . . . 0.002 НАКОПЛЕННАЯ СУММА СОКРАЩЕННЫХ КВАДРАТОВ 31.323 НАКОПЛЕННОЕ СОКРАЩЕННОЕ ОТНОШЕНИЕ . . . 0.541 57.867 219
ДЛЯ 4 ВВЕДЕННОЙ ПЕРЕМЕННОЙ МНОЖЕСТВЕННЫЙ КОЭФФИЦИЕНТ КОРРЕЛЯЦИИ 0.736 (ИСПРАВЛЕННЫЙ НА СТЕПЕНИ СВОБОДЫ) . . 0.699 ЗНАЧЕНИЕ F ДЛЯ ДИСПЕРСИОННОГО АНАЛИЗА 7.375 СТАНДАРТНАЯ ОШИБКА ОЦЕНКИ 1.030 (ИСПРАВЛЕННАЯ НА СТЕПЕНИ СВОБОДЫ) . . 1.088 СТАНДАРТНАЯ НОМЕР КОЭФФИЦИЕНТ ОШИБКА ВЫЧИСЛЕННОЕ ПЕРЕМЕННОЙ РЕГРЕССИИ КОЭФФИЦИЕНТА ЗНАЧЕНИЕ Т РЕГРЕССИИ 3 0.01493 0.00561 2.662 2 0.00741 0.00175 4.222 5 0.05076 0.01524 3.332 1 0.01226 0.03541 0.346 ПЕРЕСЕЧЕНИЕ —5.94617 ВЫБОР .... 2 ТАБЛИЦА ОСТАТКОВ № СОБЫТИЯ ЗНАЧЕНИЕ Y ОЦЕНКА Y ОСТАТОК 1 1.00000 0.48498 0.51502 2 2.00000 1.77220 0.22780 3 2.00000 2,14799 —0.14799 5S 4 0.00 0.81528 —0.81528 5 2.00000 1.91082 0.08918 6 2.00000 1.52156 0.47844 7 3.00000 3.47954 —0.47954 8 2.00000 2.27251 —0.27251 9 3.00000 3.80533 —0.80533 10 0.00 1.02152 —1.02152 11 4.00000 2.50144 . 1.49856 - 12 1.00000 2.00604 —1.00604 13 1.00000 2.00340 —1.0'0340 14 1.00000 1.14922 —0.14922 S 15 3.00000 2.91121 0.08879 ;g 16 2.00000 1.82797 0.17203 17 3.00000 2.56125 0.43875 18 4.00000 3.43668 0.56332 19 4.00000 3.61723 0.38277 ,ф 20 3.00000 2.68358 0.31642 21 4.00000 3.64918 0.35082 ж fir 22 4.00000 1.86566 2.13434 -• 23 1.00000 2.09898 —1.09898 24 0.00 1.96334 —1.96334 г 25 4.00000 1.40769 2.59231 26 1.00000 1.89582 —0.89582 27 3.00000 2.28895 0.71105 28 4.00000 4.50336 —0.50336 29 4.00000 3.94940 0.05060 k 30 0.00 0.44790 —0.44790 Рис. , 19. 1 может изменить формат вывода, заменив F на Е. Для облегчения 1 модификации программы приняты следующие основные правила в обозначениях примера задачи. f 220
1. Изменение операторов размерностей в основной программе STEPR: а) размерность массивов XBAR, STD, D, В, Т, IDX и L долж- на быть больше либо равна числу переменных т. Так как в при- мере задачи шесть переменных, то значение т равно 6; б) размерность массива RX должна быть больше либо равна произведению tn X т- В примере это произведение равно 36 = 6X6; в) размерность массива R должна быть больше либо равна (m+l)/n/2. В примере‘это число равно 21 = (6+1) 6/2. 2. Изменение оператора формата ввода в специальной подпро- грамме ввода DATA. Может быть изменен только оператор формата для вводимых данных. Если данные примера однозначные, двузначные или трех- значные, то каждая строка данных может быть отперфорирована в полях по 3 столбца вместо полей по шесть столбцов. В этом слу- чае формат изменяется на (6 F 3.0). Специальная подпрограмма ввода DATA обычно составляется для различных форматов в различных задачах. Пользователь мо- жет изменять эту подпрограмму для выполнения проверки вводи- мых данных, преобразования данных и т. п. ИНСТРУКЦИИ ПО РАБОТЕ Программа примера для пошаговой множественной регрессии написана как стандартная программа на Фортране. Специальных технических инструкций не требуется. Устройство данных 5 служит для ввода, устройство данных 6 — для вывода. Магнитная лента (устройство данных 13) служит для записи в двоичном коде про- межуточных данных. СООБЩЕНИЯ ОБ ОШИБКАХ Ошибки и вызываемые ими сообщения: I. Число карт отбора не указано в карте управления — NUM- BER OF SELECTIONS NOT SPECIFIED. JOB TERMINATED. Появление ошибки прекращает выполнение работы. 2. В карте отбора указано больше, чем одна зависимая пере- менная, — SELECTION CARD(N) DOES NOT NAME ONE AND ONLY ONE DEPENDENT VARIABLE. SELECTION IGNORED. 3. Контрольная цифра отлична от 0, 1, 2 или 3 на карте отбо- ра—COLUMN (К) OF SELECTION CARD (N) IS IN ERROR. IT IS POSSIBLE THAT COLUMNS SUCCEEDING THAT COLUMN ARE ALSO INCORRECT. THE SELECTION IS IGNORED. 4. Имеется слишком мало наблюдений для оценки—(N) OB- SERVATIONS ARE ТОО FEW ТО ALLOW PARAMETER ESTI- MATION FOR (M) VARIABLES. JOB TERMINATED. 5. Корреляционная матрица вырождена или плохо обуслов- лена — EITHER THE MATRIX IS SINGULAR OR THE RESIDUAL SUM OF SQUARES IS NEGATIVE IMPLYING EXTREME ILL — CONDITION. SELECTION IGNORED. 221
Два типа ошибок не определяются: 1. Если число наблюдений неверно, рабочая колода перфокарт будет приводить к ошибочному отбору и ошибкам в последующей работе. Пользователь должен уделять особое внимание подготовке рабочей колоды перфокарт в соответствии с вышеприведенными инструкциями. 2. Если какая-либо переменная остается постоянной во всех наблюдениях, то стандартное отклонение б^дет равно нулю и ре- зультаты будут неверными или не будут выданы. ВРЕМЯ РЕШЕНИЯ ч Время решения примера на системе IBM/360, модель 30, поль- зующейся вводом с перфокарт IBM 2540 и IBM 1403, модель 3, для вывода, равно 45 сек. ПРИМЕР ПРОГРАММЫ ПОШАГОВОЙ МНОЖЕСТВЕННОЙ РЕГРЕССИИ — STEPR Назначение 1. Считывание карты параметров программы для пошаговой множествен- ной регрессии. 2. Считывание подмножества карт отбора. 3. Обращение к подпрограммам для вычисления средних, стандартных от- клонений, коэффициентов простой корреляции. 4. Обращение к подпрограмме для выполнения каждого шага регрессион- ного анализа. Примечания Число наблюдений N должно быть больше М + 2, где М — число пере- менных. Если отсутствуют карты отбора, то эта программа не выполняет по- шаговой множественной регрессии. Требуемые функции и подпрограммы CORRE (которая в свою очередь обращается к подпрограмме DATA). MSTR (которая в свою очередь обращается к подпрограмме LOC). STPRG (которая в свою очередь обращается к подпрограмме STOUT). Метод См. [2]. Перевод комментариев в тексте 1. Следующие размерности должны быть больше либо равны числу пере- менных М. 2. Следующая размерность должна быть больше либо равна произведению М*М. 3. Следующая размерность должна быть больше либо равна (М-|-1)*М/2. 4. Следующая размерность должна быть больше либо равна 5. 5. Следующая размерность должна быть больше либо равна 11. 6. Если требуется версия данной программы для вычислений с двойной точностью, то в операторах двойной точности в столбце 1 необходимо опу- стить С. 7. С должно быть также опущено в операторах двойной точности, нахо- дящихся в других программах, используемых совместно с этой программой. 8. Считывание карты параметров задачи. 222
C SAMPLE MAIN PROGRAM FOR STEP-WISE MULTIPLE REGRESSION - STEPR C 1 OIMENSION XBAR(35).ST0(35).0(35J.B(35).T<35).IO*XC35) • L(35) C 2 OIMENSION RXC1225) C 3 OIMENSION R(630) € 4 OIMENSION NSTEPC5) C 5 OIMENSION ANS<11) C 6 C DOUBLE PRECISION XBAR.STD.RX.R.B.T.ANS.TEST C* 7 1 F0RMATCA4.A2.15.212.F6.0*11) 2 FORMAT(53H0NUNBER OF SELECTIONS NOT SPECIFIER. JOB TERMINATED.) 3 FORMAT(35H1STEP-WISE MULTIPLE REGRESSION.....A4.A2) 4 FORMAT(31H0VAR1ABLE MEAN STANDARD/4X.3HN0.16X.9HDEV1ATI0N) S FORMATC4X,12.F14.5»F12.5) 6 F0RMATC19H1CORRELATION MATRIX) 7 FORMATC4HOROWI3/(1OF12.5)) 8 F0RMATC7211) 9 FORMAT(23HONUMBER OF OBSERVATIONS. 15)' 10 FOR#AT(20H NUMBER OF VARIABLES3X.15) 11 F0RMAT(21H NUMBER OF SELECTI0NS2X,15) 12 F0RMAT(28H0C0NSTANT TO LIMIT VARIABLES.F9.5) 13 FORMAT(/15H1SELECT1ON......12) 14 F0RMATC16X.18HTABLE OF RESI0UALS//9H’CASE N0.5X.71iY VALUE5X.10HY E 1STIMATE6X.8HRESIOUAL) 45 FORMAT (17. F15• 5 ».2F14.5) 16 F0RMATC1H ) 17 F0RMATC2X.•NSEL«‘•12) 18 FORMATt1 HO»*♦♦♦♦COLUMN•.14.’ OF SE1ECTI0N CARO*.15.• IS IN ERROR. 1 IT IS POSSIBLE THAT COLUMNS SUCCEEDING THAT COLUMN ARE ALSO' 2/* INCORRECI. THE SELECTION IS IGNORED.♦♦♦♦•) «19 F0RMATC1H0.•♦♦♦♦SELECTION CARO1.15.’ OOES NOT NAME ONE AND ONLY ON
It DEPENDENT VARIABLE. SELECTION IGNORED.****') 20 FORMAT(1 HO.*****E1THER the matrix IS singular.or the residual sum 1 OF SQUARES IS NEGATIVE IMPLYING EXTREME ILL CONDITI ON••,/.•SELECT ZION IGNORED.****') 21 F0RMATC1H0.'***♦'.16. OBSERVATIONS ARE TOO FEW To ALLOW PARAMETER 1 ESTIMATION FOR',15.' VARIABLES. JOB TERMINATED.****') C 8 100 READ(9T,1) PR1.PR2.N.M,NS.PCT,NR € 9 WRITE(99.3) PR1.PR2 WR1TEC99.9) N WRITEC99.10) M IFCN-M-2) 101.101.102 101 WRITE(99.21> N.M STOP 102 VRITEC99.11) NS WRITEC99.12) PCT С Ю REWIND 13 4 10=0 <«0.0 CALL CORRE (N.M.10.X,XBAR,STD.RX.R.В.0,T) REWIND 13 ,c 11 URITEC99.4) 00 105 f«1.H 105 WRITEC99.5' !. XBAR(I>.$TD<i) € 12 WRITEC99.6) DO 130 !«1.M DO 125 J«1.M IF(I-j) 110,120.120 110 K=1♦(J•J-J>/2 GO TO 125 120 K«J*(|*)-|)/2 125 T(J)e₽(K)
130 VR1TE(99.7) 1, (TU), J*1<*fll C 53 IFlNS) 135.135,140 135 WRITE(99.2) 60 TO 200 f - 14 140 CAIL MSTR(iRX»R,*,0.1* NSEL»1 GO TO 150 C 15 143 CALL MSTR (R.RX'HHfO) C 14 150 WRITE (99,13) NSll REAO (07,8) (I0X1J)»JR1.W) C 17 *J35»0 00 155 K«1.M IF <IOX(K)> 152.1S3.153 182 WRITE (99,18) KrNSEL GO to 185 '33 IF (lOX<K)-3) 1S5.154.152 ISA W3S*n3S*i «S3 CONTINUE IF (H35-1) 156,157,156 156 WIIITE(99.19) NSEI GO TO 185 e 18 IS? CALL STPRG (M,R,RX,X0AR,I OX,PCT,NSTEP•AMS,L•0•STO,1,0•IEO IF (IER) 158.159,158 «58 WRITE (99.20) «О to 185 < 19 159 IF (NR> 185,185. 160 C 20 160 WRITE (99,13) M88L WRITE (0^,16) Заказ № 617
WRITE (99,1ft) MM=NSTEP(1) 00 180 I=1,H* REA0(13) YESTaAN$<9r K=N$TEP(ft) 00 170 РЫ KK-L(J) 170 YESTsYEST^B(J)*0(KK) R8BI»0(MMWEST 180 WRITE (99,15) I,O(MM).YEST,RES* REWIND 13 e 21 WRITE(99.17) NSEl T8S IF(NSEt-NS) 190,100,100 190 NSEL=NSEl+1 GO TO 1ft5 200 CONTINUE ENO 9. PR1—код задачи (может быть алфавитно-числовым); PR2 — код задачи (продолжение); N — число наблюдений; М — число переменных; NS — число отборов; РСТ — постоянная величина части суммы квадратов, которая исполь- зуется для ограничения ввода переменных в регрессию; NR — код для печати таблицы разностей: 0 — если печать не нужна; 1 — если требуется печать. 10. Логическая лента 13 применяется для промежуточного хранения вводи- мых данных. Вводимые данные записываются на логическую ленту 13 специаль- ной подпрограммой ввода DATA. Хранимые данные могут быть использованы для анализа остатков. 11. Печать средних и стандартного отклонения. 12. Печать корреляционной матрицы. 13. Проверка числа отборов. 14. Сохранение матрицы сумм взаимных произведений отклонений. 15. Перепись матрицы сумм взаимных произведений отклонений. 16. Считывание карты отбора. 17. В каждой позиции IDX должен быть указан один из следующих кодов: 0 или пробел — независимая переменная, доступная для отбора; 1 — независимая переменная, принудительно вводимая в регрессию; 2—отбрасываемая переменная; 3 — зависимая переменная, 226
18. Обращение к подпрограмме, выполняющей пошаговую регрессию- 19. Проверка, требуется ли печатать таблицу разностей. 20. Печать таблицы разностей. 21. Проверка, завершен ли отбор. КАНОНИЧЕСКАЯ КОРРЕЛЯЦИЯ ОПИСАНИЕ ЗАДАЧИ Этой программой выполняется анализ взаимоотношения между двумя множествами переменных, определенных на одном и том же объекте. Эти переменные в одном множестве служат как предик- торы, а в другом являются критериями, но .для анализа несущест- венно, какое множество рассматривается как предикторы — первое или второе. Вычисляется каноническая корреляция, которая дает максимум корреляции среди линейных функций двух,множеств пе- ременных. Для проверки' также вычисляются значимости канони- ческой корреляции. 4 Задача примера на каноническую корреляцию содержит, как это показано в табл. 3, четыре переменных в первом множестве (с левой стороны) и три переменных во втором множестве (с пра- вой стороны). Эти два множества измерений были произведены на 23 объектах. Таблица 3 Пример данных для канонической корреляции Первое множество Второе множество Наблюдения X, Х2 Хз Xt Yi Уз Уз 1 191 155 65 19 179 145 70 2 195 149 70 20 201 152 69 3 181 148 71 19 185 149 75 4 183 153 82 18 188 149 86 5 176 144 67. 18 171 142 71 6 208 157 81 22 192 152 77 7 189 150 75 21 190 149 72 8 197 159 90 20 189 152 82 9 188 152 76 19 197 159 84 10 192 150 78 20 187 151 72 11 179 158 99 18 186 148 89 12 183 147 65 18 174 147 70 13 174 150 71 19 185 152 65 14 190 159 91 19 195 157 99 15 188 151 98 20 187 158 87 16 163 137 59 18 161 130 63 17 195 155 85 20 183 158 81 18 196 153 80 21 173 148 74 19 181 145 77 20 182 146 70 20 175 140 ' 70 19 165 137 8h 21 192 154 69 20 185 152 63 22 174 143 79 20 178 147 73 23 176 139 70 20 176 143 69 »/< 7* 227
ПРОГРАММА Описание Программа канонической корреляции состоит из основной про- граммы MCANO, специальной Подпрограммы ввода DATA и пяти подпрограмм, входящих в сборник научных подпрограмм: CORRE, CANOR, MINV, NROOT и EIGEN. Возможности Возможности примера программы и требуемый формат для ввода данных следующие: 1. Не свыше 20 переменных, включая как первое, так и второе множество (т. е. как переменные, стоящие слева, так и перемен- ные, стоящие справа). Число переменных первого множества дол- жно быть больше либо равно числу переменных во втором множе- стве. 2. Не свыше 99,999 наблюдений. 3. Формат для карт ввода данных (12F6.0). Таким образом, если задача удовлетворяет приведенным выше условиям, то программу не следует изменять. Однако, если имеется более 20 переменных, то оператор размерности в основной про- грамме примера должен быть изменен для применения к конкрет- ной задаче. Если карты вводимых данных ^рассчитаны на другой формат, то формат ввода в подпрограмме ввода DATA должен быть изменен. Общие правила изменения программы приведены ниже. ввод Управляющая карта Для каждой задачи требуется управляющая карта, считывае- мая основной программой MCANO. Эта карта подготавливается следующим образом: Столбцы Содержание В данном примере 1— 6 7—11 Номер задачи (может быть алфавитно- числовым) Число наблюдений SAMPLE 000 23 12—13 14—15 Нули Число переменных в первом множестве (переменные с левой стороны) * 04 Число переменных во втором множестве (переменные с правой стороны) 03 перед первой значащей цифрой не обязательно должны быть отперфорированы. * Число переменных в первом множестве должно быть больше либо равно числу переменных во втором множестве. 228
Карты данных Так как вводимые данные считываются в вычислительную ма- * шину по одному наблюдению за 1 раз, то каждая строка данных в табл. 3 перфорируется на отдельной карте в формате (12 F 6.0). 1 Этот формат подразумевает наличие на карте двенадцати полей по шести столбцов в каждом. Рис. 20. Колода перфокарт (каноническая корреляция) Если в задаче имеется более двенадцати переменных, то каждая строка продолжается на второй карте, пока не будут отперфори- рованы последние данные. Однако каждая строка данных должна начинаться с новой карты. Организация колоды перфокарт Организация колоды перфокарт показана на рис. 20. Пример Распечатка карт ввода для задачи примера показана на рис. 21. 8 Заказ № 517 229
ПРИМЕР000230403 191 155 65 19 179 145 70 195 149 70 20 201 152 69 181 148 71 19 185 149 75 183 153 82 18 188 149 86 176 144 67 18 171 142 71 208 157 81 22 192 152 77 189 150 75 21 190 149 72 197 159 90 20 189 152 82 188 152 76 19 197 159 84 192 150 78 20 187 151 72 179 158 99 18 186 148 89 183 147 65 18 174 147 70 174 150 71 19 185 152 65 190 159 91 19 195 157 99 188 151 98 20 187 158 87 163 137 59 18 161 130 63 195 155 85 20 183 158 81 196 153 80 21 173 148 74 181 145 77 20 182 146 70 175 140 70 19 165 137 81 192 154 69 20 185 152 63 174 143 79 20 178 147 73 176 139 70 20 176 143 69 Рис. 21. Распечатка карт ввода (каноническая корреляция) ВЫВОД Описание Вывод в примере программы на каноническую корреляцию включает: 1. Средние. 2. Стандартные отклонения. 3. Коэффициенты корреляции. 4. Собственные значения и соответствующую каноническую кор- реляцию. 5. Лямбду. 6. Хи-квадрат и число степеней свободы. 7. Коэффициенты для переменных левой и правой сторон. Пример Распечатка вывода для задачи примера показана на рис. 22. МОДИФИКАЦИЯ ПРОГРАММЫ Возможности программы могут быть увеличены или уменьшены путем внесения изменений в операторы размерностей. Могут быть применены вводимые данные в другом формате, если введены опе- раторы требуемых форматов. Для облегчения модификации прог- раммы приняты следующие основные правила в обозначениях за- дачи примера. 1. Изменения операторов размерностей в основной программе MCANO: 230
КАНОНИЧЕСКАЯ КОРРЕЛЯЦИЯ ........ ПРИМЕР ЧИСЛО НАБЛЮДЕНИЙ 23 ЧИСЛО ПЕРЕМЕННЫХ С ЛЕВОЙ СТОРОНЫ 4 ЧИСЛО ПЕРЕМЕННЫХ С ПРАВОЙ СТОРОНЫ 3 СРЕДНИЕ 185.47826 149.91304 76.86955 19.47826 183.00000 148.82608 75.73912 СТАНДАРТНЫЕ ОТКЛОНЕНИЯ 10.10342 6.31673 10.46338 1.08165 КОЭФФИЦИЕНТЫ КОРРЕЛЯЦИИ 9.84424 6.73965 9.05647 СТРОКА 1 1.00000 0.74852 0.37082 0.66441 0.62291 0.66080 0.24683 СТРОКА 2 0.74852 1.00000 0.63252 0.22590 0.66811 0.72780 0.53194 СТРОКА 3 0.37082 0.63252 1.00000 0.20657 0.47394 0.60169 0.79684 СТРОКА 4 0.66441 0.22590 0.20657 1.00000 0.32870 0.34863 —0.10733 СТРОКА 5 0.62291 0.66811 0.47394 0.32870 1.00000 0.82555 0.39258 СТРОКА 6 0.66080 0.72780 0.60169 0.34863 0.82555 1.00000 0.47657 СТРОКА 7 0.24683 0.53194 0.79684 —0.10733 ЧИСЛО НАЙБОЛЬ- СООТВЕТ- ОТДЕЛЬНЫХ ШЕЕ ОСТАВ- СТВУЮЩАЯ 0.39258 0.47657 1.00000 ЧИСЛО СОБСТВЕН- ЛЕННОЕ СОБ- КАНОНИЧЕ- ЛЯМБДА ХИ- СТЕПЕНЕЙ НЫХ СТВЕННОЕ СКАЯ ЗНАЧЕНИЙ ЗНАЧЕНИЕ КОРРЕЛЯЦИЯ КВАДРАТ СВОБОДЫ 0 с 0.79880 0.89376 0.11598 40.93283 12 1 0.41910 0.64738 0,5)7644 10.46677 6 2 0.00767 0.08760 0.99233 0.14636 2 КАНОНИЧЕСКАЯ КОРРЕЛЯЦИЯ 0.89376 КОЭФФИЦИЕНТЫ ПЕРЕМЕННЫХ С ЛЕВОЙ СТОРОНЫ 0.66310 —0.16059 1.05822 —0.56651 КОЭФФИЦИЕНТЫ ПЕРЕМЕННЫХ С ПРАВОЙ СТОРОНЫ —0.02133 0.44090 0.89730 КАНОНИЧЕСКАЯ КОРРЕЛЯЦИЯ 0.64738 КОЭФФИЦИЕНТЫ ПЕРЕМЕННЫХ С ЛЕВОЙ СТОРОНЫ 0.09454 -0.83915 0.66309 —0.64892 8* 231
КОЭФФИЦИЕНТЫ ПЕРЕМЕННЫХ С ПРАВОЙ СТОРОНЫ —0.43841 —0.55503 0.70692 КАНОНИЧЕСКАЯ КОРРЕЛЯЦИЯ 0.08760 КОЭФФИЦИЕНТЫ ПЕРЕМЕННЫХ С ЛЕВОЙ СТОРОНЫ 0,02681 0.36055 —0.28827 —0.32496 КОЭФФИЦИЕНТЫ ПЕРЕМЕННЫХ С ПРАВОЙ СТОРОНЫ 0.70325 —0.70384 0.10028 Рис. 22. Распечатка вывода (каноническая корреляция) а) размерность массивов XBAR, STD, CANR, CHISQ и NDF должна быть больше либо равна числу переменных vjifi р — число переменных с левой стороны, q — число переменных с правой стороны). Так как в примере семь переменных (четыре с левой стороны и три с правой стороны), то значение т равно 7; б) размерность массива RX должна быть больше либо равна произведению /пХт* В задаче примера это произведение равно 49 = 7X7; в) размерность массива R должна быть больше либо равна (m-|-l)m/2. Для задачи примера это число равно 28= (7-f-1)7/2; г) размерность массива COEFL должна быть больше либо рав- на произведению p^q. В задаче примера это произведение равно 12 = 4X3; д) размерность массива COEFR должна быть больше либо равна произведению q^q. В задаче примера это произведение равно 9 = 3X3. 2. Изменение оператора формата ввода в специальной подпрог- рамме ввода DATA: Можно изменять только оператор формата для вводимых дан- ных. Так как в примере приведены данные в виде двузначных и трехзначных чисел, то вместо полей в шесть столбцов, как дано в примере, каждая строка может быть отперфорирована в семи по- лях по три столбца, т. е. в формате (7F3.0). В случае отличающихся форматов для различных программ составляется специальная подпрограмма ввода DATA. Пользова- тель может изменить эту подпрограмму для выполнения проверки вводимых данных, преобразования данных и т. п. ИНСТРУКЦИИ ПО РАБОТЕ Программа примера для канонической корреляции составлена как стандартная программа на Фортране. Специальных техниче- ских инструкций не требуется. Устройство данных 5 применяется для ввода, устройство данных 6 — для вывода. 232
ВРЕМЯ РЕШЕНИЯ Время решения этой программы примера на системе IBM/360, модель 30, использующей для ввода с перфокарт IBM 2540 и для вывода IBM 1403, модель 3, равно 19 сек. ПРИМЕР ОСНОВНОЙ ПРОГРАММЫ КАНОНИЧЕСКОЙ КОРРЕЛЯЦИИ - MCANO Назначение 1. Считывание карты параметров задачи канонической корреляции. 2» Обращение к двум подпрограммам для вычисления простой корреляции, канонических корреляций, хи-квадрат, числа степеней свободы для хи-квадрат и коэффициентов для переменных левой и правой части (канонических вариа- ций). 3. Печать результатов. Примечания Число переменных с левой стороны должно быть больше либо равно числу переменных с правой стороны. Требуемые функции и подпрограммы CORRE (которая в свою очередь обращается к подпрограмме ввода DATA). CANOR (которая в свою очередь обращается к подпрограмме MINV в NROOT. NROOT в свою очередь обращается к подпрограмме EIGEN). Метод См. [5]. Перевод комментариев в тексте 1. Следующие размерности должны быть больше либо равны общему числу переменных М (M — MP + MQ), где МР —число переменных с левой стороны и MQ —число переменных с правой стороны. ~ быть 2., Следующая М*М. 3. Следующая 4. Следующая MP*MQ. 5. Следующая MQ*MQ. 6. Если требуется версия этой программы для вычислений с размерность размерность размерность размерность должна должна должна должна больше либо равна быть быть быть больше больше больше либо либо либо равна равна равна произведению (М +1) *М/2. произведению произведению 6. Если требуется версия этой программы для вычислений с двойной точ- ностью, то в следующем операторе двойной точности в первом столбце необ- ходимо опустить С. 7. С также должно быть опущено во всех операторах двойной точности, встречающихся в других программах, используемых совместно с данной про- граммой. 8. Считывание карты параметров задачи. 9, PR —номер задачи (может быть алфавитно-числовым) j PR1 — номер задачи (продолжение). N — число наблюдений. МР — число переменных с левой стороны. MQ — число переменных с правой стороны. 10. Печать средних, стандартных отклонений и коэффициентов корреляции для всех переменных, 11. Печать собственных значений, канонических корреляций, лямбда, хи-квадрат, числа степеней свободы. 12. Проверка, положительны ли собственные значения. 13. Печать канонических коэффициентов. 233
c SAMPLE main program for canonical correlation -.mcano C 1 DIMENSION XBaR(20)•STD(20).САЛЯ(20).CH I SO(20).NDF(201 C 2 DIMENSION RX(400) с 3 DIMENSION Я(2Ю) c t DIMENSION C0e₽LU00) c s DIMENSION COEFRUOO) C 6 C DOUBLE PRECISION XBAR.STD.RX.R.CANR.CH ISO.COEFL.COEFR C 7 1 FORMAT(A4fЛ2,I5»212) 2 FORMAT(27H1CANONICAL CORRELATION......A4.A2//22H NO. OF OBSERVAT 1l6NS 8X.14/29H NO. OF LEFT HAND VARIABLES*15/30N NO. OF RIGHT 3NAN0 VARIABLES, U/) 3 F0RMAT46H0MEANS/C8F15.5)) A FORMAT(2OH0STANDARD DEV IAT1ONS/(8F15.S1J 5FORMAT(25HOCORRELATION COEFFICIENTS» 6 FORMAT(4HOROW*13/(10F12.5)) 7 FORMAT(1 НО//12H NUMBER OF .TX.TNlAROFST.TX,^CORRESPONDING.31X,7 1HPE6REES/13N EIGENVALUES, 5X»10HE|GENVALUE.7X,9HCANONI^U7X,6HLAM 2D0A.SXi10HCHI-SQUARE.7X,2HOF/4X.7HREMOVED,7X#WREHAINJNG,7X.11HCOR 3REVATION.32X.7HFREEOOM/) В FORMATSH .I7,F19.S,F16.5,2F14.5,5X.I$> D F0RMATC1H0/22N CANONICAL CORRELATION.F12.S7 10 FORMAT(39H0 COEFFICIENTS FOR LEFT HAND VARIABLES/(8F15.5)) 11 F0RMATI40H0 COEFFICIENTS FQR RIGHT HAND VARIABLES/(BF15.5H < 8 *00 READ (97.1) PR.DDT.ft,MP.MO C 9 VR|TEC99.2> PR.PR1.N«itP.MO M»MP»MO I0«0
ХзО.О CAIL CORRE(N,М,tO.X.XBAR,STD,RX,R,CANR,CHISQ,COEFl> c 10 WRITE (99,3) (XBAR(I),I«1,M) WRITE <99,4) (STD(I),1=1,M) WRITE (99,5) 00 160 1=1,M 00 150 J31,M IF(I-J) 120,130*130 ’120 L=I*(J*J-J)/2 GO TO UO ио L3j*a*i-i)/3 140 CANR(J)sR(L> 150 CONTINUE 160 WRITE (99,6) I, (CANR(J) . Jd ,M) CALL CANOR(N.MP,MQ.R,XBAR.STD,CANR,CHISQ.NDF.COEFR,COEFL,RX) C 11 WRITE (99,?) 00 170 ie1,MO N13I-1 C 12 |F(XBAR(D) 165*165,170 165 MMSN1 GO TO 175 170 WRITEC99.8) N1,XBAR(I).CANR(I),STD(I),CHISQ(I>•NDF<l> MM»MQ C - 13 175 N1«O N2 = 0 00 200 I81.MM WRITE (99,9) CANRCI) 00 180 J31,MP N1«N1*1 180 XBAR(J)sCOEFLCNl) WRITE (99,10) (XBAR(J).jsi,MR) DO 190 J81,MO
N2=N2*i 190 X8AR(J)=C0EFR(N2) URITEC99.11) (XBAR(J).J»1,MQ) 200 CONTINUE GO TO 100 END ДИСПЕРСИОННЫЙ АНАЛИЗ ОПИСАНИЕ ЗАДАЧИ Дисперсионный анализ выполняется для факторного расчета с помощью трех специальных операторов, предложенных Г. О. Хартли [6]. Анализ многих других конструкций может быть выведен из этого анализа путем, во-первых, удаления факторного расчета и, во-вторых объединением некоторых компонент в таб- лице дисперсионного анализа. Рассмотрим трехфакторный эксперимент с образованием запол- ненного случайного блока, показанного в табл. 4. В этом экспери- менте фактор А имеет четыре уровня, факторы В и С имеют по три уровня, а весь эксперимент повторен дважды. Повторения полно- стью независимы и не образуют фактора. Тем не менее подразумевается назначение этой программы для четырехфакторного эксперимента (с факторами А, В, С и /?). Сле- довательно, каждый элемент данных в табл. 4 может быть пред- ставлен в виде Xabcr, где а=1, 2, 3, 4; b = 1, 2, 3; с = 1, 2, 3; г=1,2. Общий принцип процедуры дисперсионного анализа, применяемого в программе, служит, во-первых, для выполнения формального факторного анализа и, во-вторых, для объединения некоторых ком- понент в соответствии со специальными инструкциями, которые на- значают конкретный расчет. В секции вывода представлены спе- циальные инструкции для четырех различных расчетов. Таблица 4 Пример данных для дисперсионного анализа Повторения (BLOCK) а> <h «1 #2 а3 Д4 <h «2 «3 а4 Г ci 3 10 9 8 24 8 9 3 2 8 9 -8 Г1... . < с2 4 12 3 9 22 7 16 2 2 2 7 2 1 С3 5 10 5 8 23 9 17 3 2 8 6 3 ( <4 2 14 9 13 29 16 И 3 2 7 5 3 г2... . < с2 7 11 5 8 28 18 10 6 6 6 5 9 1 Сз 9 10 27 8 28 16 11 7 8 9 8 15 236
ПРОГРАММА Описание Программа дисперсионного анализа состоит из основной про- граммы ANOVA и трех подпрограмм из настоящего сборника на- учных подпрограмм: AVDAT, AVCAL и MEANQ. Возможности Возможности программы примера и требуемые для ввода дан- ных формата следующие: 1. Факторный эксперимент не более чем на шесть факторов. 2. Общее число данных не свыше 3000. Общее число данных в задаче вычисляется по формуле k Т — П (LEVEL, + 1), где LEVELj — число уровней i-ro фактора; k — число факторов; П — знак накапливаемого умножения. 3. Формат карт ввода данных (12 F 6.0). Таким образом, если задача удовлетворяет вышеперечисленным условиям, то нет необходимости изменять программу примера. Однако, если в задаче более шести факторов или общее число точек превышает 3000, то операторы размерности в основной про- грамме должны быть изменены. Если вводимые данные приготов- лены на картах в другом формате, то операторы формата ввода в основной программе должны быть изменены. Общие правила из- менения программы приведены ниже. ВВОД Карта управления Для каждой задачи требуется одна карта управления, считы- ваемая основной программой ANOVA. Эта карта подготавливается следующим образом: В данном Столбцы Содержание примере 1—6 Номер задачи (может быть алфавитно- числовым) SAMPLE 7—8 Число факторов 04 9—15 Пробелы f 16 Метка первого фактора А 1 17—20 Число уровней первого фактора 0004 / 21 Метка второго фактора В 22—25 Число уровней второго фактора 0003 26 Метка третьего фактора с 27—30 Число уровней третьего фактора 0003 { 31 Метка четвертого фактора R 1 32—35 Число уровней четвертого фактора 0002 66 Метка одиннадцатого фактора (если имеется) . 67—70 Число уровней одиннадцатого фактора 237
Если имеется больше одиннадцати факторов, то на второй карте следует продолжение в таком же порядке. Столбцы Содержание 1 Метка двенадцатого фактора 2—5 Число уровней двенадцатого фактора и т. д. Не требуется набивать нули перед первыми значащими циф- рами. Рис. 23. Колода перфокарт (дисперсионный анализ) Карты данных Данные набиваются в следующем порядке: Хцц, Х2цъ Хзш, Хин, Xizu, Х22н, Хэги, •••, ^4зз2- Другими словами, самый внутрен- ний индекс изменяется первым, а именно первый фактор, затем второй, третий и четвертый индексы. В задаче примера первый
индекс относится к фактору А, а второй, третий и четвертый ин- дексы— к факторам В, С и R. Так как число полей данных на каждой карте равно двенадцати в формате (12 F 6.0), то каждая строка табл. 4 набивается на отдельной карте. Составление колоды перфокарт Составление колоды перфокарт показано на рис. 23. Пример Распечатка вводимых в примере карт представлена на рис. 24. ПРИМЕР04 A0004B0003C0003R0002 3 10 9 8 24 8 9 3 2 8 9 8 4 12 3 9 22 7 16 2 2 2 7 2 5 10 5 8 23 9 17 3 2 8 6 3 2 14 9 13 29 16 11 3 2 7 5 3 7 11 5 8 28 18 10 6 6 6 5 9 9 10 27 8 28 16 11 7 8 9 8 15 Рис. 24. Распечатка ввода (дисперсионный анализ) ДИСПЕРСИОННЫЙ АНАЛИЗ ............ПРИМЕР УРОВНИ ФАКТОРОВ А 4 В 3 С 3 R , 2 ОБЩЕЕ СРЕДНЕЕ 9.40278 источники ДИСПЕРСИИ ЧИСЛО r,D7^™D СТЕПЕНЕЙ КВАДРАТОВ СВОБОДЫ СРЕДНЕЕ КВАДРАТИЧЕСКОЕ А В АВ С АС ВС АВС R AR BR ABR CR ACR BCR ABCR ТОТА1 (Block) > (Error) * L 229.04166 722.69434 1382.08325 55.11110 42.00000 13.13889 140.75000 141.68054 18.819441 6.02778 176.97221 40.77777 50.55554 62.63889 151.02777 3233.31763 3 2 6 2 6 4 12 1 3] 2 (506.81940)* | 6 4J 12 71 (35) * 76.34721 361.34717 230.34720 27.55554 7.00000 3.28472 11.72917 141.68054 6.27315 3.01389 29.49536 20.38889 8.42592 15.65972 12.58565 (14.48054) ♦ » СУММИРОВАНО ПОСЛЕ ПОЛУЧЕНИЯ ВЫВОДА Рис. 25. Распечатка вывода (дисперсионный анализ) 239
вывод Описание Пример вывода программы дисперсионного анализа включает число уровней факторов при вводе, среднее всех данных и таблицу дисперсионного анализа. Для того чтобы завершить полностью дисперсионный анализ, некоторые компоненты в табл. 4 могут быть объединены. Это исполняется при помощи инструкций сум- мирования, которые относятся к конкретному эксперименту (см. табл. 5). Таблииа 3 Инструкции по суммированию компонентов дисперсионного анализа Единичная классификация с повторениями Классификация на две ветви с повто- рениями элементов Заполненный случайный блок с двумя факторами График расщепления (Ввод) Фактор № 1 Группы А Строки = А Фактор 1 - А Основной ре- 2 Повторе- Столбцы — В Фактор 2 ~ В жим ~ А Вспомогательный 3 ния = R Повторения == R Блоки == R режим ~ В Блоки — R (Вывод) Суммы А А А А квадратов R В В В AR АВ АВ АВ Инструкции Ошибка = R AR BR ABR Ошибка = R 4- R AR BR ABR Ошибка = R AR BR ABR Ошибка = (BR) 4 по суммиро- = R 4 (AR) + (AR) + = (AR) + 4 (ABR) (Ь) ванию Дисперсион- Группы А 4 (В R) + (ABR) Строки А +(BR)4(ABR) Фактор 1 А Основной режим А ный анализ Ошибка Столбцы В Фактор 2 В Блоки R Взаимодействие АВ Ошибка Взаимодействие АВ Блоки R Ошибка Ошибка (а) AR Вспомогательный режим BR Взаимодействие ABR Ошибка (Ь) Как было сказано ранее, задача примера связана с заполне- нием случайного блока с тремя факторами, повторенными дважды. Поэтому необходимо объединить некоторые компоненты таблицы дисперсионного анализа, показанной на рис. 25. В частности, компоненты AR, BR, ABR, CR, ACR, BCR и ABCR объединяются в одну величину, названную «ошибкой». Результат обозначен на рис. 25. Так как эти данные полностью гипотетические, то интер- претации разных, эффектов не производятся. Пример Распечатка вывода для задачи примера показана на рис. 25. 240
МОДИФИКАЦИЯ ПРОГРАММЫ Возможности программы могут быть увеличены или уменьшены изменением операторов размерностей. Могут быть применены так- же и другие форматы вводимых данных при введении соответст- вующих операторов формата. Для облегчения модификации про- граммы приняты следующие основные правила в обозначениях задачи примера. 1. Изменения операторов размерности в основной программе ANOVA: а) размерность массива X должна быть больше либо равна об- щему числу данных, вычисленному по формуле, приведенной в сек- ции возможностей программы. В задаче примера общее число дан- ных равно 240= (4+ 1) (3 4-1) (3+1) (24-1); б) размерность массивов HEAD, LEVEL, ISTEP, KOUNT и LASTS должна быть больше либо равна числу факторов k. Так как в задаче примера четыре фактора (3 исходных фактора+1 псевдофактор), значение k равно 4; в) размерность массивов SUMSQ, NDF и SMEAN должна быть больше либо равна n=2ft—1, где k — число факторов. Для дан- ной задачи примера значение п равно 15=24— 1. 2. Изменение оператора формата ввода в основной программе ANOVA: Допускается изменение только оператора формата для вводи- мых данных. Так как данные в примере однозначные и двузнач- ные и не используют поле в шесть столбцов, как задано в примере, то данцые могут быть набиты в поле, состоящем из двух столбцов. В этом случае формат следует заменить на (12 F 2.0). Этот формат рассчитан на двенадцать полей по два столбца в каждом на одной перфокарте. ИНСТРУКЦИИ ПО РАБОТЕ Пример программы дисперсионного анализа составлен как стандартная программа на Фортране. Специальных технических инструкций не требуется. Устройство данных 5 используется для ввода, а устройство данных 6 — для вывода. ВРЕМЯ РЕШЕНИЯ Время решения этого примера программы на системе IBM/360, модель 30, использующей для ввода с перфокарт IBM 2540 и для вывода IBM 1403, модель 3, равно 11 сек. ПРИМЕР ОСНОВНОЙ ПРОГРАММЫ ДИСПЕРСИОННОГО АНАЛИЗА — ANOVA Назначение ! Считывание карты параметров задачи дисперсионного анализа. 2 Обращение к подпрограммам для вычисления сумм квадратов, числа . степеней свободы и среднего квадратического отклонения. 3. Печать уровней факторов, суммарного среднего и таблицы дисперсион- ного анализа. 241
Примечания Программа предназначена только для полного факторного расчета. Поэтому другие расчеты экспериментов перед началом работы должны быть приведены к этому формату. Требуемые функции и подпрограммы AVDAT AVCAL MEANQ Метод См. [6]. Перевод комментариев в тексте 1. Следующая размерность должна быть больше либо равна накопленному произведению уровней каждого фактора плюс один (LEVEL(I) + 1) Для I == 1 до k, где k — число факторов. 2. Следующая размерность должна быть больше либо равна числу фак- торов. 3. Следующая размерность должна быть больше либо равна 2 в fc-й сте- пени минус 1 ((2**&) — 1). 4. Следующая размерность используется для печати меток факторов в таб- лице дисперсионного анализа и является фиксированной. 5. Если требуется использовать эту программу для вычислений с двойной точностью, то С в следующем операторе двойной точности должно быть опу- щено в первом столбце. 6. С должно быть также опущено во всех операторах двойной точности, встречающихся в других программах, используемых совместно с данной про- граммой. 7. Считывание карты параметров задачи. 8. PR — номер задачи (может быть алфавитно-числовым); PR1 — номер задачи (продолжение); К—число факторов; BLANK — поле пробелов; HEAD — метки факторов; LEVEL — уровни факторов. 9. Печать номера задачи и уровней факторов. 10. Подсчет общего числа данных. 11. Считывание всех вводимых данных. 12. Печать общего среднего. 13. Печать таблицы дисперсионного анализа. ДИСКРИМИНАНТНЫЙ АНАЛИЗ ОПИСАНИЕ ЗАДАЧИ С целью классификации новых индивидуумов в одну из не- скольких групп вычисляется совокупность линейных функций по данным этого множества групп. Отнесение индивидуума в одну из групп выполняется по оценке каждой вычисленной линейной функ- ции и нахождении группы, для которой это значение будет наи- большим. Задача примера на дискриминатный анализ состоит из четырех групп наблюдений (см. табл. 6). Число наблюдений в первой груп- пе равно восьми, во второй группе — семи, в третьей группе — семи и в четвертой группе — восьми. Во всех группах число переменных равно шести. 242
SAMPLE maim program FOR ANALYSIS OF VARIANCE - ANOVA 1 DIMENSION XC3OOOL 2 DIMENSION HEAD(6).LEVEL(6>.ISTEP(6).KOUNT(6)»LASTS(6) 3 DIMENSION SUMSQ<63)»N0F(63).SMEANC63) 4 DIMENSION FMT(15) 5 double precision X,GMEAN.SUMSQ.SMEAN,SUM 6 1 FORMAT(A4.A2, 12»A4»3X.11(A1#14)/(A1.14,A1 , 14 , A1, 14 • A1» 14, A1. 14 J) 2 FORMAT(26H1ANALYSIS OF VARIANCE.....A4»A2//> 3 FORMATC18HOLEVELS OF FACTORS/(3X.A1.7X.14)) 4 FORMAT(1 HQ//11H GRANO MEAMF20.S///Z> 5 FORMATC1OHOSOURCE 0F18X,7HSUMS OF1OX.10HDEGREES 0F9X.4HMEAN/1OH VA 1RIATI0N18X.7HSQVARES11X,7HFREEOON1OX,7HSOUARESZ) 6 FORMATC1H 15A1,F20.5,10X.I6»F20.5> 7 F0RMATC6H Г0ТА1ЮХ. F2O.5.1OX. Ifi) 8 FORMATCI2F6.0) 7 100 READ (97.1) PR.PR1,K,BLANK*(HEAD!I)•LEVEL(I>.I»1,R) 8 9 WRITE (99.2) PR.PR1 WRITE <99.3) (HEADCI)»LEVEL(l>»I*t»X> 10 fi=LEVEL(1 ) 00 Ю2 1=2.К 102 nsnuevelcd 11 READ (9{,8) (X(I).!«1.N> CALL AVOAT (X , I.EVEL. N. X . L . ISTEP. KOUNT> CALL AVCAL (X*LEVEL»X»L»1 STEP»LASTS) CALL MEANO (X,LEVEL.XtGMEAN,SUMS®.NOF.SMEAN.1 STEP.KOUNT»LA$1S>
ч URITg (99.4)GME*M 13 WRTTg (99.5) ll=(2**K)-1 Г$Те₽(1)*1 oo 105 г®?.* 105 rSTEP(l)=0 00 ИО (=1.15 110 FMT(I)=9IANК NN = 0 SUM=0.0 120 NN=NN*t 1 = 0 00 140 1=1.К FMT(T)=DIANK f F(ISTEP(! )-) 130. UO. 130 130 l=l*1 fMT(I)=HEAD(t> 140 CONTINUE WRITE (99.6) <FMTCr>.t8l.l5).SUMSO(NM>.NOF(HN).$NgAN(NN) SUM=SUM*SVMSQ(NN) 1F(NN-LL> 145.170.170 145 00 160 1 = 1.R IF(ISTEPCr)) 147 150.147 147 fSTEP(I)=O GO TO 160 ISO ISTEP(I)»1 GO To 120 160 CONTINUE 170 N = N-1 WRITE (99,7) SUM.N GO TO 100 END
Таблица 6 Пример данных для дискриминантного анализа Наблю- дения X! Х2 Хз х< Х5 Хе Наблю- х дения 1 х2 Хз X. Х5 Х6 Группа 1 1 3 10 9 8 24 8 Группа 3 1 3 и 9 15 20 10 2 4 12 3 8 22 7 2 9 4 10 7 9 9 3 9 3 2 8 9 8 *3 4 13 10 7 21 15 4 16 2 . 2 2 7 2 4 8 5 16 16 16 7 5 5 10 5 8 23 9 5 6 9 10 5 23 11 6 17 3 2 8 6 3 6_ 8 10 5 8 27 16 7 2 10 9 8 29 16 7 17 3 2 7 6 3 8 7 10 5 8 28 18 Группа 4 1 3 10 8 8 23 8 Группа 2 1 9 10 27 8 28 16 2 4 12 3 8 23 7 2 11 7 8 9 8 15 3 9 3 2 8 21 7 3 8 10 2 8 27 16 4 15 2 2 2 7 2 4 1 6 8 14 14 13 5 9 10 26 8 27 16 5 7 8 9 6 18 2 6 8 9 2 8 26 16 6 7 9 8 2 19 9 7 7 8 6 9 18 2 7 7 10 5 8 27 17 8 7 10 5 8 26 16 ПРОГРАММА Описание Программа дискриминантного анализа состоит из основной программы M.DISC и трех подпрограмм из настоящего сборника научных подпрограмм: DMATX, MINV и DISCR. Возможности Возможности программы примера и формат, необходимый для вводимых данных, следующие: 1. Не более пяти групп. 2. Не более десяти переменных. 3. Общее число переменных во всех комбинациях групп не больше 250. 4. Карты вводимых данных в формате (12 F 6.0). Если задача удовлетворяет вышеперечисленным условиям, то нет необходимости изменять программу примера. Однако, если имеется более пяти групп, более десяти переменных или более 250 наблюдений, операторы размерности в примере основной про- граммы должны быть изменены, чтобы удовлетворять конкретной задаче. Если карты вводимых данных подготовлены в другом фор- мате, то оператор формата ввода в примере основной программы должен быть изменен. Основные правила изменения программы описаны ниже. ВВОД Карта управления Для каждой* задачи требуется одна карта управления, считы- ваемая основной программой MDISC. Эта карта подготавливается следующим образом: 245
В данном i Столбцы ' Содержание примере j 1— 6 Номер задачи (может быть алфавитно- j числовым) SAMPLE j 7— 8 Число групп 04 I 9—10 Число переменных . 06 , 11—15 Число переменных в первой группе 00008 16—20 Число переменных во второй группе 00007 21—25 Число переменных в третьей группе 00007 I 26—30 Число переменных в четвертой группе 00008 1 65—75 Число переменных в двенадцатой группе (если имеется) Если имеется больше двенадцати групп в одной задаче, то про- должение перфорируется на второй карте таким же образом. Рис. 26. Колода перфокарт (дискриминантный анализ)
Столбцы Содержание 1— 5 Число наблюдений в тринадцатой группе 6—10 Число наблюдений в четырнадцатой группе Нули перед первыми значащими цифрами не перфорируются. Карты данных Так как вводимые данные считываются в вычислительную ма- шину по одному наблюдению за 1 раз, то каждая строка данных в табл. 6 перфорируется на отдельной карте в формате (12F6.0). При этом подразумевается, что на карте находятся двенадцать полей по шесть столбцов в каждом. Если в задаче более двенадцати переменных, то каждая строка продолжается на второй и третьей карте, пока последние данные не будут набиты. При этом каждая строка должна начинаться с новой карты. Составление колоды перфокарт Составление колоды перфокарт показано на рис. 26. Пример Распечатка вводимых карт для задачи примера показана на рис. 27. ПРИМЕР040600008000070000700008 3 10 9 8 24 8 4 12 3 8 22 7 9 3 2 8 9 8 16 2 2 2 7 2 5 10 5 8 23 9 17 3 2 8 6 3 2 10 9 8 29 16 7 10 5 8 28 18 9 10 27 8 28 16 И 7 8 9 8 15 8 10 2 8 27 16 1 6 8 14 14 13 7 8 9 6 18 2 7 9 8 2 19 9 7 10 5 8 27 17 3 11 9 15 20 10 9 4 10 7 9 9 4 13 10 7 21 15 8 5 16 16 16 7 6 9 10 5 23 11 8 10 5 8 27 16 17 3 2 7 6 3 3 10 8 8 23 8 4 12 3 8 23 7 9 3 2 8 21 7 15 2 2 2 7 2 9 10 26 8 27 16 8 9 2 8 26 16 7 8 6 9 18 2 7 10 5 8 26 16 (дискриминантный анализ) Рис. 27. Распечатка ввода 247
вывод Описание Вывод в основной программе дискриминантного анализа вклю- чает: 1. Средние переменных в каждой группе. 2. Объединенную дисперсионную матрицу. 3. Общие средние. 4. Обобщенный D-квадрат Махаланобиса. 5. Константу и коэффициенты для каждой дискриминантной функции. 6. Вероятность, соответствующую наибольшей дискриминант- ной функции, оцененной для каждого наблюдения. Пример Распечатка вывода для задачи примера показана на рис. 28. МОДИФИКАЦИЯ ПРОГРАММЫ Возможности программы могут быть увеличены или уменьшены путем изменения операторов размерности. Можно также пользо- ваться другими форматами вводимых данных при наличии соот- ветствующих операторов формата. Для облегчения модификации программы приняты следующие общие правила в обозначениях задачи примера: 1. Замена операторов размерности в основной программе MDISC: а) размерность массива N должна быть больше либо равна числу групп k. Так как в задаче примера задано четыре группы, то значение k равно 4; б) размерность массива CMEAN должна быть больше либо равна числу переменных т. Так как в задаче примера задано шесть переменных, то значение т равно 6; в) размерность массива XBAR должна быть больше либо рав- на произведению т на k. Для задачи примера это произведение равно 24—6X4; г) размерность массива С должна быть больше либо равна произведению (m-J-l)fe. В задаче примера это произведение равно 28= (64-1)4; д) размерность массива D должна быть больше либо равна произведению т'Хт. В задаче примера это произведение равно 36=6X6; е) размерность массивов Р и LG должна быть больше либо равна общему числу наблюдений во всех комбинациях групп t. Для задачи примера эта сумма равна 30 = 84-74-74-8; ж) размерность массива X должна быть больше либо равна общему числу данных, которое равно произведению t X т. В при- мере это произведение равно 180=30X6. 2. Изменение оператора формата ввода в основной программе MDISC. 248
ДИСКРИМИНАНТНЫИ АНАЛИЗ .............ПРИМЕР ЧИСЛО ГРУПП 4 ЧИСЛО ПЕРЕМЕННЫХ 6 РАЗМЕР ВЫБОРКИ ГРУППА ГРУППА 1 СРЕДНИЕ 7.87500 7,50000 4.62500 7.25000 18.50000 8.87500 ГРУППА 2 СРЕДНИЕ 7.14286 8.57143 9.57143 7.85714 20.14285 12.57143 ГРУППА 3 СРЕДНИЕ 7.85714 7.85714 8.85714 9.28571 17.42856 10.14286 ГРУППА 4 СРЕДНИЕ 7.75000 8.00000 6.75000 7.37500 21.37500 9.25000 ОБЪЕДИНЕННАЯ ДИСПЕРСИОННАЯ МАТРИЦА СТРОКА 1 -11.16208 —5.21497 -6.09890 —22.74855 —9.54052 19.61876 СТРОКА 2 -11.16208 11.94505 5.61813 1.91758 22.60982 10.66757 СТРОКА 3 —5.21497 5,61813 39.45938 3.93681 16.23486 9.34546 СТРОКА 4 —6.09890 - 1.91758 3.93681 9.83310 4.62156 3.83791 СТРОКА б —22.74855 22.60982 16.23486 4.62156 62.78633 30.18262 СТРОКА 6 —9.54052 10.66757 9.34546 3.83791 30.18262 29.57480 ОБШИБ СРЕДНИЕ 7.66667 7.96667 ^7.33333 7.90000 19.39998 10.13332 ОБОБЩЕННЫЙ D-КВАДРАТ МАХАЛАНОБИСА 12.78063 ДИСКРИМИНАНТНАЯ ФУНКЦИЯ 1 КОНСТАНТА КОЭФФИЦИЕНТЫ —28.49431 2.63870 2.12205 —0.17167 1.91198 0.58476 —0.40477 ДИСКРИМИНАНТНАЯ ФУНКЦИЯ 2 КОНСТАНТА КОЭФФИЦИЕНЫ —29.21017 2.61930 2.25230 —0.04816 1.88319 0.43732 —0.21784 ДИСКРИМИНАНТНАЯ ФУНКЦИЯ 3 КОНСТАНТА КОЭФФИЦИЕНТЫ —31.86435 2.74450 2.39588 —0.06457 2.13260 0.42619 —0.32718 249
ДИСКРИМИНАНТНАЯ ФУНКЦИЯ 4 КОНСТАНТА КОЭФФИЦИЕНТЫ —30.82028 2.71860 2.03937 —0.13352 1.94539 0.71677 —0.48760 ПРЕОБРАЗОВАНИЕ ФУНКЦИЙ КЛАССИФИКАЦИИ ДЛЯ КАЖДОГО НАБЛЮДЕНИЯ ГРУППА 1 ВЕРОЯТНОСТЬ, СООТВЕТСТВУЮ- НОМЕР НАБЛЮДЕНИЕ ЩАЯ НАИБОЛЬШЕЙ НАИБОЛЬШЕЙ ДИСКРИМИНАНТНОЙ ФУНКЦИИ ФУНКЦИИ 1 2 3 4 5 6 '7 8 ГРУППА 2 ж НАБЛЮДЕНИЕ 0.38065 4 0.37045 1 0.36261 1 0.44190 1 0.34454 1 0.44215 3 0.31787 2 0.29274 2 ВЕРОЯТНОСТЬ, СООТВЕТСТВУЮ- НОМЕР ЩАЯ НАИБОЛЬШЕЙ НАИБОЛЬШЕЙ ДИСКРИМИНАНТНОЙ ФУНКЦИИ ФУНКЦИИ 1 2 3 4 5 6 7 ГРУППА 3 0.51029 2 0.50060 3 0.34760 4 0.43130 3 0.44282 4 0.36407 2 0.28515 2 ВЕРОЯТНОСТЬ, СООТВЕТСТВУЮ- НОМЕР НАБЛЮДЕНИЕ ЩАЯ НАИБОЛЬШЕЙ НАИБОЛЬШЕЙ ДИСКРИМИНАНТНОЙ ФУНКЦИИ ФУНКЦИИ 1 2 3 4 5 6 7 ГРУППА 4 0.67611 3 0.46629 2 0.54636 2 0.66688 3 0.30600 2 0.33043 4 0.39005 3 ВЕРОЯТНОСТЬ, СООТВЕТСТВУЮ- НОМЕР НАБЛЮДЕНИЕ ЩАЯ НАИБОЛЬШЕЙ НАИБОЛЬШЕЙ ДИСКРИМИНАНТНОЙ ФУНКЦИИ ФУНКЦИИ 1 2 3 4 5 6 7 8 0.33727 4 0.37475 1 0.62340 4 0.45697 1 0.52175 2 0.34061 4 0.43135 4 0.27849 1 Рис. 28. Распечатка вывода (дискриминантный анализ) 250
Можно изменять только оператор формата вводимых данных. Так как данные примера состоят из однозначных и двузначных чисел, а не используют поле в шесть столбцов, как задано в про- грамме примера, то каждая строка данных может быть отперфори- рсивана на полях по два столбца. В этом случае формат изменяется на (6F2.0). В этом формате можно перфорировать шесть полей по два столбца в каждом на одной карте, начиная с первого столбца. ИНСТРУКЦИИ ПО РАБОТЕ Программа примера на дискриминантный анализ составлена как стандартная программа на Фортране. Поэтому не требуется специальных технических инструкций. Устройством данных 5 поль- зуются для ввода, а устройством данных 6 — для вывода данных. БРЕМЯ РЕШЕНИЯ 1 Время выполнения примера программы на системе IBM/360, модель 30, пользующейся для ввода с перфокарт IBM 2540 и для вывода IBM 1403, модель 3, равно 30 сек. ПРИМЕР ОСНОВНОЙ ПРОГРАММЫ дискриминантного АНАЛИЗА —MDISC > Назначение 1. Считывание карты параметров задачи и данных для дискриминантного анализа. 2. Обращение к трем подпрограммам для вычисления средних значений переменных в каждой группе, объединенной матрицы дисперсий, общего сред- него значения переменных, обобщенного D-квадрат Махаланобиса. коэффициен- тов дискриминантных функций и вероятностей, соответствующих наибольшей функции каждого случая в каждой группе. 3. Печать результатов. Примечания Число переменных должно быть больше либо равно числу групп. Требуемые функции и подпрограммы DMATX MINV DISCR Метод См. [7]. Перевод комментариев в тексте 1. Следующая размерность должна быть больше либо равна числу групп К. 2. Следующая размерность должна быть больше либо равна числу пере* менных М. 3. Следующая размерность должна быть больше либо равна произведению МхК. 4. Следующая размерность должна быть больше либо равна произведению (M + DXK. 5. Следующая размерность должна быть больше либо равна произведению М, 251
C SAMPLE MAIN PROGRAM FOR DISCRIMINANT ANALYSIS - MDISC C 1 DIMENSION N(5J с г DIMENSION CMEAN(1O> C 3 DIMENSION XDAR(50> C 4 DIMENSION СС55Э c s DIMENSION 0(100) C 6 DIMENSION P(?50>.16(250) C 7 DIMENSION XC2500} C 8 C DOUBLE PRECISION CMEAN.XBAR.'D. DET. C.V.P C 9 1 F0RMATCA4.A2.ZlZ.1215/!1415)) > 2 FORMAT(27H1DISCRIMINANT ANALYSIS......A4,A2/T9B0 NUMBER OF GROUP$ 1.7X.I3/22H NUMBER OF VARIABLES * 17/17H SAMPLE SIZES../12X«SHGKQ 2UP) 3 F0RMATC12X.13.8X.14) U FORMAT(IHO) 5 FORMAT(12F6.0 ) 6 F0RMAK6H0GR0UP. 13.7H MEANS/(8F1 5.5) ) 7 FORMAT!1H0/25H POOLED DISPERSION MATRIX) 8 FORMATC4H0.R0W. 13/(8F15.5) ) 9 FORMAT!1HO//13H COMMON MEANS/!8F15.5)) 10 FORMAT! 1H///33H GENERALIZED MAHALANOBIS O-SQUARE. F15.5/7I) 11 FORMAT(22H0D|SCRlMINANT FUNCTION.I3/1H ,6X.27HC0NSTANT • COEFF 1ICIENTS/1H F14.5.7H ♦ ,7F14.5/!22X.7F14.5)) 12 FORMAT!1H0//6CH EVALUATION OF CLASSIFICATION FUNCTIONS FOR EACH OB 15ERVATIQN)
13 F0RMAT(6H0GR0UP.I3/19X,27HPR0BA8ILITY ASSOCIATED W1 T H, 11 X . 7H L ARG £ $ 1T/13H OBSERVATION.5X,29HLARGEST DISCRIMINANT FUNCTION,8X.1#HFUNCT 2ION NO.) 14 FORMATdH .17.20x.F8.5,20X,Г6) < 10 100 READ (97.1) PR.PR1.К.K, (NCU.I = 1.К) C 11 WRITE (99,2)PR,PR1.К,M DO 110 I«1,S 110 WRITE (99.3) I.N(I> WRITE (99,4) C 12 t=0 DO 130 ! = 1,R N1«N(I) DO 120 J«1.N1 READC97.5) (CMEAN(IJ)»IJ = 1,M) t = L + 1 N2=L-N1 DO 120 •N2 = N2*N1 1?0 X(N2)=CMEAN(IJ> 130 L3«? CALL DMAtX (K..M.N.X#XBAR,D,CMfAN) C 13 1=0 00'150 1=1.X DO 140 J«1.M L=L*1 .140 CMEAN(J)=XBAR(l) e . 150 WRITEC99.6) I.(CMEAN(J),J₽1.M) WRITE(99,7) DO 170 1=1.M L=I“M DO 160 J»1.M l«U*H
160 CMEANtJ)«о Сl> 170 WR1TEC99.8) 1.(CMEANC4).J«1.M> CAU MIN* (0.M.DET,CMEAN,C) CALI DISCR(K.M.N.X,XBAR,D.CMEAN,V.C.P,LG) C 14 WRtT<(99,9) (CMEANCI),1*1,M) t 15 WRITE(99.10) * C 10 N1H N?3M*1 00 180 1*1.К WRITE <99,11) I. (CU). J*H1.n2) N1*N1*(H*1) 180 N2*N2*CM*lt C 17 WR!TE(99.1Z; л N1*1 N2»N(1> 00 210 1*1.К WR!TE<99,13) I L*0 00 190 J*N1,N2 L*L*1 190 WRITE <99,14) L.P(Jh,lGfj) IFCI-t) 200,100*100 200 N1WN1MHW N2«N2*N(!*1) 210 CONTINUE ENO
6. Следующая размерность должна быть больше либо равна общему раз- меру выборки объединения К групп, Т (Т = 7V(1) +N(2) + ... +N(K)). 7. Следующая размерность должна быть больше либо равна общему числу данных, которое равно произведению Т X М. 8. Если требуется использовать версию этой программы для вычислений с двойной точностью, то в следующем операторе двойной точности необходимо опустить С в первом столбце. 9. С должно быть также опущено в операторах двойной точности, встре- чающихся в других программах, используемых совместно с этой программой, 10. Считывание карты параметров задачи. Д1. PR — номер задачи (может быть алфавитно-числовым); PR 1 — номер задачи (продолжение); к — число групп; М — число переменных; N — вектор длиною К, содержащий размеры выборки. 12. Считывание данных. 13. Печать среднего и объединенной матрицы дисперсии. 14. Печать общего среднего. 15. Печать обобщенного D-квадрат Махаланобиса. 16. Печать констант и коэффициентов дискриминантной функции. 17. Печать преобразования классификационной функции для каждого наблю- дения. ФАКТОРНЫЙ АНАЛИЗ ОПИСАНИЕ ЗАДАЧИ Отыскиваются главные компоненты и производится варимакс- ное вращение факторной матрицы. Используется анализ главных компонент для определения числа независимых размерностей, не- обходимых для вычисления наибольшего расхождения в исходном ряду переменных. Варимаксное вращение применяется для упро- щения столбцов (факторов), а не строк (переменных) матрицы факторов. Пример задачи на факторный анализ состоит из 23 наблюдений с девятью переменными (см. табл. 7). С целью сохранения наи- меньшего возможного числа независимых размерностей в анализ вводятся только те собственные значения (коэффициентов корре- ляции), которые больше либо равны 1.0. ПРОГРАММА Программа факторного анализа состоит из основной про- граммы FACTO, специальной программы ввода DATA и пяти под- программ из настоящего сборника научных подпрограмм: CORRE, EIGEN, TRACE, LOAD и VARMX. Возможности Возможности примера программы и требуемый для вводимых данных формат следующие: 1. Не более 35 переменных. 2. До 99 999 наблюдений. 3. Формат карт ввода данных (12 F 6.0). Таким образом, если задача удовлетворяет этим условиям, то нет необходимости преобразовывать этот пример программы. Од- 255
Т «блина 1 Пример данных для факторного анализа Наблю- дения х, х2 Х-з X, хв х, Ху х» 1 7 7 9 7 15 36 60 15 24 2 13 18 25 15 13 35 61 18 30 3 9 18 24 23 12 43 62 14 31 4 7 13 25 36 11 12 63 26 32 5 6 8 20 7 15 46 18 28 15 6 10 12 .30 11 10 42 27 12 17 7 7 6 11 7 15 35 60 20 25 8 16 19 25 16 13 30 64 20 30 9 9 22 26 24 13 40 66 15 32 10 8 15 26 30 13 10 66 25 34 И 8 10 20 8 17 40 20 80 18 12 9 12 28 11 8 45 30 15 19 18 11 17 21 30 10 45 60 17 30 14 9 16 26 27 14 31 59 19 17 15 10 15 24 18 12 29 48 18 26 16 11 11 30 19 19 26 57 20 30 17 16 9 16 20 18 31 60 21 17 18 9 8 19 14 16 33 67 9 19 19 7 18 22 9 15 37 62 11 20 20 8 11 23 18 9 36 61 22 24 21 6 6 27 23 7 40 55 24 31 22 10 9 26 26 10 37 57 27 29 23 8 10 26 15 И 42 59 20 28 нако, если задано более 35 переменных, то оператор размерности в этом примере программы должен быть изменен в соответствии с конкретной задачей. Если карты ввода данных подготавливаются в другом формате, то оператор формата в подпрограмме ввода DATA должен быть изменен. Основные правила изменения про- граммы описаны ниже. ввод Карта управления Для каждой задачи требуется одна карта управления, которая считывается основной программой FACTO. Эта карта подготавли- вается следующим образом: В данном Столбцы Содержание примере I— 6 Номер задачи (может быть алфавитно- числовым) SAMPLE 7—11 Число наблюдений 00023 12—13 Число переменных 09 14—19 Значение, используемое для ограничения 0001.0 числа собственных значений коэффициен- тов корреляции. В анализ вводятся толь- ко собственные значения, большие или равные этой-величине. (Десятичная точка должна быть указана.) 256
Нули перед первой значащей цифрой перфорировать не обя- зательно. Карты данных Так как вводимые данные считываются в вычислительную ма- шину по одному наблюдению за 1 раз, то каждая строка данных в табл. 7 перфорируется на отдельной перфокарте в формате EIGEN CORRE ото ления ( карты I данных / карта I управления FACTO Вторая задача Первая задача Подпрограммы и основная программа (включая нарты управление системой) Рис. 29. Колода перфокарт (факторный анализ) (12 F 6.0). Этот формат предусматривает двенадцать нолей по шесть столбцов на карте. Если в задаче задано более двенадцати переменных^то каждая строка данных продолжается на второй и третьей картах, пока не будут отперфорированы последние данные. Однако каждая строка данных должна начинаться с новой карты. 257
Колода перфокарт Состав колоды перфокарт показан на рис. 29. Пример Распечатка вводимых карт примера задачи показана на рис. 30. ПРИМЕР00023090001.0 7 7 9 7 15 36 60 15 24 13 18 25 15 13 35 61 18 30 9 18 24 23 12 43 62 14 31 7 13 25 36 11 12 63 26 32 6 8 20 7 15 46 18 28 15 10 12 30 11 10 42 27 12 17 7 6 11 7 15 35 60 20 25 16 19 25 16 13 30 64 20 30 9 22 26 24 . 13 40 66 15 32 8 15 26 30 13 10 66 25 34 8 10 20 8 17 40 20 30 18 9 12 28 11 8 45 30 15 19 11 17 21 30 10 45 60 17 30 —9 16 26 27 14 31 59 19 17 10 15 24 18 12 29 48 18 26 11 11 30 19 19 26 57 20 30 16 9 16 20 18 31 60 21 17 9 8 19 14 16 33 67 9 19 7 18 22 9 15 37 62 11 20 8 11 23 18 9 36 61 22 24 6 6 27 23 7 40 55 24 31 10 9 26 26 10 37 57 27 29 8 10 26 15 11 42 59 20 28 Рис. 30. Распечатка ввода (факторный анализ) ВЫВОД Описание Вывод в примере задачи на факторный анализ включает: 1. Средние. 2. Стандартные отклонения. 3. Коэффициенты корреляции. 4. Собственные значения. 5. Накопленные процентные отношения собственных значений. 6. Собственные векторы. 7. Матрицу факторов. 8. Изменение матрицы факторов для каждого цикла итерации. 9. Повернутую матрицу факторов. 10. Проверку на совместимость. Пример Распечатка вывода для примера программы показана на рис. 31. 258
ФАКТОРНЫЙ АНАЛИЗ ПРИМЕР ЧИСЛО СОБЫТИЙ 23 ЧИСЛО ПЕРЕМЕННЫХ 9 СРЕДНИЕ 9.30435 12.60870 23.00000 18.00000 12.86957 34.82608 54.00000 19.39130 25.13043 СТАНДАРТНЫЕ ОТКЛОНЕНИЯ 2.70412 4.59978 5.33427 8.33393 3.13781 9.29149 14.87826 5.56563 6.09249 КОЭФФИЦИЕНТЫ КОРРЕЛЯЦИИ СТРОКА 1 1.00003 0.34987 0.11975 0.12102 0.21917 -0.09549 0.20901 —0.12938 0.05818 СТРОКА 2 0.34987 1.0000Э 0.41311 0.35572 -0.08243 -0.09100 0.29622 -0.32044 0.35387 СТРОКА 3 0.11975 0.41311 1.0000Э 0.41512 -0.43179 —0.08345 -0.10252 0.03215 0.27833 СТРОКА 4 0.12102 0.35572 0.41512 1.00000 -0.31288 -0.50365 0.49856 0.22539 0.59890 СТРОКА 5 0.21917 -0.08243 -0.43179 -0.31288 1.00003 -0.23000 0.03310 -0.00475 -0.30341 СТРОКА 6 -0.09549 -0.09100 -0.08346 -0.50365 —0.23003 1.00003 -0.44520 -0.25441 -0.37456 СТРОКА 7 0.20901 0.29622 -0.10252 0.49856 0.03310 -0.44520 1.00003 -0.28050 0.60124 СТРОКА 8 —0.12933 —0.32044 0.03215 0.22539 -0.00475 -0.25441 -0.28050 1.00000 0.13516 СТРОКА 9 0.05818 0.35387 0.27833 0.59393 0.30341 -0.37456 0.60124 0.13516 1.00033 СОБСТВЕННЫЕ ЗНАЧЕНИЯ 2.94989 1.64368 1.55515 1.06579 НАКОПЛЕННЫЕ ОТНОШЕНИЯ СОБСТВЕННЫХ ЗНАЧЕНИЙ 0.32777 0.51040 0.68319 0.'80161 СОБСТВЕННЫЕ ВЕКТОРЫ ВЕКТОР 1 0.16437 0.34836 0.28797 0.49661 -0.16806 -0.32922 0.39935 0.01287 0.47518 ВЕКТОР 2 0.34837 0.06552 -0.44647 -0.11893 0.61210 -0.26428 0.38860 -0.24845 -0.06014 ВЕКТОР 3 -0.29899 -0.46825 -0.23534 0.17377 0.14468 -0.43545 0.01881 0.61587 0.12470 ВЕКТОР 4 0.54441 0.16909 0.38289 0.04163 0.30537 -0.16163 -0.43411 0.40283 -0.23789 259
МАТРИЦА ФАКТОРОВ (4 ФАКТОРА) ПЕРЕМЕННАЯ 1 0.28232 0.44663 —0.37286 0.56203 ПЕРЕМЕННАЯ 2 0.59831 0.08400 —0.58394 0.17457 ПЕРЕМЕННАЯ 3 0.49460 —0.57240 —0.29348 0.39528 ПЕРЕМЕННАЯ 4 0.85293 —0.15248 0.21671 0.04297 ПЕРЕМЕННАЯ 5 -0.28865 0.78475 0.18043 0.31525 ПЕРЕМЕННАЯ 6 -0.56544 —0.33882 —0.54304 —0.16686 ПЕРЕМЕННАЯ 7 0.68590 0.49821 0.02345 —0.44816 ПЕРЕМЕННАЯ 8 0.02211 —0.31853 0.76803 0.41587 ПЕРЕМЕННАЯ 9 0.81614 —0.07710 0.15551 —0.24559 ИТЕРАЦИОННЫЙ ЦИКЛ О 1 2 3 4 5 6 7 8 9 10 11 12 ДИСПЕРСИИ 0.211288 0.336138 0.397022 0.403005 0.405177 0.405529 0.405582 0.405589 0.405590 0.405589 * 0.405589 0.405589 0.405589 ПОВЕРНУТАЯ МАТРИЦА ФАКТОРОВ (4 ФАКТОРА) ПЕРЕМЕННАЯ 1 0.05498 0.07183 —0.05578 0.85017 ПЕРЕМЕННАЯ 2 0.29329 —0.39653 —0.35581 0.60550 ПЕРЕМЕННАЯ 3 0.05114 —0.82494 0.15068 0.32984 ПЕРЕМЕННАЯ 4 0.74041 —0.41401 0.24580 0.13972 260
ПЕРЕМЕННАЯ 5 —0.09091 0.80662 0.13525 0.39228 ПЕРЕМЕННАЯ 6 —0.68286 —0.21579 —0.44983 —0.20503 ПЕРЕМЕННАЯ 7 0.86997 0.18299 —0.34918 0.08830 ПЕРЕМЕННАЯ 8 0.03602 —0.05500 0.91376 —0.15962 ПЕРЕМЕННАЯ 9 0.80532 —0.32759 0.00994 —0.02380 ПРОВЕРКА НА СОВМЕСТИМОСТЬ ПЕРЕМЕННАЯ 1 2 3 4 5 6 7 8 9 НАЧАЛЬНАЯ 0.73409 0.73649 0.81464 0.79955 0.83109 0.75725 0.92007 0.86476 0.75652 КОНЕЧНАЯ РАЗНОСТЬ 0.73408 0.00001 0.73648 0.00001 Q.81463 0.00001 0.79955 0.00001 6.83108 0.00001 0.75/24 0.00001 0.92006 0.00001 0.86475 Q.00001 0.75651 0.00001 Рис. 31. Распечатка вывода (факторный анализ) МОДИФИКАЦИЯ ПРОГРАММЫ Возможности программы могут быть как увеличены, так и уменьшены изменением операторов размерности. Могут вводиться данные в других форматах при условии обеспечения соответст- вующим оператором формата. Для облегчения модификации про- граммы приняты следующие общие правила в обозначениях nf т- мера задачи. 1. Изменения операторов размерности в основной программе FACTO: а) размерность массивов В, D, S, Т и XBAR должна быть боль- ше либо равна числу переменных т. Так как й примере девять переменных, то значение т равно 9; б) размерность массива V должна быть больше либо равна произведению tn X Для примера задачи это произведение равно 81=9X9; в) размерность массива R должна быть больше либо равна (т 4- 1)т П ле (9 + 1)9 ——. Для примера задачи это число равно 45= ------------------ 2. Изменения в операторах формата ввода специальной под- программы ввода DATA. Можно изменять только оператор формата вводимых данных. Так как данные примера состоят либо из одной, либо из двух цифр, то вместо поля в шесть столбцов, как это сделано в примере Заказ Кв 517 261
задачи, каждая строка данных может быть отперфорирована в по- лях из двух столбцов. В этом случае формат изменяется на (9F2.0). Этот формат состоит из девяти полей по два столбца в каждом, которые начинаются с первого столбца. . Специальная подпрограмма ввода ДАТА обычно составляется j пользователем для обеспечения ввода различных форматов в раз- | личных задачах. Пользователь может изменять эту подпрограмму | для выполнения проверки вводимых данных, преобразования дан- | ных и т. п. j ИНСТРУКЦИИ ПО РАБОТЕ 1 Пример программы для факторного анализа является стандарт- j ной программой на Фортране. Специальных инструкций не тре- буется. Устройство 5 используется для ввода, а устройство 6 — для вывода. СООБЩЕНИЕ ОБ ОШИБКАХ Если число факторов, выбранных для вращения, равно едини- це или нулю, то печатается следующее сообщение: * ONLY —FACTOR RETAINED. NO ROTATION. : Программа пропускает вращение и переходит к следующей за- даче, если она имеется. ВРЕМЯ РЕШЕНИЯ j Время выполнения этого примера программы на системе 5 IBM/360, модель 30, пользующейся IBM 2540 для ввода с перфо- карт и IBM 1403, модель 3, для вывода, равно 50 сек. * ПРИМЕР ПРОГРАММЫ ДЛЯ ФАКТОРНОГО АНАЛИЗА — FACTO / Назначение ; 1. Считывание карты параметров задачи. 2. Обращение к пяти подпрограммам для выполнения выбора главных ком-* понент и варимаксного вращения факторной матрицы. 3. Печать результатов. Примечания Нет. Требуемые функции и подпрограммы CORRE (которая в свою очередь обращается к подпрограмме DATA) EIGEN TRACE LOAD VARMX Метод См. [7]. 262
C SAMPLE MAIN PROGRAM FOR FACTOR ANALYSIS - FACTO C 1 DIMENSION В(35).0(55)f3(35) .XBAR(35).T<35) C 2 DIMENSION v<1«2&) C 3 DIMENSION R(6S0> < 4 DIMENSION TV<5l) C 5 c double PRECISION xbar.s.v.r.d.b.t.tv C 6 * FORMAT(J1H1FACTOR ANALYSIS......A4.A2//ЗХ,12HNQ, OF CASES.4X,16/ЗД^ 116HN0. OF VARIABLES.16/) 2 FORMAT<6H0MEANS/(BF15.5)) 3 FORMAT(20H0STANDARD OEVI AT 10N8/<8F15.5)> 4 FORMAT(25HOCORREIATION COEFFICIENTS) 5 FORMAT(4HQR0W13/(1 OF 12•5)) 6 FORMAT(1H0/12H EIGENVALUES/(10F12.5)) 7 FORMAT(37HOCUMULAT IVE PERCENTAGE OF EIGENVALUES/(10F12.5)| 8 FORMAT(1 HO/13H EIGENVECTORS) 9 FORMAT(7H0VSCTOR 13/(1 OF 12•5)) 10 FORMAT(1H0/16H FACTOR MATRIX (.I3.9H FACTORS)) 11 FORMAT(9H0VARIABLE 13//1.0F12.5) ) 12 FORMAT(1HO/10W ITERATION.7X,9HVARIANCES/8h CYCLE) 13 FORMAT(16•F20•6) 14 FORMAT(TH0/24H ROTATED FACTOR MATRIX (13,9H FACTORS)) 15 F0RMAT(9H0VARIABLEI3/(10F12.5)) 16 FORMATC1H0/23H CHECK ON COMMUNALITlf$//9H VARIABLE,?X,8HpRIGINAI^i 12X•5HFINAL,1 OX,1OHDIFFERENCE) 17 FORMAT(I 6,3F18.5) 18 FORMAT(A4.A2,I5U2.F6.0) 19 FORMAT(5H00NLY,12.ЗОН FACTOR RETAINED. NO ROTATION) i/3 9*
500 READ (97,18) PR•PR1•N•M,CON C 8 WRITE(99,1) PR.PR1.N,» 10 = 0 X = 0.0 CALL CORRE<N.M,10, X, X В AR, S. V, R. 0 • В, T1 C • WRITE (99,2) (XBAR(J),J = 1,M) ( 10 WRITE (99,3) (8<J),J=1,M) t 11 WRITE (99,4) 00 120 1=1,M 00 -110 J = 1 ,M IF(I-J) 102,104.104 102 L= I ♦ < J * J - J )/2 60 TO 110 <04 l=J*(!*!•!)/2 110 OCJ)«R(L> 120 WRITE (99,5) t, (DCJ’T, J®1 ,M> MV = 0 CALL EIGEN (R.V.M.MV) CALL TRACE (M<R,CON,K.0) < 12 00 130 1=1,к L»t♦(!♦1-1>/Э 130 S(I)xR(O WRITE (99,6) (S(J)»J=1,K> t 13 (WRITE (99,7) (O(J),J«1,K1 € 14 WRITE (99,8) 1 = 0 00 150 J = 1 00 140 1=1.№ L = L*1
140 0( I)=V(I) 150 WRITE (99.9) J . ( 0 ( 1 >. I =1 . M ) CALL LOAD (M.K.R.V) C 15 WRITE (99.10) К 00 180 1=1.M 00 170 J=1.К L = M*(J-1> *1 170 0(J)=V(L> 180 WRITE (99.11) I .(DCJ).J=1,K) IF(K-1) 185,185.188 185 WRITE (99.19) к GO TO 100 188 CALL VARMX (M,К.V.NC,TV.0.T.D) C 16 NV = NC *1 WRITE (99,12) 00 190 1=1, NV NC= I -1 (90 WR I Tf (99.13) мС.T V< 1 1 C I? WRIT? (99,14) к 00 220 1=1,M 00 21» J =1.К ISM*(J - 1 ) ♦! 210 S(J ) =v(L) 220 write (99.15) 1 .(S(J).J = 1.к) t 18 WRITE (99.16) DO 230 1=1.M 230 WRITE (99.17) 1.8(1).T(I) oil» GO ’С Ю0 END 9 Заказ № 517
Перевод комментариев в тексте 1. Следующие размерности должны быть больше либо равны числу пере* менных М. 2. Следующая размерность должна быть больше либо равна произведению М*М. ' 3. Следующая размерность должна быть больше либо равна (М+1)*М/2. 4. Следующая размерность должна быть больше либо равна 51. 5. Если требуется версия этой подпрограммы с двойной точностью, то в следующем операторе двойной точности в первом столбце С должно быть опу- щено. 6. С должно быть также опущено из операторов двойной точности, появ- ляющихся в других программах, используемых совместно с данной программой» 7. Считывание карты параметров задачи. 8. PR — номер задачи (может быть алфавитно-числовым); PR1—номер задачи (продолжение); N — число событий; М — число переменных; CON — константа, служащая для определения числа вводимых собствен- ных значений. 9. Печать средних. 10. Печать стандартных отклонений. 11. Печать коэффициентов корреляции. 12. Печать собственных значений. 13. Печать накопленных процентных отношений собственных значений. 14. Печать собственных векторов. 15. Печать матрицы факторов. 16. Печать отклонений. 17. Печать повернутой матрицы факторов. 18. Печать совместимости. ТЕСТ КОЛМОГОРОВА—СМИРНОВА ОПИСАНИЕ ЗАДАЧИ Эта программа решает задачу (а), к какой плотности вероят- ности относится данная выборка, (б) и не сделаны ли две раз- личные выборки из одной и той же совокупности. Другими сло- вами, в случае одной выборки функция плотности, полученная для данной выборки, сравнивается с одной или несколькими теорети- ческими функциями плотности, которые могут быть нормальными, и (или) экспоненциальными, и (или )Коши, и (или) равномер- ными, и (или) указанными пользователем. В случае двух выборок одна функция плотности сравнивается с другой. Из указанного выше сравнения выводится статистика. В случае одной выборки эта статистика оценивает вероятность того, что статистика может быть такой же, как полученная величина, или больше нее, если верна гипотеза, что действительная (выборочная) и теоретическая функции распределения совпадают. Другими словами, если вероят- ность получена, например, равной 0.40, то отбрасывание гипотезы о равенстве функций распределения будет ошибочным в 40 слу- чаях из 100. При двух выборках проверяется гипотеза о равенстве двух действительных (выборочных) функций распределения. Эта вероятность вычисляется с помощью асимптотических фор- мул. Это означает, что размер вводимой выборки должен быть до- статочно большим. В литературе рекомендуется выборка размером 266
более 100. В связи с этим следует рассмотреть «примечание к под- программе SMIRN. Заметим также, что дополнительные задачи возникают при од- ной выборке, если параметры рассматриваемого непрерывного рас- пределения оцениваются по выборке. Эти задачи были рассмот- рены Лиллиефорсом (см. ссылки, данные к описанию KOLMO). ПРОГРАММА Описание Эта программа состоит из основной программы KOLM и четы- рех подпрограмм из настоящего сборника научных программ: KOLMO, KOLM2, SMIRN и NDTR. Возможности Программа позволяет проверять две выборки, каждая из кото- рых содержит не более 500 наблюдений. При изменении этой про- граммы для большего числа наблюдений необходимо следовать инструкциям, приведенным ниже. ВВОД После двух карт подготовки (1, 2) в каждой работе имеются две карты управления и карты данных (3—5). 1. Карта подготовки (знаки минус в 1—4 столбцах). 2. Наименования функций распределения (нормальные, экспо- ненциальные, Коши, равномерные и заданные пользователем) про- биваются в заданном порядке. Они размещаются в середине полей из 16 цифр на одной карте. Например, «normal» пробивается в столбцах 1—16, «exponential» — в столбцах 17—32 и т. д. 3. Карта управления работой (знаки минус в 1—4 столбцах). 4. Карта управления программой. Каждая работа требует одной карты управления работой, опре- деляемой следующим образом: Столбцы Содержание Для примера программы 1—20 Название (алфавитно-числовое) Uniform test (работа 1) Uniform Gauss Test 21 (работа 2) 1—проверка одной выборки 1 (работа 1) 22 2 — проверка двух выборок 2 (работа 2) Оставить пробел для проверки одной вы- борки 0 — считать обе выборки (проверка двух выборок) 0 (работа 1) 1 —считать только одну выборку и 1 (работа 2) сравнить с первой выборкой, считан- ной на предыдущей работе 9* 267
23 0 — выборка не печатается 0 (работа 1) 1 — печатается упорядоченная выборка 1 (работа 2) (F 10.3, десять на строке) (Остаток этой карты управления имеет отношение к проверке одной выборки.) 24 0 — не сравнивать с нормальной функ- 1 (работа 1) цией распределения 1—сравнить с нормальной функцией распределения 25—29 и —среднее нормальной функции распре- 0.5 (работа 1) деления 30—34 s — стандартное отклонение нормальной 0.5 (работа 1) функции распределения 35 0 — не сравнивать с экспоненциальной функцией распределения 1 — сравнивать с экспоненциальной функ- 1 (работа 1) цией распределения 36—40 и — среднее экспоненциальной функции 0.5 (работа 1) распределения 41—45 s — стандартное отклонение экспоненци- 1.0 (работа 1) альной функции распределения 46 0 — не сравнивать с функцией распреде- ления Коши 1—сравнивать с функцией ния Коши распределе- 1 (работа 1) 47—51 и — медиана распределения Коши 0.5 (работа 1) 52—56 s — и — s первая квартиль пределения Коши функции рас- 1.0 (работа 1) 57 0 — не сравнивать с равномерным рас- пределением 1—сравнивать с равномерным распре- 1 (работа 1) делением 58—62 и — левая конечная точка равномерной 0 (работа 1) функции распределения 63—67 s — правая конечная точка равномерной 1.0 (работа 1) функции распределения 68 0 — не сравнивать с функцией распреде-0 (работа 1) ления пользователя 1—сравнивать с функцией распределе- ния пользователя 69—73 и | Параметры функции распределения 0 (работа 1) 74—78 s J пользователя 0 (работа 1) и и s полностью описаны в «Описании параметров» подпрограммы KOLMO и считываются с использованием формата (F 5.0); десятичная точка отбрасывает указание формата. 5. Данные считываются в вычислительную машину по одной выборке за 1 раз. Считывание выборки ограничивается элементом 268
данных 999 999. Новая выборка должна начинаться с новой карты. Элементы данных перфорируются на картах в формате (F 6.0), который предполагает наличие двенадцати полей по шесть столб- цов на карте; десятичная точка на карте отбрасывает указание формата. В каком-либо упорядочении выборки нет необходимости, так как программы KOLMO и KOLM 2 упорядочивают выборку. Колода перфокарт См. рис. 32. ' Рис. 32. Колода перфокарт (проверка Колмогорова—Смирнова) Пример данных См. рис. 33. вывод Описание Печать результатов программы KOLM выдает статистики и вы- ражения вероятностей, описываемые ниже, и идентифицирует рас- сматриваемую функцию распределения. Упорядоченные выборки печатаются по желанию. Для вывода образуются следующие позиции: 1. Метка Z, где 2=]Лп£)„ для проверки одной выборки; п — размер выборки и Dn — максимальная разность между эмпириче- ской и теоретической функцией распределения. 269
НОРМАЛЬНОЕ ЭКСПОНЕНЦИАЛЬНОЕ КОШИ РАВНОМЕРНОЕ ПОЛЬЗО- ВАТЕЛЯ ПРОВЕРКА РАВНОМЕРНОГО 1 00 1 000.500051000.5000011000 . 500001100000000001 0.377 0.260 0.172 0.688 0.581 0.290 0.514 0.472 0.204 0.976 0.018 0.326 0.795 0.837 0.870 0.686 0.288 0.555 0.737 0.427 0.931 0.745 0.092 0.843 0.231 0.806 0.753 0.263 0.804 0.458 0.508 0.928 0.994 0.608 0.702 0.743 0.005 0.951 0.664 0.425 0.570 0.596 0.444 0.302 0.817 0.183 0.746 4X833 0.282 0.201 0.662 0.167 0.043 0.750 0.117 0.953 0.665 0.411 0.477 0.164 0.692 0.683 0.867 0.054 0.518 0.624 0.083 0.882 0.540 0.301 0.953 0.006 0.458 0.694 0.041 0.995 0.604 0.666 0.561 0.367 0.156 0.630 0.377 0.589 0.139 0.536 0.963 0.956 0.068 0.801 0.199 0.985 0.113 0.816 0.880 0.931 0.670 0.640 0.805 0.073 0.196 0.516 0.336 0.371 0.197 0.843 0.288 0.139 0.242 0.200 0.025 0.349 0.870 0.080 0.652 0.190 0.275 0.939 0.161 0.514 0.636 0.190 0.416 0.786 0.973 0.767 0.845 0.168 0.400 0.888 0.726 0.365 0.652 0.632 0.923 0.844 0.761 0.969 0.965 0.073 0.751 0.851 0.3 ю 0.383 0.243 0.008 0.860 0.093 0.816 0.058 0.006 0.515 0.033 0.565 0.093 0.470 0.982 0.666 0.154 0.933 0.215 0.890 0.409 0.441 0.963 , 0.810 0.195 0.876 0.501 0.123 0.228 0.264 0.531 0.810 0.083 0.202 0.469 г ' 0.996 0.7^2 0.545 0.503 0.117 0.170 0.972 0.298 0.042 0.574 0.065 0.225' 0.766 0.570 0.520 0.996 0.292 0.790 0.111 0.556 0.337 0.012 0.042 0.143 0.482 0.607 0.302 0.353 0.397 0.206 0.662 0.119 0.754 0.450 0.918 0.453 0.463 0.699 0.022 0.842 0.859 0.577 0.725 0.163 0.450 0.032 0.349 0.000 0.864 0.181 0.311 0.236 0.622 0.607 0.042 0.787 0.348 0.006 0.904 0.365 0.053 0.037 0.745 0.136 0.113 0.455 0.708 0.158 0.572 0.012 0.928 0.455 0.381 0.193 0.728 0.629 0.220 0.657 0.962 0.860 0.501 0.268 0.098 0.181 0.203 0.588 0.701 0.909 0.148 0.708 0.909 0.088 0.345 0.277 0.556 0.840 0.033 0.639 0.539 0.432 0.041 0.907 0.077 0.299 0.097 0.892 0.478 0.835 0.707 0.733 0.029 0.581 0.224 0.112 0.659 0.945 0.741 0.940 0.969 0.360 0.434 0.365 0.285 0.422 0.967 0.005 0.328 0.924 0.595 0.253 0.157 0.668 0.594 0.554 0.984 0.913 0.622 0.516 0.502 0.364 0.667 0.724 0.344 0.546 0.178 0.151 0.302 0.457 0.021 0.019 0.923 0.365 0.882 0.010 0.121 0.637 0.734 0.671 0.416 0.459 0.009 0.919 0.434 0.331 0.079 0.500 0.284 0.209 0.694 0.283 0.454 0.178 0.978 0.272 0.827 0.512 0.634 0.195 0.362 0.019 0.956 0.560 0.761 0.524 0.294 0.047 0.634 0.382 0.591 0.103 0.303 0.889 0.607 0.638 0.367 0.463 0.471 0.664 0.742 0.476 0.178 0.785 0.113 0.610 0.646 0.390 0.520 0.611 Q.988 0.431 0.699 0.312 0.580 0.672 0.810 0.814 0.597 0.256 0.164 0.679 0.603 0.504 0.595 0.033 0.846 0.783 0.079 0.430 0.868 0.343 0.244 0.376 0.052 0.990 0.381 0.371 0.801 0.467 0.592 0.348 0.759 0.422 0.697 0.388 0.055 0.836 0.518 0.585 0.842 0.793 0.177 0.926 0.964 0.450 0.022 0.085 0.311 0.102 0.816 0.973 0.494 0.208 0.803 0.948 0.462 0.242 0.287 0.545 0.698 0.269 0.339 0.607 0.594 0.102 0.266 0.677 0.668 0.913 0.462 0.562 0.207 0.188 0.264 0.895 0.991 0.893 0.442 0.615 0.709 0.722 0.950 0.208 0.696 0.304 0.557 0.605 0.617 0.256 0.984 0.595 0.715 0.936 0.178 0.141 0.153 0.654 0.544 0.376 0.363 0.793 0.492 0.812 0.447 0.376 0.231 0.644 0.263 0.785 0.341 0.982 0.829 999999 ПРОВЕРКА^РАВНО- МЕРНОГО — ГАУССА 211 —0.283 0.916 0.776 0.690 0.910 0.506 0.816 * 0.348 0.659 -0.301 0.630 -0.397 0.515 0.227 1.253 0.421 0.499 0.288 1.189 -0.264 0.099 0.051 0.411 0.951 0.273 0.154 0.861 0.937 0.446 0.702 0.451 0.035 0.515 0.770 0.559 1.053 —1.157 0.902 0.533 1.270 0.761 1.110 1.190 0.433 0.573 0.374 1.317 1.255 0.547 1.145 0.667 -0.077 0.422 -0.159 -0.037 0.088 0.406 0.849 0.898 0.372 —0.324 0.025 0.632 0.365 0.375 0.694 —0.206 0.126 -0.381 1.149 0.983 1.184 —0.011 0.653 0.266 1.035 0.536 0.936 1.177 1.644 0.782 0.198 0.222 0.445 0.714 0.607 0.374 0.341 0.790 0.302 1.075 0.204 0.436 0.887 0.234 0.874 0.048 0.938 0.733 -0.340 —0.012 0.497 0.418 0.840 0.091 0.578 0.606 —0340 0.656 0.660 0.584 0.837 0.454 0.695 0.606 0.053 —0.276 1.600 1.394 —0.038 1.173 0.762 0.642 0.185 -0.023 0.037 0.508 0.313 —0.718 -0.249 0.124 -0.096 —0.299 0.196 1.086 0.487 0.317 0.635 0.452 0.559 0.181 1.799 0.287 0.583 0.313 0.387 1.057 0.996 0.702 0.068 -0.227 0.198 0.305 -0.021 0.849 1.063 1.049 0.226 —0.297 0.930 0.828 0.884 1.217 -0.391 0.007 -0.004 1.238 0.376 0.418 1.075 0.083 -0.020 0.362 0.601 0.037 0.634 0.109 0.524 1.356 1.024 —0.602 0.763 1.261 0.302 —0.063 0.704 0.446 -0.410 0.401 0.704 1.070 —0.023 —0.064 1.087 —0.737 -0.476 1.156 0.648 0.624 - 0.257 0.643 0.147 0.719 0.174 —0.552 —0.183 0.583 0.740 0.592 -0.144 0.222 0.388 0.563 0.933 1.108 1.022 0.818 0.686 0.683 0.514 0.284 -0.280 0.358 1.203 -0.643 0.110 0.012 0.399 0.899 0.400 0.994 0.880 0.743 0.102 1.120 0.391 0.191 0.196 1.176 0.149 0.512 1.132 0.916 0.838 0.445 1.330 0.563 0.610 0.699 0.675 0.310 0.586 0.448 —0.475 0.317 0.558 0.839 -0.297 0.214 0.985 0.484 1.004 1.598 0.494 0.467 1.188 0.536 0.381 1.339 -0.011 0.064 0.113 0.619 0.604 0.687 0.622 0.297 0.203 0.378 1.313 0.829 0.422 0.078 0.057 0.143 0.868 -0.302 0.693 0.633 1.116 0.118 -0.469 0.663 0.708 0.685 0.850 0.566 0.657 1.217 0.394 0.643 —0.055 -0.000 0.881 1.163 0.520 0.787 1.493 1.366 0.801 0.301 1.384 —0.541 1.176 0.236 0.675 1.119 1.000 0.250 0.457 -0.010 0.098 0.975 0.288 0.686 0.764 0.007 0.697 0.789 0.259 0.414 0.680 0.852 0.315 0.231 0.203 1.394 0.131 0.963 0.699 0.404 -0.124 0.583 0.071 1.838 -0.313 —0.467 0.191 0.125 1.670 0.224 0.400 0.658 0.900 1.034 0.005 0.801 0.920 -0.188 0.786 0.387 1.243 0.875 0.989 0.718 -0.152 0.009 1.329 0.562 0.687 0.968 0.490 270
0.160 0.177 -0.025 —1.125 0.217 1.206 1.221 -0.145 -0.088 0.629 -0.131 0.273 0.388 0.772 1.046 0.067 0.760 0.428 0.852 0.867 0.610 0.359 1.352 0.571 -0.011 —0.205 1.084 0.009 0.917 0.438 1.050 0.616 0.884 0.954 -0.275 1.295 0.346 —1.018 1.049 0.417 1.230 1.127 1.435 0.823 -0.069 0.464 1.261 —0.179 0.812 0.537 0.875 0.190 0.707 0.857 0.094 0.176 0.916 0.406 0.204 0.494 1.709 0.133 0.460 0.828 -0.174 0.457 0.584 0.832 —0.026 1.265 -0.232 -0.373 —0.172 0.913 0.673 0.303 0.035 1.226 -0.072 0.920 1.207 -0.003 0.632 0.004 0.951 0.307 0.798 1.479 0.196 1.058 0.873 0.060 0.524 0.501 0.373 0.954 -0.072 0.988 0.351 0.053 0.248 0.430 -0.379 0.533 0.688 0.524 0.447 Г.376 -0.263 999999 -0.064 0.301 1.486 0.351 0.806 —0.374 Рис.- 33. 0.735 0.958 -0.262 / 0.332 0.963 Z= n для проверки двух выборок, где т — раз; мер второй выборки, п — размер первой выборки; Dm,n — максимальная разность между двумя эмпирическими функциями распределения. 2. Вероятность ошибочного отбрасывания гипотезы о равенст- ве функций распределения. Пример См. рис. 34. МОДИФИКАЦИЯ ПРОГРАММЫ^ 1. Возможности программы могут быть увеличены или умень- шены при помощи изменения операторов размерности. При этом следует изменить операторы DO 111 I = 1,50 и DO 117 I = 1,50 (под картой комментариев READ SAMPLE в распечатке программы). Это справедливо и в случае требования изменения формата дан- ных. Секции программы «Пример считывания» используют FOR- MAT в операторе 3, поэтому пользователь может изменить эти секции. 2. Любое изменение подпрограммы KOLMO в терминах добав- ляемых непрерывных функций распределения должно быть отра- жено в программе KOLM. Это может быть необходимым для: а) изменения размерности массива DIST (5,3), который содер- жит переключатели вызова функции распределения, и параметры и и s, используемые KOLMO; б) изменения карты заголовка функции распределения, опе- ратора 6 (FORMAT), карты READ (5,6) TIT1, которая считывает заголовки и размерности массива TIT1 (здесь 20), содержащего пять шестнадцатизначных заголовков; в) изменения секции программы от оператора 121 до 132, чтобы отразить изменения а и б. Эти операторы обращаются к KOLMO для выполнения проверки и печати результатов. 3. Распечатка имен в KOLM и их применение: D — вектор временного использования; применяется при счи- тывании выборки. DAS2 —наименование карты подготовки (.....). DASH — наименование карты управления работой (.....). 271
РАВНОМЕРНЫЙ ТЕСТ. ЗАТРЕБОВАНА ПРОВЕРКА 1 ВЫБОРКИ. РАЗМЕР 1 ВЫБОРКИ —498. ГИПОТЕЗА, ЧТО ВЫБОРКА ИЗ НОРМАЛЬНОГО РАСПРЕДЕЛЕНИЯ СО СРЕДНИМ 0.5000 И ДИСПЕРСИЕЙ 0.2500, МОЖЕТ БЫТЬ ОТБРОШЕНА С ВЕРОЯТНОСТЬЮ 0.0 ОШИБКИ. СТАТИСТИКА Z РАВНА 0.3584Е 01 ДЛЯ ЭТОЙ ВЫБОРКИ. ГИПОТЕЗА, ЧТО ЭТА ВЫБОРКА ИЗ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕ- ДЕЛЕНИЯ СО СРЕДНИМ 0.5000 И ДИСПЕРСИЕЙ 1.0000, МОЖЕТ БЫТЬ ОТБРОШЕНА С ВЕРОЯТНОСТЬЮ 0.0 ОШИБКИ. СТАТИСТИКА Z РАВНА 0.8803Е 01 ДЛЯ ЭТОЙ ВЫБОРКИ ГИПОТЕЗА, ЧТО ЭТА ВЫБОРКА ИЗ РАСПРЕДЕЛЕНИЯ КОШИ С МЕДИА- НОЙ 0.5000 И ПЕРВОЙ КВАРТИЛЬЮ 0.5000 МОЖЕТ БЫТЬ ОТБРОШЕНА С ВЕРОЯТНОСТЬЮ 0.0 ОШИБКИ. СТАТИСТИКА Z РАВНА 0.7887Е 01 ДЛЯ ЭТОЙ ВЫБОРКИ. ГИПОТЕЗА, ЧТО ЭТА ВЫБОРКА ИЗ РАВНОМЕРНОГО РАСПРЕДЕЛЕНИЯ В ИНТЕРВАЛЕ ОТ 0.0 ДО 1.0000 ВКЛЮЧИТЕЛЬНО, МОЖЕТ БЫТЬ ОТ- БРОШЕНА С ВЕРОЯТНОСТЬЮ 0.989 ОШИБКИ. СТАТИСТИКА Z РАВНА 0.4444Е 00 ДЛЯ ЭТОЙ ВЫБОРКИ. РАБОТА С НАЗВАНИЕМ РАВНОМЕРНЫЙ ТЕСТ ОКОНЧЕНА. РАВНОМЕРНЫЙ ТЕСТ ГАУССА. ЗАТРЕБОВАНА ПРОВЕРКА 2 ВЫБОРОК. РАЗМЕР 2 ВЫБОРКИ — 492. УПОРЯДОЧЕННАЯ ПЕРВАЯ ВЫБОРКА. 0.000 0.005 0.005 0.006 0.006 0.006 0.008 0.009 0.010 0-012 0.012 0.018 0.019 0.019 0.021 0.022 0.022 0.025 0.029 0.033 0.033 0.033 0.037 0.041 0.041 0.042 0.042 0.042 0.043 0.047 0.053 0.054 0.055 0.058 0.062 0.065 0.068 0.073 0.073 0.077 0.079 0.079 0.080 0.083 0.083 0.085 0.088 0.092 0.093 0.093 0.097 0.098 0.102 0.102 О.ЮЗ 0.111 0.112 0.113 0.113 о.из 0.117 0.117 0.119 0.121 0.123 0.136 0.139 0.139 0.141 0.143 0.148 0.151 0.153 0.154 0.156 0.157 0.158 0.161 0.163 0.164 0.164 0.167 0.168 0.170 0.172 0.177 0.178 0.178 0.178 0.178 0.181 0.181 0.183 0.188 0.190 0.190 0.193 0.195 0.195 0.196 0.197 0.199 0.200 0.201 0.202 0.203 0.204 0.206 0.207 0.208 0.208 0.209 0.215 0.220 0.224 0.225 0.228 0.231 0.231 0.232 0.236 0.242 0.242 0.243 0.244 0.253 0.256 0.256 0.260 0.263 0.263 0.264 0.264 0.266 0.268 0.269 0.272 0.275 0.277 0.282 0.283 0.284 0.285 0.287 0.288 0.288 0.290 0.292 0.294 0.298 0-299 0.301 0.302 0.302 0.302 0.303 0.304 о.зп 0.311 0.312 0.326 0.328 0.331 0.336 0.337 0.339 0.340 0.341 0.343 0.344 0.345 0.348 0.348 0.349 0.349 0.353 0.360 0.363 0.364 0.365 0.365 0.365 0.365 0.367 0.367 0.371 0.371 0.376 0.376 0.376 0.377 0.377 0.381 0.381 0.382 0.383 0.388 0.390 0.397 0.400 0.409 0.411 0.416 0.416 0.422 0.422 0.425 0.427 0.430 0.431 0.434 0.434 0.441 0.442 0.444 0.447 0.450 0.450 0.450 0.453 0.454 0.455 0.455 0.457 0.458' 0.458 0.459 0.462 0.462 0.462 0.463 0.463 0.467 0.469 0.470 0.471 0.472 0.476 0.477 0.478 0.482 0.482 0.492 0.494 0.500 0.501 0.501 0.502 0.503 0.504 0.508 0.512 0.514 0.514 0.515 0.516 0.516 0.518 0.518 0.520 0.520 0.524 0.531 0.536 0.539 0.540 0.544 0.545 0.546 0.546 0.554 0.555 0.556 0.556 0.557 0.560 0.561 0.562 0.565 0.570 0.570 0.572 0.574 0.577 0.580 0.581 0.581 0.585 0.588 0.589 0.591 0.592 0.594 0.594 0.595 0.595 0.595 0.596 0.597 0.603 272
0.604 0.605 0.607 0.607 0.607 0.607 0.608 0.610 0.611 0.61S 0.617 0.622 0.622 0.624 0.629 0.630 0.632 0.634 0.634 0.630 0.637 0.638 0.639 0.640 0.644 0.646 0.652 0.652 0.654 0.657 0.659 0.662 0.662 0.664 0.664 0.665 0.666 0.666 0.667 0.668 0.668 0.670 0.671 0.672 0.677 0.679 0.683 0.686 0.688 0.692 0.694 0.694 0.696 0.697 0.698 0.699 0.699 0.701 0.702 0.707 0.708 0.708 0.709 0.715 0.722 0.724 0.725 0.726 0.728 0.733 0.734 0.737 0.741 0.742 0.743 0.745 0.745 0.746 0.750 0.751 0.752 0.753 0.754 0.759 0.761 0.761 0.766 0.767 0.783 0.785 0.785 0.786 0.787 0.790 0.793 0.793 0.795 0.801 0.801 0.803 0.804 0.805 0.806 0.810 0.810 0.810 0.812 0.814 0.816 0.810 0.816 0.817 0.827 0.829 0.833 0.835 0.836 0.837 0.840 0.842 0.842 0.843 0.843 0.844 0.845 0.846 0.851 0.859 0.860 0.860 0.864 0.867 0.868 0.870 0.870 0.876 0.880 0.882 0.882 0.888 0.889 0.890 0.802 0.893 0.895 0.904 0.907 0.909 0.909 0.913 0.913 0.918 0.919 0.923 0.923 0.924 0.926 0.928 0.928 0.931 0.931 0.933 0.936 0.939 0.940 0.945 0.948 0.950 0.951 0.953 0.953 0.956 0.956 0.962 0.963 0.964 0.964 0.965 0.967 0.969 0.969 0.972 0.973 0.973 0.976 0.978 0.982 0.982 0.984 0.984 0.985 0.988 0.990 0.991 0.994 0.995 0.996 0.996 УПОРЯДОЧЕННАЯ ВТОРАЯ ВЫБОРКА —1.157 - -1.018 - -0.737 - -0.718 - -0.643 - -0.602 - -0.552 - -0.541 - -0.476- -0.475 —0.469 - -0.467 - -0.410 - -0.397 - -0.391 - -0.381 - -0.379 - -0.374- -0.373- -0.340 —0.340 - -0.324 - -0.313 - -0.302 - -0.301 - -0.299 - -0.297 - -0.297- -0.283- -0.280 —0.276 - -0.275 - -0.264 - -0.263 - -0.262 - -0.249 - -0.232 - -0.227- -0.206- -0.205 —0.183 - -0.179 - -0.174 - -0.172 - -0.159 - -0.152 - -0.145 - -0.144- -0.131- -0.124 —0.096 - -0.088 - -0.077 - -0.072 - -0.072 - -0.069 - -0.067 - —0.064- -0.064- -0.063 —0.055 - -0.038 - -0.037 - -0.026 - -0.025 - -0.023 - -0.023 - -0.021 - -0.020- -0.012 —0.011 - -0.011 - -о.оп - -0.010 - -0.004 - -0.003 0.000 0.004 0.005 0.007 0.007 0.009 0.009 0.012 0.025 0.035 0.035 0.037 0.037 0.048 0.051 0.053 0.053 0.057 0.060 0.064 0.068 0.071 0.078 0.083 0.088 0.094 0.094 0.098 0.099 0.102 0.109 о.ио о.пз 0.118- 0.124 0.125 0.126 0.131 0.133 0.143 0.147 0.149 0.154 0.160 0.174 0.176 0.177 0.181 0.185 0.188 0.190 0.191 0.191 0.196 0.196 0.196 0.198 0.198 0.203 0.203 0.204 0.204 0.214 0.217 0.222 0.222 0.224 0.226 0.227 0.231 0.234 0.236 0.248 0.250 0.257 0.259 0.266 0.272 0.273 0.284 0.287 0.288 0.288 0.297 0.301 0.301 0.302 0.302 0.303 0.305 0.307 0.310 0.313 0.313 0.315 0.317 0.317 0.332 0.341 0.346 0.348 0.351 0.351 0.358 0.359 0.362 0.365 0.372 0.373 0.374 0.374 0.375 0.376 0.379 0.381 0.387 0.387 0.388 0.388 0.391 0.394 0.399 0.400 0.400 0.401 0.404 0.406 0.406 0.411 0.414 0.417 0.418 0.418 0.421 0.422 0.422 0.428 0.430 0.433 0.436 0.438 0.445 0.445 0.446* 0.446 0.447 0.448 0.454 0.457 0.457 0.460 0.462 0.464 0.467 0.484 0.487 0.490 0.494 0.494 0.497 0.499 0.501 0.506 0.508 0.512 0.514 0.515 0.515 0.520 0.524 0.524 0.524 0.533 0.533 0.536 0.536 0.537 0.547 0.559 0.559 0.562 0.563 0.563 0.566 0.571 0.573 0.578 0.583 0.583 0.583 0.584 0.584 0.586 0.592 0.601 0.604 0.606 0.606 0.607 0.610 0.610 0.616 0.619 0.622 0.624 0.629 0.630 0.632 0.632 0.633 0.634 0.635 0.642 0.648 0.643 0.648 0.653 0.656 0.657 0.658 0.659 0.660 0.663 0.667 0.673 0.675 0.675 0.680 0.683 0.685 0.686 0.686 0.687 0.680 0.688 0.690 0.693 0.694 0.695 0.697 0.699 0.699 0.702 0.702 0.704 0.704 0.707 0.708 0.714 0.718 0.719 0.733 0.735 0.740 0.743 0.760 0.761 0.762 0.763 0.764 0.770 0.772 0.776 0.782 0.786 0.787 0.789 0.790 0.798 0.801 0.801 0.806 0.812 0.816 0.818 0.823 0.828 0.828 0.829 0.832 0.837 0.838 0.839 0.840 0.849 0.849 0.850 0.852 0.852 0.857 0.858 0.861 0.867 0.868 0.873 0.874 0.875 0.875 0.880 0.881 0.884 0.884 0.887 0.898 27а
0.899 0.900 0.902 0.910 0.913 0.916 0.916 0.916 0.917 0.920 0.920 0.930 0.933 0.936 0.937 0.938 0.951 0.951 0.954 0.954 0.958 0.963 0.963 0.968 0.975 0.983 0.985 0.988 0.989 0.994 0.996 1.000 1.004 1.022 1.024 1.034 1.035 1.046 1.049 1.049 1.050 1.053 1.058 1.063 1.067 1.070 1.075 1.075 1.084 1.086 1.087 1.108 1.110 1.116 1.119 1.120 1.125 1.127 1.132 1.145 1.149 1.156 1.163 1.173 1.176 1.176 1.177 1.184 1.188 1.189 1.190 1.233 1.206 1.207 1.217 1.217 1.221 1.226 1.230 1.238 1.243 1.253 1.255 1.261 1.261 1.265 1.270 1.295 1.313 1.317 1.329 1.330 1.339 1.352 1.356 1.366 1.376 1.384 1.394 1.394 1.435 1.799 1.451 1.838 1.479 1.486 1.493 1.598 1.600 1.644 1.670 1.709 ГИПОТЕЗА, ЧТО ОБЕ ВЫБОРКИ ИЗ ОДНОЙ СОВОКУПНОСТИ, МОЖЕТ БЫТЬ ОТБРОШЕНА С (АСИМПТОТИЧЕСКОЙ) ВЕРОЯТНОСТЬЮ ОШИБ- КИ 0.000. СТАТИСТИКА Z РАВНА 0.2590Е 01 ДЛЯ ЭТИХ ДВУХ ВЫБОРОК. РАБОТА С НАЗВАНИЕМ РАВНОМЕРНЫЙ ТЕСТ ГАУССА ОКОНЧЕНА. Рис. 34. DIST — матрица 5X3. Пять элементов в столбце 1 — переключа- тели, обеспечивающие (5) функции распределения, используемые в проверке одной выборки. Столбцы 2 и 3 содержат параметры и и $ для соответствующих прове- рок. IFL — индикатор ошибки (ошибка в рабочей колоде) IER — ошибка (в KOLMO служит для обхода относящегося к ней теста). IES — ошибка (в KOLMO применяется для сообщения об ошиб- ке). 10—(переключатель (для печати выборок). IR — число выборок, считываемых в текущей работе. IS — число выборок, используемых в текущей работе (1 дли 2). К—счетчик, необходимый для печати правильного наимено- вания функции распределения для ее использования в тесте. М — размер второй выборки. N — размер первой выборки. N1 — 1 или 2 для указания числа проверяемых выборок. Р — вероятность ошибки при отбрасывании гипотезы. S2 — временное место хранения и и s при выводе. TIT1—текущее наименование функции распределения. TITLE — заголовок работы. X — выборка 1. Y — выборка 2. Z — статистика Z из KOLMO и KOLM 2. ИНСТРУКЦИИ ПО РАБОТЕ Пример программы является стандартной программой на Форт- ране. Поэтому не требуется специальных инструкций по работе. Устройство 5 служит для ввода и устройство 6 — для вывода. 274
СООБЩЕНИЯ ОБ ОШИБКАХ Следующие ошибки вызывают сообщения, которые сопровож- даются указанными действиями. 1. Не затребован ни тест для одной выборки, ни тест для двух выборок либо размер выборки более 500 — СС.21, CONTROL CARD, INCORRECT, OR SAMPLE SIZE TOO LAR- GE. JOB IGNORED. Действие: карты считываются до отыскания новой карты управ- ления работой или пока не очистится карман ввода. 2. Размер выборки менее 100 (не ошибка) — NOTE THE REMARKS CONCERNING ASYMPTOTIC RE- SULTS AND SAMPLE SIZE IN SUBROUTINE SMIRN. Действие: нет, работа продолжается. 3. Нарушено требование подпрограммы KOLMO, чтобы опреде- ленные параметры были не нулевыми или положительными, — AT LEAST ONE (S) ENTRY PARAMETER FOR THE SUBROUTI- NE KOLMO WAS INCORRECT. THE TEST FOR THE ASSOCIA- TED CONTINUOUS PDF WAS IGNORED. Действие: будут выполнены все тесты с правильными парамет- рами. 4. В случае, когда ошибка требует прерывания работы, а по- следующая задача в совокупности работ требует проверки двух выборок, причем вторая выборка сравнивается с (первой) выбор- кой, считанной в предыдущей задаче, — THIS JOB CALLS FOR THE USE OF A PREVIOUSLY READ SAMPLE, AND THE PRE- VIOUS JOB WAS IGNORED BECAUSE OF ERRORS. JOB IGNO- RED. Действие: карты считываются до отыскания новой карты уп- равления работой или пока не очистится карман ввода. 5. Отсутствует или ошибочна карта управления работой — FIRST CARD IN JOB DECK (JOB CONTROL CARD) IS INCOR- RECT. Действие: карты считываются, пока не будет найдена новая карта управления работой или не очистится карман ввода. БРЕМЯ РЕШЕНИЯ Время выполнения этой программы на системе IBM/360, мо- дель 40, использующей для ввода с карт IBM 2540 и для вывода IBM 1403, модель 3, равно 33 сек. для первой работы и 50 сек. для второй работы. ПРИМЕР ОСНОВНОЙ ПРОГРАММЫ ДЛЯ ТЕСТА КОЛМОГОРОВА—СМИРНОВА — KOLM_ Назначение 1. Считывание карты управления для проверки одной или двух выборок. 2. Считывание данных выборки и определение размеров выборок. 3. Печать результатов. 275
Примечания 4 Пользователь должен учесть замечания, данные в подпрограммах KOLMO» j KOLM2 и SMIRN, и математические описания этих подпрограмм. | Требуемые функции и подпрограммы 1 KOLMO j KOLM2 I SMIRN | NDTR * Метод | См. подпрограммы KOLMO, KOLM2 и SMIRN. j Перевод комментариев в тексте 1. Следующая размерность должна быть больше либо равна числу элемен- тов данных в двух выборках М и N *. j 2. Считывание наименования распределения и карты управления работой. | 3. Выбор управления программой. 1 4. Определение числа выборок. 1 5. Нет одной или двух выборок. 6. Считывание первой выборки. > 7. Проверка размера N. * 8. Считывание второй выборки. 9. Проверка размера М. 10. Проверка одной выборки с помощью всех затребованных распределений. 11. Вывод результатов. j 12. Вывод одной упорядоченной выборки. : 13. Проверка двух выборок. 14. Вывод двух упорядоченных выборок. СТЕПЕННОЕ ТРЕХЧЛЕННОЕ СГЛАЖИВАНИЕ ОПИСАНИЕ ЗАДАЧИ По заданному временному ряду X, константе сглаживания и трем коэффициентам уравнения предсказания данный пример за- дачи находит ряд S, полученный степенным трехчленным сглажи- ванием из временного ряда X. . | ПРОГРАММА Описание Пример программы на степенное трехчленное сглаживание со- ! стоит из основной программы EXPON и одной подпрограммы j EXSMO из настоящего сборника научных подпрограмм. Возможности Возможности примера задачи и требуемые форматы данных следующие: : 1. Не более 1000 точек фиксации данных в заданном времен- ном ряду. 2. Карты ввода данных формата (12F 6.0). ; * Комментарий 1 относится к первым двум операторам размерности. — Прим, перев. 276
SAMPl main program FOR THE KOlMOGOROV-SMlRNOV TEST-KOlt» dimension x(501).y(501) DIMENSION TITLE(5).0(12),Т1Г1С20).01 ST(5.3) ’ FORMAT(5A4.311.5(F1.0,2F5.0)) 2 FORMAT(//’СC•21• CONTROL CARD. INCORRECT, OR SAMPLE SIZE IS TQQ LA 1RGE. JOB IGNORED.*) 3 F0RMAT(12F6.0) 4 FORMAT!1H1,5A4) 5 F0RMAT(//2H A,l2. SAMPLE TEST WAS REQUESTED*! 6 F0RMAT(20A4) 7 FORMAT(//(10F10-3)) В FORMAT!//* SORTED SAMPLE ONE FOLLOWS’! 9 FORMAT!//’ THE HYPOTHESIS THAT THE SAMPLE IS FROM A(N) '.4A4. * 1 ISTRI BUT I ON ' ) TO FORMAT(//’SORTEO SAMPLE TWO FOLLOWS’) 11 FORMAT!//’ THE HYPOTHESIS THAT THE TWO SAMPLES ARE FROM THE SAME P 1OPULATION CAN BE REJECTED WITH (ASYMPTOTIC)*•/•* PROBABILITY OF BE 21 NG INCORRECT OF ’.F6.3.’. THE STATISTIC 2 TS '.E12.4,' FOR THESE 3 SAMPLES.') 12 FORMAT!//,’ THE SIZE OF SAMPLE*.13,' IS’ .14,’.') 13 FORMAT!//.' NOTE THE REMARKS CONCERNING ASYMPTOTIC RESULTS ANO SA 1MPLE SIZE IN SUBROUTINE SMIRN') 14 FORMAT!//,' AT LEAST ONE (S) ENTRY PARAMETER FOR THE SUBROUTING 1K0LM0 WAS INCORRECT.'/.’ THE TEST FQR THE ASSOCIATED CONTINUOUS PD£ 2 WAS IGNORED.*) 15 F0RMATIA4) 16 FORMAT!//,* THIS JOB CALLS FOR THE USE OF A PREVIOUSLY READ SAMPLE 1, AND THE PREVIOUS JOB WAS IGNORED BECAUSE OF ERRORS.’/* JOB IGNOR ZED. ') 17 FORMAT!//,’ FIRST CARO IN JOB DECK (JOB CONTROL CARD) IS INCORRECT 1 . ' ) 18 FORMATdH ,’ WITH MEAN•,F13.4,*AND VARIANCE*•F13.4) 19 FORMATdH ,’ WITH MEDIAN*.F13.4,’ AND FIRST QU AR I LE * • F1 3 • 4 )• 20 FORMATdH ,’ IN THE INTER VA L ’, F13.4. ’ TO’,F13.4’ INCLUSIVE*) 21 FORMATdH ,’ CAN BE REJECTED WITH PRQBABILITY’,F6.3•’ OF BEING INC ) 10RRECT. THE STATISTIC Z’,/,’ IS’.E12.4,* FOR THIS SAMPLE.’)
1 J 2? fORNATC//,* THE J08 WITH TITLE '<№>* WAS COMPLETE©.'> | C 2 msa «EAD(97,15)0A$fT PEA0(97,6)TITl C 3 j t 100 READ(97,15)DAS2 j IFCDASH-0AS2)101,102*101 j 101 WRITE(99.17) | GO TO 107 г 102 REA0(97,1)TITLE*4S,IR,10,(CBISTCI,J),J=1,3) , 1 = 1 *5) IES3O । WRITE(99,4)TITlE ^RITE(99,5)IS C 4 ; I FCIR)1 03,1 05,1 03 I 103 IF СI FL)104,115,104 , 104 WRITE(99,16) GO TO 107 105 1FCIS-1>106.109,10? 3 C 5 I 106 WRITE(99,2) ' 107 REAO(97,15)DA52 I F(0ASH-DAS2)107,108,1 07 108 IFL=1 ' <G0 TO 102 ? C 6 ; 109 N=0 •0 111 1=1,50 8EAD(97<3)D 00 111 J=1,12 I F(0(J)-999999.0)110,112,11ft I 110 N=tV1 J IFCN-501>111,106,106 I 111 X(9I)M(J) I 112 N1«1 *
У2 JTE (99. * 2)N1. Э- С 7 IF(N-100)113,113,11k 113 WRITEC99.13) 114 IF(I*-2)121•115»106 C 8 115 MsO 00 117 1=1.50 rREAD(97,3>D DO 117 j=1,12 I FCO(J>-999999*0)116,118,116 116 M = M*1 IFCM-501>117,106,10$ 117 ?(M)=D(J) 118 N1=2 WRITE (99,12)Ы,M c 9 IF(M-100)119,119,120 119 WRIT£(99.l3> 120 IF(IS-1)121.121.133 C 10 121 00 130 1=1.S IF(DI ST(I•1))130,130.122 122 CALL KOLMO < X, N, Z, P • I • 01 ST (I • 2 ) • ОIS T ( I • 3 > • 1-E R > IES=4 ER +1 £ S IF<I ER)130•124,130 123 WRITEC99.14) CD TO 136 € 11 124 K=4*I-3 URITE(99,9)Г1Т1(K),TIT1<КФ1),T1T1CK+2)-TIT1(X*3> IF(1-3)125.126,127 125 S2=DiST(T.3)**2 WRI ТЕ(99,19)01 ST(1,2).S2 GO TO 129 126 S2«DIST(I,2)-DiST(I,3>
UR I ТЕ(99.19)DI ST(1,2).52’ CO TO 129 12? IF(1-4)128,128.130 128 WRI ТЕ(99,20)OIST(1.2).OISTC1.3) 129 WRITE (9912’1 )P. I 130 CONTINUE C 12 IF(10)131.132.fit 131 WRTTE(99.8) t WR 1 TE(99•7)(X(J).Js1,N? / C 132 tF (1ES)123.136.123 133 CALL K0LM2(X.Y,N,M.Z.₽b C 14 I F( 10)134.135.134 134 WRITEC99.8) WRITE(99.7)(X(J)’.Js1.K> WRITE(99.1O) WRITEC99.7)(Y(J).J=1.MI 135 WRITE(99,11)P,; 136 !FL=O I WR I ТЕ (99,22) TI TLi. CO TO 100 END После метки 125 в операторе WRITE должна стоять ссылка на формат 18, д не 19. В операторе 132 признак комментария С должен быть опущен. Этот признак относится к комментарию 13. — Прим, перев. Таким образом, если задача удовлетворяет указанным усло- виям, то нет необходимости преобразовывать пример задачи. Од- нако, если имеется более 1000 точек фиксации данных, то для решения такой задачи необходимо преобразовать оператор размер- ности в примере основной программы. Если карты ввода данных подготовлены в другом формате, то в примере основной программы формат должен быть преобразован. Основные правила преобразо- вания программы описаны ниже. ввод ( Карта управления Для каждой задачи требуется одна карта управления, которая считывается основной программой EXPON. Эта карта подготавли- вается следующим образом: 280
В данном Столбцы Содержание примере 1— 6 Номер задачи (может быть алфавитно- числовым) SAMPLE 7—10 Число точек фиксации данных в задан- ном временном ряду 0038 11 — 15 Константа сглаживания (0.0<а<1.0) 0.1 16—25 Первый коэффициент (А) уравнения предсказания 0.0 26—35 Второй коэффициент (В) уравнения предсказания 0.0 36—45 Третий коэффициент (С) уравнения предсказания 0.0 карта управления нарты данных Последняя задачу Рис. 35. Колода перфокарт (трехчленное степенное сглаживание)' Константа сглаживания и три коэффициента должны быть от- перфорированы с десятичной точкой. Нули перед первой значащей цифрой перфорировать не обяза- тельно. Карта данных Данные временного ряда перфорируются в формате (12 F 6.0). Этот формат предполагает, что каждая точка фиксации данных перфорируется в поле, состоящем из шести столбцов по двенад- цати полей на карте. Колода перфокарт Колода перфокарт показана на рис. 35. 281
Пример Распечатка карт ввода для примера задачи показана на рис. 36. ПРИМЕР 38 0.1 0.0 0.0 0.0 430 426 422 414 413 412 409 411 417 422 430 438 441 447 4g 461 453 448 449 454 463 470 472 476 481 483 487 491 492 485 486 482 479 479 476 472 470 Рис. 36. Распечатка ввода (трехчленное степенное сглаживание) ВЫВОД Описание Вывод в примере задачи степенного трехчленного сглаживания включает: 1. Исходные и преобразованные коэффициенты. 2. Временные ряды как вводимый, так и сглаженный. Пример Распечатка вывода, для примера задачи показана на рис. 37. СТЕПЕННОЕ ТРЕХЧЛЕННОЕ СГЛАЖИВАНИЕ............ПРИМЕР ЧИСЛО ТОЧЕК ДАННЫХ 38 КОНСТАНТА СГЛАЖИВАНИЯ 0.100 КОЭФФИЦИЕНТЫ А ИСХОДНЫЕ 0.00000 ПРЕОБРАЗОВАННЫЕ 484.80176 В С 0.00000 0.00000 1.71309 0.04166 ВВЕДЕННЫЕ ДАННЫЕ СГЛАЖЕННЫЕ ДАННЫЕ (ПРЕД- СКАЗАННЫЕ) (Продолжение) 430.00000 480.00000 449.00000 454.10522 420.00000 426.ООО00 454.00000 455.80713 422.00000 $2.00000 403.00000 458.54614 419.00000 418.00000 470.00000 463.30518 414.00000 414.29980 472.00000 469.06445 413.00000 410.23950 476.QQQQ0 474.09521 412.00000 407.08960 481.00000 479.11035 409.00000 404.66797 483.О00ОО 484.38623 411.00000 402.22363 487.00000 488.94629 417.00000 401.25049 491.00000 493.50854 422.00000 402.64575 492.00000 498.05444 430.00000 405.61621 485.00000 501.66992 438.00000 410.71338 486.QQOOO 502.12549 441.00000 417.46948 482.00000 502.44434 447.00000 423.99829 479.00000 501.16724 455.00000 431.18286 479.00000 498.92749 461.00000 439.43359 J 476.О00ОО 496.84155 453.00000 447.87866 | 472.00000 494.00806 448.00000 452.21558 | II 470.00000 490.30420 Рис. 37. Распечатка вывода (трехчленное степенное сглаживание) 282
МОДИФИКАЦИЯ ПРОГРАММЫ Возможности программы могут быть увеличены или уменьшены путем изменения операторов размерности. Вводимые данные могут быть в других форматах при обеспечении формата требующимися операторами. Для облегчения модификации программы приняты следующие правила в обозначениях примера задачи. 1. Изменения в операторах размерности основной программы EXPON: Размерность массивов X и S должна быть больше либо равна числу точек фиксации данных во временном ряду NX. Так как в примере 38 точек фиксации данных, то значение равно 38. 2. Изменение оператора формата в основной программе EX- PON. Может быть изменен только оператор формата для вводимых данных. Так как данные представлены трехзначными числами и поле в шесть столбцов не используется, то каждая точка фикса- ции данных может быть перфорирована на поле из трех столбцов по 24 поля на карте. В этом случае формат будет изменен на (24 F 3.0). ИНСТРУКЦИИ ПО РАБОТЕ Пример программы на степенное трехчленное сглаживание яв- ляется стандартной программой на Фортране. Специальных инст- рукций по работе не требуется. Для ввода пользуются устройст- вом 5, а для вывода — устройством 6. ВРЕМЯ РЕШЕНИЯ Время выполнения примера программы на системе IBM/360, модель 30, при использовании для ввода с перфокарт IBM 2540 и для вывода IBM 1403, модель 3, равно 12 сек. ПРИМЕР ПРОГРАММЫ СТЕПЕННОГО ТРЕХЧЛЕННОГО СГЛАЖИВАНИЯ — EXPON Назначение !♦ Считывание карты параметров задачи и временного ряда. 2. Обращение к подпрограмме EXSMO для сглаживания временных рядов. 3. Печать результатов. Примечания Константа сглаживания, указанная в параметрах задачи, должна быть больше нуля, но меньше единицы для получения разумных результатов. Требуемые функции и подпрограммы EXSMO Метод См. [13]. 283
C SAMPLE HAIN PROGRAM FOR TRIPLE EXPONENTIAL.SMOOTHING- EXPON C 1 DIMENSION X(1000).S(1000) 1 FORMAT! A4,A2,14, F5«jQ,3F10*0) 2 FORMATC12F6.0) 3 FORMAT(34H1TRIPLE EXPONENTIAL SMOOTHING.....A4.A2//22H NUMBER OF 1DATA POINTSИ6/19Н SMOOTHING CONSTANT»F9.3/) 4 FORMAT(13H0C0EFFICIENTS.9X. 1 HA«14'X, 1H0.14X, 1 HC) 5 FORMAT(9H00RIGINAL, Ft9L»8,2F15.5) 6 FORMAT(8HOUPOATEO.F20.5,2F15.57) 7 FORMAT! 1 НО. 27X . 13HSMQ0T.HEP DATA/7X»10H INPUT DATA,12X.10H(FORECAST) 1) 0 FORMAT(F17.5,§X»F15»5) C 2 1.00 READ (97,1) PR.PR1 .NX,AL»A,0,0 C 3 WRITE(99>3) PR.PR1»NX»AL 6 4 WRITE (99,4) WRITE(99t5) A»B<C 6 5 READ (97,2) (X! I ),1 = 1,NX) CALL EXSMO !X,NX,AL,A>8,C,S> 6.6 WRITE (99,6) A,B,C C ? WRITE (99,7) DO 200 i=1.NX 200 WRITE (99,8) X(D*$(I) GO TO 100 END Перевод комментариев в тексте 1. Следующая размерность должна быть больше либо равна числу точек фиксации данных в заданном временном ряду. 2. Чтение карты параметров задачи. 3. PR — номер задачи (может быть алфавитно-числовым); PR1 — номер задачи (продолжение); NX — число точек фиксации данных во временном ряду; AL — константа сглаживания; 281
А, В, С — коэффициенты уравнения предсказывания. 4, Печать исходных коэффициентов. 5. Считывание данных временного ряда. 6. Печать коэффициентов преобразования. 7. Печать введенных и сглаженных данных. СПЕЦИАЛЬНЫЕ ПОДПРОГРАММЫ, ПРИМЕНЯЕМЫЕ В ПРИМЕРАХ ПРОГРАММ Специальная подпрограмма, составленная пользователем — BOOL Эта специальная подпрограмма иллюстрирует написание внешней подпро- граммы SUBST. Если различные булевские выражения служат для различных задач в одном и том же решении программы, то необходимо протранслировать различные под- программы с соответствующими булевскими выражениями под различными наименованиями. При этом данные подпрограммы должны быть определены оператором EXTERNAL в основной программе, вызывающей подпрограмму SUBST. Тогда в каждой задаче подпрограмма будет вызвана с записью ее истинного наименования в списке аргументов. с user-supplied special subroutine - bool SUBROUTINE BOOL(R.T) DIMENSION Rd) TsR(1)*R(2) RETURN END ПРИМЕР ПОДПРОГРАММЫ ВВОДА DATA Назначение Считывание наблюдения (М значений данных) с устройства ввода. Эта подпрограмма вызывается подпрограммой CORRE и должна быть со- ставлена пользователем. Если размер и размещение полей данных меняются от задачи к задаче, то эта подпрограмма должна быть заново протранслирована с надлежащим оператором формата* Обращение CALL DATA (М, D) Описание параметров М — число переменных в наблюдении. D — выводимый вектор длиною М, содержащий данные наблюдения. С SAMPLE INPUT SUBROUTINE - DATA: SUBROUTINE DATA (M.D| , DIMENSION 0(1) 1 FORMAT ( 1 Z fb . 0 )/ C 1 READ (97.1) (D( I ) . Id ,M); C 2 WRITE <13) <D(I),la1,M) RETURN fNO 10 з.хаэ M 617 285
Примечания Тип преобразования, указанный в формате, должен быть либо Е, либо F. Требуемые функции и подпрограммы Нет. Перевод комментариев в тексте 1. Считывание наблюдения с устройства ввода. 2. Введенные данные записываются на логическую ленту 13 для анализа остатков, выполняемого в примере задачи множественной регрессии. ПОДПРОГРАММА HIST Назначение Распечатка гистограммы частот относительно интервалов. Обращение CALL HIST (NU, FREQ, IN) Описание параметров NU — номер гистограммы (не более трех цифр). FREQ — вектор частот. IN —число интервалов и длина FREQ (не больше 20). Обычно FREQ (1) содержит частоту тех значений, которые меньше ниж- ней границы, a FREQ (IN) содержит частоту тех значений, кото- рые больше верхней границы. Примечания Частоты должны быть положительными числами. Требуемые функции и подпрограммы Нет. Метод Определяется наибольшая частота и при необходимости применяется мас- штабирование. Перевод комментариев в тексте 1. Печать заголовка и вектора частот. 2. Поиск наибольшей частоты. 3. При необходимости — масштабирование. 4. Очистка поля вывода пробелами. 5. Помещение частоты в каждый интервал. 6. Печать строки частот. 7. Образование констант. 8. Печать номеров интервалов. ПОДПРОГРАММА PLOT Назначение Вычерчивание отдельных взаимозависимых переменных относительно ба* зовой переменной. Обращение CALL PLOT (NO, A, N, М, NL, NS) Описание параметров NO — номер чертежа (не более трех цифр). А — матрица вычерчиваемых данных. Первый столбец представляет базовую переменную, а последующие столбцы — взаимозависи- мые переменные (не более 9). N — число строк в матрице А. М — число столбцов в матрице А (равно общему числу переменных) не более 10. NL — число строк в чертеже. Если указано 0, то используется 50 строк. 286
SUBROUTINE HlSTtNU.FREQ.IN) DIMENSION JOUT(20)•FREQ(20J 1 FQRMAT(6H EACH ,A1,8H EQUALS .12.7И POINTS./) 2 FORMATCI6.4X.20C4X.A1)> 5 FORMAT(9HOINTERVAL.4X«19(12»3X).121 * .FORMAT(1H1,47X,11H HISTOGRAM ,131 5 FORMAT(10HOFREQUENCY,20l5) 6 FORMATION CLASS) 7 FORMATC113H------*-----*—--------------------------------- .....................................,...........................) 8 FORMAT(1H ) 9 FORMATIA1) 10 FORMAT(1H*> REWIND 13 WRITE(IS.IO) REWIND 13 READ(l3,9) К REWIND 13 WRITE <13.8)’ REWIND 13 REA0C13.9) NOTH REWIND 13 C 1 WRITE(99.$> NU 00 12 1=1,IN 12 JOUT( DsFREQQ ) WR I ТЕ (99,5) C JOLIT ( I ) , I a1, in) WRITEC99.7) C 2 FMAX=0.0 00 20 1=1•IN IF(FREO(I)-FMAX) 20,20,IS 15 FMAX=FREQ(I) 20 CONTINUE c 3 - В FORMAT 7 должно быть 113 черточек. 10*
J SC AL = 1 I F ( FMAX-r50.0 ) 40.40,30 50 JSCAL»(FMAX*49.0)/50.0 WRI ТЕ(99,1)К.J 5 С Al C 4 40 DO 50 1=1 , I !9 50 JQUT(I)=N0TK C S VAX=FMAX/FLOAT(J^CALT DO 80 l»1,MAX X=MAX-(1-11 DO 70 J=1,IN IF(FREOCJ)/FfcQAT(JSCAl)-X) 70.60.60 60 JOUT(J)=K 70 C0NTINU8 I XэХ*FIОAT(JSCAL> C 6. &O ИЯ I ТЕ (99. ?.) I x. ( JOUTC J I, j = 1 , IN) C ? DO TO 1=1.LB 90 JOUTUJe® CO WRI ТП99,7) ШЦТЕСЭЪЗ) CjQUTUWd . IN> WRITEC99.6J RETURN BNl> NS —код упорядочения базовой переменной в возрастающем порядке О — в упорядочении нет необходимости (подготовлено в возра . стающем порядке); 1 — необходимо упорядочение. Примечания Нет. Требуемые функции и подпрограммы Нет. Перевод комментариев в тексте 1. Упорядочение данных базовой переменной в возрастающем порядке. 2. Проверка NLL. 3. Печать заголовка. 288
SUBROUTINE PLOTtNO.A,N,M,NL»NS> > DIMENSION OUT(101),YPR(11),ANG(9)•AC 1) 1 FORMAT(1H1,60X,7H CHART . I3,//> ! FORMAT <1M »F11 - 4»5X,101A1) 3 FORMATdH ) FORMATdCH 123456789) 5 FORMATdOAl) i. 7 FORMATdH .16Х.Ю1Н. 1 * к 8 FORMAT(1 HO,9X,11F10.4) (Продолжение) NLL=NL REWIND 13 IF(NS)16.16,10 C 5 c 1 XSCAL=(A(N)-A(1)) / (FLOATCNLL-1)> 10 DO 15 1=1 .N C 6 DO 14 J = l ,N M1=Mf1 IF(A(I)-AC J)) 14,14,11 YMIN=A(M1Г 11 L=I-N YMAX=YMIN IL=J-N M2=M*N 00 1? K=1,M GO 40 J=M1,M2 L = L*N IF(A(J)-YMIN)28•26,26 (.L = LL*N 26 I F(A(J)-YMAX)40,40,30 F=A(L) 28 YMIN=A(J) A(L)=ACLL) GO TO 40 12 A(LL)=F 30 YMAX=A(j) 14 CONTINUE 40 CONTINUE 15 CONTINUE YSCAL=(YMAX-YMIN)/100.0 c 2 C 7 16 IF(NLL) 20,18*20 XB=A(1) 18 NLL=50 1=1 c 3 MY=M-1> 20 WRITEC99.1)NQ 1=1 c 4 45 F=I-T REWIND 13 XPR=X8*F*XSCAL WRITE(13,4X IF(A(L)-XPR) 50.50,70 REWIND 13 C 8 READC 13.5)BLANK. CAite(I), I«1.9) >0 DO 5$ IXx1,101
55 OVT(IX)LANK IF(I-NLL) 45,84.86 DO 60 J=1.MY .34 XPR=A(N) LL=l*J*N GO TO 50 JP=((A(LL)-YMIN)/YSCAL)*1.0 C 10 OUT(JP>=ANG(J) 86 WRITEC99.7) 60 CONTINUE YPR(1)=YMIN с 9 00 90 KN«1,9 WRITE(99,2)XPR,(OUT(IZ).12=1.101) 90 YPR(KN*1)=YPRCKN)*YSCAk*10.0 L=L*1 YPR(11)=YMAX 60 TO 80 WRITE(99.8)*YPR(IP).IP=1,1T> 70 WRITE(99,3) RETURN 80 1 = 1*1 END 4. Развертывание пробелов и цифр для печати. 5. Определение масштаба базовой переменной. 6. Определение масштаба для взаимозависимых переменных. 7. Определение позиции печати базовой переменной. 8. Определение взаимозависимых переменных. 9. Печать строки и очистка или перескок. 10. Печать номеров взаимозависимых переменных. ПОДПРОГРАММА MATIN Назначение Считывание управляющей карты элементов и матрицы данных с логиче- ского устройства 5*. Обращение CALL MATIN (ICODE, A, ISIZE, IROW, ICOL, IS, IER) Описание параметров ICODE — на выходе из подпрограммы ICODE будет содержать четыре цифры кода идентификации из карты параметров матрицы. А — поле данных для вводимой матрицы. ISIZE— число элементов, отведенное пользователем, для поля А. IROW— на выходе из подпрограммы IROW будет содержать размерность строки из карты параметров матрицы. ICOL — на выходе из подпрограммы ICOL будет содержать размерность столбцов из карты параметров матрицы. IS — на выходе из подпрограммы IS будет содержать код способа хранения из карты параметров матрицы: IS = 0— матрица общего вида; IS = 1 — симметрическая матрица; IS = 2— диагональная матрица. IER — на выходе из подпрограммы IER будет содержать код ошибки: IER = 0 — нет ошибок. IER = 1—ISIZE меньше числа элементов в вводимой матрице; IER = 2 — неправильное число карт данных. ♦ См. примечание на стр. 195. — Прим, перев. 290
Примечания Нет. Требуемые функции и подпрограммы LOC Метод Предполагается, что вводимая матрица состоит из карты параметров с по- следующими картами данных. Карта параметров имеет следующий формат: Столб. 1—2 — пробелы. Столб. 3—6 — до четырех цифр кода идентификации. Столб. 7—10 — число строк в матрице. Столб. 11—14—число столбцов в матрице. Столб. 15—16 —способ хранения матрицы: 0 — общий; 1 — симметричный; 2 — диагональный. Подразумевается, что карты данных имеют семь полей по десять столбцов в каждом. Десятичная точка может находиться в любом месте поля. Если деся- тичная точка отсутствует, то подразумевается, что десятичная точка нахо- дится в конце 10-го столбца поля. Перед числом в каждом поле могут стоять пробелы. Элементы данных должны набиваться построчно. Строка может пере- ходить с карты на карту, однако каждая новая строка должна начинаться с первого поля следующей карты. На картах данных для симметрической матрицы перфорируются только элементы верхней треугольной части, а для диагональной матрицы — только элементы диагонали. Для матриц, хранящихся симметричным или диагональным способом, первым элементом каждой новой строки должен быть диагональный элемент. Столбцы 71—80 в каждой карте мо- гут служить для идентификации, последовательного номера и т. п. После по- следней карты любой матрицы должна находиться карта с пробивкой 9 в первом столбце. (Распечатку подпрограммы см. на стр. 292). Перевод комментариев в тексте 1. Вычисление числа карт для данной строки. 2. Начало цикла по числу карт в строке. 3. Пропуск карт данных, если вводное поле слишком мало. 4. Вычисление номера столбца для первого поля в текущей карте. 5. Начало цикла для элементов данных внутри карты. ПОДПРОГРАММА MXOUT Назначение Производит распечатку массива любого размера на логическом устрой- стве 6 •. Обращение CALL MXOUT (ICODE, A, N, М, MS, LINS, IPOS, ISP) Описание параметров ICODE — вводимый номер кода, печатаемый на каждой странице вывода. А — наименование выводимой матрицы. N — число строк в матрице А. М — число столбцов в матрице А. MS — способ хранения: О — общий; 1 — симметричный; 2 — диагональный. LINS — число строк, печатаемых на одной странице (обычно 60). ♦ См. примечание на стр. 195. — Прим, перев. 291
SUBROUTINE MaT1N(JCODE,A,ISI ZE•1ROW,1COL,IS*IER) DIMENSION A(1) DIMENSION CARD(8) 1 FORMAT(7F1O.O) 2 FORMAT!16,214.12) IDC = 7 IER = O READ(97,2)ICODE,I ROW, LCOL.1S CALL LOC(IROW.[COL.ICNT I F(IS1 ZE-1CNT)6•7,7 6 IER=1 7 IF(1CNT)38•38*8 8 ICOLT=1COL IR0CR=1 C 1 11 1RCDS=С I COLT-1)/IDC*1 IF(IS-1)15•15•12 12 IRCDS=1 c 2 15 DO 3l K=1.IRCDS READ (97,1) (CARD(l) .1=1,100 C 3 I F < IER)16.16,31 16 L = 0 C 6 JS=(K-1)*lDC*IC0l-lC0LT*1 JE=JS*IDC-1 IF(1S-1)19•19,17 1? JE=JS IROW,1C0L.IS) (Продолжение) 5 19 DO 30 J=JS,JE IF(J-IC0L120,20*31 20 CALL LOC (IROCR, J . U OROW, tCOL* 15) L = L*1 30 AC IJ)=CARD(ll 31 CONTINUE IROCR=IR0CR*1 IF ( IROWs-IROCR > 38,35,35 35 IF(I$-1)37,36,36 36 ICOLTxICOLT-1 37 GO TO 11 33 READ(97,1)CARD(1) IF(CARO(1)-9,E9)39,40•39 39 IER=2 40 RETURN END IPOS — число позиций печати в строке (обычно 132). ISP — код расстояния между строками: 1 — для одинарного пропуска; 2 — для двойного пропуска. Примечания Нет. Требуемые функции и подпрограммы LOC 292
Метод Эта подпрограмма производит распечатку вывода массива любого размера и при любом способе хранения. На каждой странице в заголовке указывается код, размерность и способ хранения массива. Каждый столбец и строка имеют в заголовке соответствующий номер. SUBROUTINE MXOUTtICODE,A,N.M,MS.LINS» IPOS,ISP) DIMENSION A(1).B(8> I FORMAT(1H1,5X.7HMATRIX,I5.6X.I3.5H ROWS.6X.13.8H COLUMNS* * 18X,13HST0RAGE MODE •I1•8X,5HPAGE .12,/) 2 FORMAT(12X,8HCOLUMN ,7(3X,13.1 OX)) 3 FORMAT(1H ) 4 FORMAT(1H 7X.4HR0W , 13,7 С E16.6 ) > 5 FORMATdHO»7X»4HR0W ,13.7(E16.6) ) NENO=IPOS/16-1 LEND=(LINS/ISP)“2 ' IPAGE=1 10 L5TRT=1 20 WRI ТЕ(99,1)I CODE,N.M,MS.I PAGE JNT=J+NEN0-1 IPAGE=IPAGE*1 31 IFCJNT-M)33»33,32 32 JNT=M 33 CONTINUE WRITE(99,2)(J CUR,jCURsj,J NT) IF(ISP-1535.35,40 35 WRITE(99,3> 40 LTEND=LSTRT*UEND-1 00 80 L=LSTRT.LTEN& C 2 DO 55 K=1,NEND KK = K J T = J♦K-1 CALI LOC(L»JT,IJ NT»N,M,MS) B(K)=0.0 I F (IJNT)50.50•45 (Продолжение) 45 В ( К) =A (IJ NT )' 50 CONTINUE C 3 tF(JT-M)55.60.60 55 CONTINUE C 4 60 IF( I SP-1)65.65,7Q 65 WR I ТЕ ( 99,4 ) L , ( 8 ( J'J 5 • J W = 1, KK ) GO TO 75 . \ 70 WRI ТЕ(99,5)I•(B(JW),JW = 1 C 5 75 I F(N-L)85.85,80 80 CONTINUE C 6 LSTRT=LSTRT+LENO GO TO 20 C 7 85 IF(JT-M)90.95.95 90 J=JT*1 GO TO Ю 95 RETURN ENO 293
Перевод комментариев в тексте 1. Печать заголовка. 2. Образование строки вывода. 3. Проверка на последний столбец. Если последний — перейти к 60. 4. Конец строки, теперь печать. 5. Если конец строк, перейти на проверку столбцов. 6. Конец страницы, теперь проверка на дальнейший вывод. 7. Конец столбцов, выход. ПРИМЕР ПОДПРОГРАММЫ ВЫВОДА STOUT Назначение Печать результатов пошаговой множественной регрессии. Эта подпрограмма вызывается подпрограммой STPRG. Обращение CALL STOUT (NSTEP, ANS, L, В, S, T, NSTOP) Описание параметров NSTEP — вводимый вектор длиной 5, содержащий следующую информа- цию: NSTEP (1) — зависимая переменная; NSTEP (2)—число переменных, обязательно вводимых в ре- грессию; NSTEP (3)—число переменных, выводимых из регрессии; NSTEP (4) — номер последнего шага; NSTEP (5) — последняя вводимая переменная. ANS — вводимый вектор длиной 11, содержащий следующую информа- цию о последнем шаге: ANS (1)—сумма приведенных квадратов; ANS (2) — приведенная пропорция; ANS (3)—накопленная сумма приведенных квадратов; ANS (4) — накопленные приведенные пропорции; ANS (5) — сумма квадратов зависимой переменной; ANS (6) — коэффициент множественной корреляции; ANS (7) — значение F для анализа расхождения (регрес- сии); ANS (8) — стандартная ошибка оценки; ANS (9) — пересечение; ANS (10)— приведенное множественное R; ANS (11) — приведенная стандартная ошибка оценки. L — вводимый вектор длиной К (К = М — NSTEP (3) — 1), содержа- щий переменные, введенные в регрессию. L (1)—первая введен- ная переменная, L (2) — вторая введенная переменная и т. д. В— вводимый вектор длиной К (К = М — NSTEP (3) —1), содер- жащий коэффициенты регрессии, соответствующие переменным в векторе L. S — вводимый вектор длиной К (К = М — NSTEP (3) — 1), содер- жащий стандартные ошибки коэффициентов регрессии, соответ- ствующих переменным в векторе L. Т — вводимый вектор длиной К (К = М — NSTEP (3) — 1), содер- жащий вычисленные значения Т, соответствующие переменным в векторе L. NSTOP — код выбора выхода для остановки пошаговой регрессии: 1 — если пошаговая регрессия прекращается по не- которому критерию, отличному от отношений сумм квадратов, таких, например, как F-тест и тому подобное. Эта подпрограмма может быть изме- нена для выполнения проверки, если она потре- буется. Если не возникает необходимости в про- должении пошаговой регрессии, то NSTOP при- сваивается значение 1; 0 — если пошаговая регрессия должна быть продол- жена. 294
SUBROUTINE STOUT(NSTEP,ANS,1,8»S»T,NSTOP) DIMENSION NSTEP(1)•ANS(1),L(1),B(1),SC1)«T(1) t 1 C DOUBLE PRECISION ANS,8.S,T £ 2 1 FORMATC/5H1STEPI3) 2 F0RMAT(22H0VARlABLE ENTERED.....12) 3 FORMAT(40HOSUM OF SQUARES REDUCED IN THIS STEP.•..Fl3•3) 4 FORMAT(40H PROPORTION REDUCED IN THIS STEP.......F13.3> 5 FORMAT(40H0CUMULATIVE SUM OF SQUARES REDUCED......F13.3) 6 F0RMATC40N CUMULATIVE PROPORTION REDUCED..........F13.3»4H OFF13. 13) 1 FORMAT(4HOFORI3,18H VARIABLES ENTERED) 8 FORMATC38H MULTIPLE CORRELATION COEFFICIENT.<.F9.3> 9 FORMATC38H F-VALUE FOR ANALYSIS OF VARIANCE...F9.3) 10 FORMATC38H STANDARD ERROR OF ESTIMATE.........F9.3) 11 F0RMATC/57H VARIABLE REGRESSION STD. ERROR OF COMPUT 1ED/56H NUMBER COEFFICIENT REG. COEFF. T-VALUE) 12 FORMAT(5X,I3,F18.5,F16.5,F14.3) 13 FORMAT(12H (NTERCEPTF14.5) 14 FORMAT(31HODEPENDENT VAR I ABLE......л..... I 2> 15 F0RMAT(31H NUMBER VARIABLES FORCED........l2) 16 F0RMATC31H NUMBER OF VARIABLES DELETED...12) 17 formation (FORCED VARIABLE)) 18 F0RMAT(38H (ADJUSTED FOR O.F.) C 1 IF(NSTEP(4)-1)30,30,35 30 WRI ТЕ(99•14)NSTEP<1) WRI ТЕ(99,15)NSTEP(2) WR1TE(99.16)NSTEP(3) C 2 35 WRITE(99,1)NSTEP(4) WRITE(99,2)NSTEP(5) tF(NSTEP(4)-NSTEP(2))37.37,38 37 WRITE(99,17) 38 WRITE(99,3)ANS(1)
A URITE(99.4)ANS(2) WRITE(99,5)ANS(3) WRITE(99.6)ANS(4).ANSCS) WRITE(99.7)NSTEP(4) WRITE(99,8)ANSC6) WRITE(99,18)ANS(10) WRITE(99,.9 JANS(7) WRITE(99.10)ANSC8) WRITE(99,18)ANSC11> WRITE(99.11> « №NSTEP(4) 00 40 I=1,N J 40 WR I ТЕ(99,12)I(I)<В(I)•S(I)•T(X) WR I ТЕ(99•13)ANS(9) J NST0P=0 / RETURN ENO * Примечания Содержание векторов NSTEP, ANS, L требуется на последующих шагах и > не должно уничтожаться. 1 Требуемые функции и подпрограммы Нет. Перевод комментариев в тексте Если необходима версия этой подпрограммы с двойной точностью, то в еле- » дующем операторе двойной точности в первом столбце необходимо опустить С, . С должно быть опущено также из операторов двойной точности, появляю- > щихся в других программах, используемых совместно с этой программой. 1. Проверка, является ли этот шаг первым, 2. Печать результатов шага. ПОДПРОГРАММЫ МАТРИЧНОЙ АЛГЕБРЫ, * НЕОБХОДИМЫЕ ДЛЯ РАБОТЫ ПОДПРОГРАММ ПО СТАТИСТИКЕ ПОДПРОГРАММА LOC Назначение Вычисление индекса вектора в матрице, хранящейся в указанном способе хранения. Обращение CALL LOC (I, J, IR, N, M, MS) \ Описание параметров I — номер строки элемента. J — номер столбца элемента. IR— индекс вектора (результат вычисления). N — число строк в матрице. J 296
(j i ! M— число столбцов в матрице. * MS — цифра, характеризующая способ хранения: О — общий; 1 — симметричный; 2 — диагональный; Примечания Нет. Требуемые функции и подпрограммы Нет. Метод MS = 0 — индекс вычисляется для матрицы с N*M элементами в памяти (матрица общего типа). MS = 1—индекс вычисляется для матрицы с N*(N + 1)/2 элементами I» в памяти (треугольник симметрической матрицы). Если элемент в нижней треугольной части, то индекс относится к элементу в верхнем треугольнике. MS = 2 — индекс вычисляется для матрицы с N элементами в памяти (диагональные элементы диагональной матрицы). Если элемент ' не лежит на диагонали и, тем более, его нет в памяти, то IR г равно 0. SUBROUTINE LOC(I,J, IR.N.M.MS) I X = I JX = J IF (MS-1) 10.20.30 10 IRX = N*(JX-1)♦I X GO TO 36 20 IF (IX-JX) eZ»2>.24 22 LRX = LX♦(JX*J X)/2 GO TO 36 26 IRX=JX+(I X * IX“1X)/2 GO TO 36 30 IRX=O ( IF (IX-JX) 36е3а„36 32 IRX=IX 36 IR=IRX «ETURN END ПОДПРОГРАММА MINV Назначение Обращение матрицы Обращение CALL MINV (A, N, D, L, M) 297
SU3R0UTINE MINV(A,N,O.L,M> 00 40 J=1.N JK=NK*J DIMENSION А(1),1(1),М(1) С DOUBLE PRECISION A.D.BIGA.HQLO JI=JP*J С 10 IF(DABS(ВIGA)-0AВS(A(IJ))) H0L0=“A(JK7 с 1 A(JX)=A(JI) 0 = 1 .0 40 A(JI)=HOLD NK=-N C 4 00 80 K = 1,N 45 IFCBIGA) 48.46,49 NK=NK+N 46 d=o.o : L(K)=K RETURN . V. M(K)=K 48 00 55 1=1,N KK=NK*K IF<I—K> 50.55.50 BIGA=A(KK7 50 IX=NK+T 00 20 J=K,N A(IK)«ACIK)/C-BIGA> I2=N*(J-1) CONTINUE 00 20 I=K,H C 5 <J=IZ+I 00 65 1 = 1 10 IF (ABS(BIGA)-ABS(A(U))) 15,20,20 IK«NK*l I 15 BIGA = A(U> HOLO=A(IK1 L (К) = I IJ = I-N M(K)=J DO 65 J=1,N • 20 CONTINUE !J=IJ*N ; с 2 IF(I-K) 60,65,60 < J=L(K) 60 IF(J-K) 62.65,62 IF(J-K) 35,35,25 62 KJ=IJ-I+K J 25 ki=k-n A( I J)=HOLD*A(KJ)+A(IJ) J 00 30 1 = 1.H 65 CONTINUE KI=K|*N с 6 ‘ ‘'г. HOID=-A(KI> KJ=K-N JisKIxK+J DO 75 J=1,N A(Kt)=A(J I) KJ=KJ+N 30 A(JI)=H0LO IF(J-K) 70,75,70 ” ; с 3 70 A(КJ)=A(К J)/В IGA * 35 1=M(K) 75 CONTINUE IF(l-K) 45.45.38 C 7 38 JP=N*(1-1) O=D*BIGA
ВаИЯЕмУ?а^^зИВ5атад21ДЯв58ИВ5В8ЯЯ?3^^^^^^!£~У?^у*^^*Ду-УД1 I 8 А(КК)=1.C/BIGA 80 CONTINUE С 9 X=N 100 К=(К*1) ГF скэ 150,150,105 105 !=1(к) IFCI-Ю 120,120*108 108 JQ=N*(K-1) JR=N*(I-1) „ 00 110 J=1,N JK=JQ+J HOLOeAt.JXi J!=4R*J A(JK)«-A(JI) 110 A(JI)«HOLD 120 J«M(K> fF(J-K) 100,100,125 125 KJ=K-N 00 130 1=1.N K!=Kl+N HOLD=A(KI) J I = KI-K + J A(K|)=-A(JJ) 130 A(JI)»HOLD GO TO 100 ^50 RETURN END Описание параметров A — вводимая матрица, разрушаемая в процессе вычислений и заме- щаемая результатам обращения. N — порядок матрицы А. D — определитель результата. L — рабочий вектор длиной N. М — рабочий вектор длиной N. Примечания Матрица А должна храниться общим способом. Требуемыефункции и подпрограммы Нет. Метод Применяется стандартный метод Гаусса—Жордана. Одновременно вычис- ляется определитель. Значение определителя, равное нулю, указывает, что матрица особенная. Перевод комментариев в тексте При версии этой программы с двойной точностью С в первом столбце должно быть удалено из следующего оператора двойной точности. Признак С также должен быть удален из операторов двойной точности, применяемых в других подпрограммах, используемых совместно с этой подпро- граммой. В случае работы с двойной точностью функции Фортрана необходимо также иметь с двойной точностью. ABS в операторе 10 должен быть заменен на DABS. 1. Поиск наибольшего элемента, 2. Замена строк. 3. Замена столбцов. 4. Деление столбца на минус ведущий элемент (значение ведущего эле- мента содержится в BIGA). 5. Сокращение матрицы. 6. Деление строки на ведущий элемент. 299
1 7. Произведение ведущих элементов. 8. Замена главного элемента на обратную величину. 9. Конечный обмен строки и столбца. Подпрограмма EIGEN Эта подпрограмма вычисляет собственные значения и собствен- ные векторы действительной симметрической матрицы. Для заданной симметрической матрицы А порядка N собствен- ные значения образуются на диагональных элементах матрицы. В результате решения также образуется матрица собственных век- торов В. В качестве первого приближения R используется единичная матрица. Вычисляется начальная норма вне диагонали: = 152Д?л|1/2, (1) < где V/ — начальная норма; А — входная матрица (симметрическая). Эта норма делится на N и на каждом шаге образует пороговое значение. Вычисляется конечная норма Эта конечная норма выбрана достаточно малой с тем, чтобы*лю- бой внедиагональный элемент Ащ был меньше по абсолютной ве- личине vf, определяющей сходимость процесса. Образуется индикатор. Этот индикатор в последующем служит для определения, существует ли какой-нибудь внедиагональный элемент, рассчитанный при преобразовании, который больше дан- ного порогового значения. Проверяются все внедиагональные элементы и преобразования выполняются до уничтожения внедиагонального (ведущего) эле- мента, как показано на следующих уравнениях*: ^=~А1т-, (3) И = 1/2(Д„-Дяия); (4) w = sign (и) —. \ : (5) 5 -|<Х2 4-р.2 v ’ sin 0 = “ ----; (6) У 2 (1 + У1 — й>2) cos 6 = У1 — sin2 6; (7) В — Аи cos 0 — Aim sin 0; (8) * Фактически в подпрограмме вместо (9) дано: Д<т = Ац sin в + А<т COS0J А и = В. — Прим, перев. 300
С = Аи sin 6 + Alm cos 0; (9) В = cos 6 — /?iOT sin 0; (10) ^m = ^Hsine + ^<mcos6; (И) Я„ = В; (12) Au = Д/гсоз2 9 + Amm sin2 9 — 2Alm sin 9 cos 9; (13) Amm = &ii sin2 9 + Amm cos2 9 + 2Alm sin 9 cos 9; (14) Am = (Az - Amm) sin 9 cos 9 + Alm (cos2 9 - sin2 9). (15) Эти вычисления повторяются до тех лор, пока ведущие элементы не станут меньше порогового значения. ПОДПРОГРАММА EIGEN Назначение Вычисление собственных значений и собственных векторов действительной симметрической матрицы. Обращение CALL EIGEN (A, R, N, MV) Описание параметров А — исходная матрица (симметрическая), разрушается в процессе вычислений. Вычисленные собственные значения располагаются по диагонали матрицы А в порядке убывания. R— вычисленная матрица собственных векторов (хранится по столб- цам в той же последовательности, что и собственные значения). N — порядок матриц А и R. MV — входной код: О — вычисление собственных значений и собственных векторов; 1 — вычисление только собственных значений (R может не иметь размера, но должно быть записано в обращении). Примечания Исходная матрица А должна быть симметрической (код хранения 1). Мат- рица А не может размещаться в тех же ячейках, что и матрица R. Требуемые функции и подпрограммы Нет. Метод См. [6]. Перевод комментариев в тексте Если для этой подпрограммы необходима двойная точность, то в столбце 1 следует убрать С в следующем операторе. Знак С также должен быть убран и из других операторов с двойной точностью, находящихся в других програм- мах, используемых совместно с этой программой. Версия данной программы с двойной точностью требует также функций Фортрана с двойной точностью. SQRT в операторах 40, 68, 75, 78 должен быть заменен на DSQRT, ABS в опе- раторе 62 должен быть заменен на DABS. Константа в операторе 5 должна быть заменена на 1.0D — 12. 1. Образование единичной матрицы. 2. Вычисление начальной и конечной нормы (ANORM и ANORMX). 3. Образование индикаторов и вычисление порогового значения THR. 4. Вычисление SIN и COS. 301
SUBROUTINE EIGEN(A,R.N.MV) DIMENSION A(1),R(1) C 1 DOUBLE PRECISION A.R.ANORM,ANRMX,THR,X»Y,SI NX,SINX2,COSX,COSXZi 1SINCS,RANGE (Продолжение) 5 RANGE=1.0E-6 LM=L+HQ IF(MV-1)10,25•10 62 IF(ABS(ACLM))-THR) 130,65,65 10 IQ = -N 65 IND=1 DO* 20 J=1 ,N LL=L+LQ IQ-IQ+N MM=M+MQ 00 20 1=1.Ы X=0.5*<AtLL)-A(MM)) IJ=IQ*I 68 Y=-ACLH)/SORT(A(LM)*A(LM}*X*X> R(IJ)=0.0 IF(X)70,75,75 IF (1-4)20,15,20 70 Y=-Y 15 R СIJ) = 1.0 75 SINX = Y/SQRT(2.O*<1 .CHSQRT(1 .O-Y*Y)))> 20 CONTINUE SINX2=SINX*SINX 2 78 C0SX=SQRT(1.0-SINX2) 25 ANORM=0.0 C0SX2sC0SX*C0$X DO 35 1=1.N SINCS=SINX*CO$X DO 35 J = I,N ,C 5 ‘ IF(I-=J 530,35,30 ILQ=N*(L-1) 30 IA=I*(J*J-J)/2 IMQ=N*(M-1> AN0RM=AN0RM*A(1A)' ACI A) DO 125 1=1,N 35 CONTINUE IQ=(l*I-I)/2 IF(ANORM) 165*165,40 IF(I-L)80,115*80 40 ANORM=1.414*SORT(A?1ORM) BO IF(I-M)85,115*90 ANRMX=ANORM*RANGE/FLOAT(N) 85 IM=WMQ 3 60 TO 95 IND = O 90 IM=M+IQ THR=ANORM 95 XF (I-L)100,105,105 45 THR=THR/FLOAT(N) 100 IL=I*LO 50 L=1 60 TO 110 55 M~L*1 105 IL=L*IQ 4 110 X=A(IL)*COSX-A(IM)*S2NX 60 MQ~(M*M-M)/2 A(IM)=A(IL)*$XNX>A(IM)*COSX LQ=(L*L-L)/2
ACILJsX • C 9 115 IFCMV-1)120,125•120 160 I F(THR-ANRMX)165»165*45 120'IlR=ILQ*i 0 10 IMR=IMQ+I ' 165 IQ--N X=R(IlR)*СOSX“R(IMR)*SINX 00 185 I51.N R(IMR)=R(ILR)*SINX+R(IMR)*CQSX IQ=IQ+N R(ILR)sX LL=l + (t*I-n/2 125 CONTINUE JQ=N*CI-2) Xs2.0*ACLM)*SINC$ 00 185 JsI»N Y€A(LL)*C0SX2+A(MM)*SINX2-X JQsJQ+N X=A(LL)*SINX2♦A(MM)*C0SX2+X MM=J+()/2 A(LM)S(A(LL)-A(MM))*sINCS+A(LH)*CC0Sx2-SINX2) "l F(A(LL)-A(MM)>170.185.185 ACLL)=Y 170 X=A(LL) A(MM)=X A(LL)sACMM) C 6 A(MM)=X c 7 IFCMv-1) 175,185.175 130 IF(M-N)135•140,135 175 00 180 K=1,N 135 M=M*1 ILR=IQ+K GO TO 60 IMR=JQ+K c 8 X=R(ILR) 140 IFCL-CN-1))145,150.145 R(ILR)=R(IMR) 145 L = L + 1 - 180 R(!MR)=X GO TO 55 185 CONTINUE 150 IFClND-1) 160'155,160- RETURN 155 IND = O END GO TO 50 5. Перестановка L и M столбцов. 6. Проверки на завершение. 7. Проверка на М — последний столбец. 8. Проверка на L — второй столбец от конца. 9. Сравнение порогового значения с конечной нормой. 10. Упорядочение собственных значений и собственных векторов. Подпрограмма NROOT Эта подпрограмма вычисляет собственные значения и мат- рицу собственных векторов V действительной квадратной несим- метрической матрицы специального вида где как В, так и А действительные симметрические матрицы и В положительно оп- ределенная. Эта подпрограмма обычно вызывается подпрограммой 303
CANOR при выполнении канонического корреляционного анализа. Шаги вычисления следующие. Симметрическая матрица (код хранения 1) образуется с по- мощью элементов верхней треугольной части квадратной мат- рицы В. Собственные значения hi и матрица собственных векторов Н симметрической матрицы вычисляются при помощи подпро- граммы EIGEN. Затем соответствующие квадратные корни каждого собствен- ного значения образуются по формуле и-ТТ’ (1> где i=l, 2,.... т\ т — порядок матрицы В. Матрица В-1/2 образуется при умножении /-го столбца вектора Н на gj, где /= 1, 2,..., т. Симметрическая матрица S=(B-1/2) АВ-1/2 образуется следу- ющими двумя матричными умножениями: Q = (B-1'2)' А; (2) S=QB~™. (3) Собственные значения %, и матрица собственных векторов М мат- рицы S вычисляются при помощи подпрограммы EIGEN. Образуется матрица W — В-1'2 М и векторы в W нормали- зуются для формирования матрицы собственных векторов V при помощи следующего равенства: Vl} = WiJ (4) ° ysuMVy ' ' где /= 1, 2, ..., т\ J—\, 2, ..., т. SUMVy = S (5) ПОДПРОГРАММА NROOT Назначение Вычисление собственных значений и собственных векторов действительной несимметрической матрицы в виде: матрица А, умноженная на обратную матрицу В. Эта подпрограмма обычно вызывается подпрограммой CANOR при выполнении канонического корреляционного анализа. Обращение CALL NROOT (М, А, В, XL, X) Описание параметров М — порядок квадратных матриц А, В и X. А —вводимая матрица (МХМ). В — вводимая матрица (М X М). XL » выводимый вектор длиной М, содержащий собственные значе- ния матрицы А, умноженной на обратную матрицу В. 304
X — выводимая матрица (МХМ), содержащая собственные векторы по столбцам. Примечания Нет. Требуемые функции и подпрограммы EIGEN Метод См. [5]. (Распечатку подпрограммы см. на стр. 306) Перевод комментариев в тексте Если требуется вариант с двойной точностью, то следует удалить признак С в первом столбце следующего оператора двойной точности. С должно быть удалено также и в других подпрограммах, в операторах описания двойной точности, связанных с данной подпрограммой. Версия этой подпрограммы с двойной точностью должна содержать функции Фортрана с двойной точностью. SQRT в операторах НО и 175 должен быть заменен на DSQRT. ABS в операторе ПО должен быть заменен на DABS. 1. Вычисление собственных значений и собственных векторов В. 2. Матрица В является действительной симметрической матрицей. 3. Образование соответствующих квадратных корней собственных значений. Результаты перемножаются с соответствующими собственными векторами. 4. Образование (В**(—1/2))PRIME*A*(B**(—1/2)). 5. Вычисление собственных значений и собственных векторов А. 6. Вычисление нормализованных собственных векторов. Подпрограмма POLRT Эта подпрограмма вычисляет действительные и комплексные корни действительных многочленов. Задан многочлен (1) л=0 Положим Z = Х4-1У, равное начальному значению для корня /(г). Тогда Zn = (XiY)n. (2) Определим Хп как действительную часть развернутого уравне- ния (2) и Yn как мнимую часть развернутого уравнения (2). Тогда для п = 0; Хв = 1.0; Уо = 0.0; п > 0. Х^Х^-Y-Y»; (3) Yn = X- Y^+Y-X^. (4) Положим U — действительная часть (1); V — мнимая часть (1). Тогда t/= £ апХп- (5) л=0 v= S anYn. (6) л—0 305
. < ♦ subroutine ЫйООТ(м,A,B.XL,X) N1=I-W OIMESSIOR АС 1 У,В(1).XL(1),X(1 - N2=M*CJ-1> С 1 L=L + 1 с DOUBLE PRECISION А • D,XL•X,SUMV A(L)=0.0 К = 1 DO 130 K = 1,M DO Ш ,1=2,11 HSN1*M L = M*( kH2=N2*1 DO 100 1=1,J 130 A(L)=A(L)*X(N1)*BCN2) L = L*1 c 5 K = K + 1 CALL EIGEN(A,XMV) 100 B(K)«8<17 L=0 € 2 DO 140 1 = 1,M MV = 0 l=L*I CALL EIGEN CB,X.M,MV) 140 XL<I)«А(U 'i С 3 c 6 L = 0 DO 150 1=1,R DO 110 J=1,4 N2 = 0 L=L*J DO 150 J=1,H j 110 XL<J)»1.0/ SORTCABSCB(L))) N1=I-M Ks& L=M*(J-1)*T 00s 115 J=1 ,< A(L)=0.0 DO 115 1=1,И DO 150 K=1,W K = K*1 N1=N1*M 115 B(K)sX(K)*Xt(J) N2 = N2*1 - -1 С 4 150 A(L)=A(L)tB(Nl)*X(N2>* r DO 120 1=1,M 1 = 0 N2 = 0 KaO’ DO 120J J=1 DO 180 J=1,M N1=M*(I-1) SUMV=0.0 L = M*(J-1)*If DO 170 I=1,M XCL)=0.0 L = L*1 DO 120 K = 1,M 170 SUMVeSUMV*A(L)*A(L) N1=N14-1 175 Sij«V«SORT(SUMV) - N2=N2*1 DO 180 1 = 1,M •*> 120 XCL)=X(L'*B(N1)*A(N2> K«K*1 f-0 180 X(K)=A(K)/SUMV 00 130 J«1,fc RETURN DO 130 1 = 1, J, END
или N (7=а0+ S ап^п> Л=1 (7> N V=^anYn. Л=1 (8> ди _ Д' „ у 71=1 (9> Л=1 (Ю>' Заметим, что уравнения (3), (4), (7), (8), (9) и (10) могут быть выполнены итеративно от п— 1 до N с сохранением Xn-i и Уп-ь Применяя метод Ньютона—Рафсона для вычисления ДХ, ДУ, окончательно получим: <»> после применения уравнений Коши—Римана. Таким образом, для последующей итерации: Х' = Х + ДХ; У'== У + ДУ. ПОДПРОГРАММА POLRT Назначение Вычисление действительных и комплексных корней действительных много- членов. Обращение CALL POLRT (XCOF, COF, M, ROOTR, ROOTI, IER) Описание параметров XCOF — вектор из M + 1 коэффициентов многочлена, упорядоченных от наименьшей к наибольшей степени. COF — рабочий вектор длиной М + 1. М — степень полинома. ROOTR — вектор результата длиной М, содержащий действительные корни многочлена. ROOTI — вектор результата длиной М, содержащий соответствующие мни- мые корни многочлена. IER — код ошибки, где: IER = 0 — нет ошибки; IER — 1 — М меньше 1; IER = 2 — М больше 36; IER = 3 — невозможно определить корень после 500 итера- ций при 5 начальных значениях; 307
IER = 4 — коэффициент при наибольшей степени равен нулю. Примечания Многочлен не должен иметь степень выше 36. Для многочленов более вы- соких степеней может возникнуть переполнение с плавающей точкой, но это не влияет на точность результатов. Требуемые функции и подпрограммы Нет. Метод Итеративный метод Ньютона—Рафсона. Окончательные итерации каждого корня выполняются с помощью исходного многочлена, а не с помощью сокра- щенного с целью избежать накопления ошибок, имеющихся в сокращенном многочлене. Перевод комментариев в тексте 1. Если требуется версия данной подпрограммы с двойной точностью, то в следующем операторе двойной точности в первом столбце необходимо опу- стить С. 2. С должно быть также опущено во всех операторах двойной точности, имеющихся в других программах, используемых совместно с этой подпрограм- мой. Версия с двойной точностью может быть модифицирована заменой кон- станты в операторе 78 на 1.0D — 12 и в операторе 122 на 1.0D — 10. Это обеспе- чит более точные результаты за счет увеличения времени исполнения. 3. Установка кода ошибки, равного 1. 4. Установка кода ошибки, равного 4. 5. Установка кода ошибки, равного 2. 6. Установка начальных значений. 7. Установление счетчика в нулевое начальное значение. 8. Увеличение начальных значений и счетчика. 9. Установка X и Y в качестве начальных значений. 10. Преобразование многочлена и производных. 11. Шаг счетчика итераций. 12. Установка кода ошибки, равного 3. Подпрограмма DLGAM Эта подпрограмма вычисляет с двойной точностью натураль- ный логарифм гамма-функции по заданному с двойной точностью аргументу х, где 10-9 < х < 1070. Применено разложение Эйлера— Маклорена с членами до седьмой производной. Для х > 0: logr(x)^(x-l) logx + -llog2K-x + I^-lg^4 +_i_________L_ “ 1260x5 1680х’ • (1) Это выражение достаточно точно для х>18. Если х^18, х заменяется на z=k-\-x, где k — целое и таково, что z> 18. log Г(з) затем вычисляется по (1) и выражение log х + + log(x + 1) + ... +log (х + k — 1) вычисляется для того, чтобы получить желаемый результат. 308
SUBROUTINE POLRT(XCOF.COF.M,ROOTR.ROOT!. IER) DIMENSION XCOFCU.COF(1).ROOTR(1).ROOT I(1) DOUBLE PRECISION XO.YO.X.Y.XPR. * PR.UX,UY.v .TT.XT.U.XT2 'T2.SUMSG OX.DY.TEMP,ALPHA 1 DOUBLE OREC1SION xCOF.COF.ROOTR.ROOT, 2 IF1T=O N = M IER = O IF(XCOF(N*1) , «0.25* Ю 10 IF(N)15,15,32 3 15 IER=1 20 RETURN 4 25 IER=a 60 to 20 5 SO IER~2 60 TO 20 32 IFCN-36) 55,35.50 35 NX=N NXX=N*1 N2=1 00 40 L-1.KJ1 MT8Kj1-L*1 40 COFCMTJaXCOF(L) 6 45 X0«.00500101 YOaO.01000101 7 IN = O 50 X=XO 8
XO=-10.0*YO YQ=-1G.Q*X Q X = XO Y = YO IN=lN*1 GO TO 5'<> 55 IFI*T = 1 XPR = X YPR = ¥ 10 59 ICT=O 60 UX=0.0 UY=0.0 V = 0.0 YT=0.0 XT=1.0 U=C0F(N*1) 1F4U) 65.130.6S 65 00 70 1=1,N L=N-1*1 TEMP=COF(L> XT2=X*XT-Y*YT VT2=X*YT*Y*XT и»и*темр*хтг V=V*TENP*Yia F 1 = I UX=UX«-H *XT*TEMP UY.sUY-F I*YT*TEMP XT*XT2 70 YT«1T2 sumsq=ux*ux*uy*uy IF(SUMSQ) 75,110,75 75 DX«(V*UY-U*UX)/SUMSG X»X*OX DY«-.CU*UY*V*UX)/$UHSG
Y=Y*DY 78 IF(DA ВS(ВT)♦ОАО3(ОX)-1.QO-12) 100.80.80 11 80 ICTxiCT*! !F(ICT-5ie> 60,85.89 85 IFC1FIT) 108.90.100 90 1F<1N*5> 50.95.99 12 95 1E8 = 3 60 TO 20 TOO t>0 105 L=1.NX» MT»Kj1-L*1 TEMPsXCQF(MT) XCOf(MT)aCOF(LB 105 C0F<l)dfiMP I TEMPOS MSNX SX=ITEMP IF(IFJT) 120,55»12O 110 IF(IEIT) 115,5O»115 «1$ ХэХРЯ YcsYPfl 120 IFITsO 122 I F (DABS ( * )-1 .00-1 0 *DABS(X)') 135 »1 2.5,1 25 <125 ALPHA=O( + X SUMSQ=X*X«-Y* Y M=N-2 GO TO 140 130 X=0<0 NX=NX-1 NXX=NXX-1 K35 Y-0.0 SUMSQ=0.0 ALPHA=X N = N-1 1'40 T0F(2)=C0F(2)*ALPMA*C0F(1 )
145 00 150 l«2.N 150 COF(U*1)ЯСО₽(L*1)*ALPHA*COF(L>-SUMSQ*COF(l-П 155 R00Tl(M?)sv «00Tft(N2>8« N2®N2*1 (F(SUMSQ) 160*165*160 160 Y=-v SUMSQ=0.0 GO TO 155 165 IFCN) 20*20*45 ENO Если x находится между 1010 и 1070, то величинами малого по- рядка в (1) можно пренебречь и тогда log Г (х) вычисляется по формуле log Г (х) — х (log (х) — 1). (2) Подпрограмма DLGAM может работать только с двойной точ- ностью. Если потребуется получить значение log гамма-функции с одинарной точностью по заданному аргументу с одинарной точ- ностью, то следует применить подпрограмму GMMMA совместно с функцией натуральных логарифмов из Фортрана. Для справок см. [27]. ПОДПРОГРАММА DLGAM Назначение Вычисление с двойной точностью натурального логарифма гамма-функции но заданному аргументу с двойной точностью. Обращение CALL DLGAM (XX, DLNG, IER) Описание параметров XX — аргумент двойной точности для логарифма гамма-функции. DLNG — значение логарифма гамма-функции с двойной точностью, полученное в результате работы подпрограммы. IER — код ошибки результата где: IER = 0 — нет ошибок; IER = —1—XX между 10** (—9) и нулем или XX отрица- тельно, DLNG получает значение —1. OD 75; IER = +1 — XX больше 10** 70. DLNG получает значение +1.0D 75. Примечания Нет. "312
SUBROUTINE 0LGAM(XX,0LNG,IER) DOUBLE PRECISION XX,ZZ,TERM.RZ2tDLNG IER=O zz=xx IFCXX-1.O1O) 2,2,1 1 IF(XX-1.070) 8,9,9 C 1 2 lF(XX-1.D-9) 3,3,4 3 IER«-1 OLNG»-1.D75 GO TO 10 C 2 4 TERM=1.00 5 IF(ZZ-18.00) 6,6.7 6 TERM=TERM*ZZ ZZ=ZZ*1.00 GO TO S 7 RZ2=1,D0/ZZ**2 DLNGa(ZZ-0.500)*DLOG(ZZ)-ZZ*0.9189385332046727-DLOG(TERMI* 1(1.00/ZZ)*(.8333333333333333D-1-(RZ2*(.27777777777777770-2*CRZ2* 2(.7936507936507936B-3 -(RZ2*(.59523809523809520-3)>) ) ) )) GO TO 10 C 5 8 OLNG=ZZ*(DLOG(ZZ)-1.OOi GO TO 10 X 4 9 IERs*1 0LNG=1.07g Л0 RETURN ENO 'Требуемые функции и подпрограммы Нет. Метод Разложение Эйлера — Маклорена с применением производных по седьмой торядок. См. [27]. Перевод комментариев в тексте 1. Проверка. XX около нуля или отрицательно? 2. XX больше нуля, но меньше либо равно 1.D + 10. 3. XX больше 1.D + Ю и меньше 1.D + 70, -4. XX больше либо равно 1.D + 70,
БИБЛИОГРАФИЯ 1. Ostle В. Statistics in Research. The Iowa State College Press. 1954. 2. Bennett C. A. and Franklin N. L. Statistical Analysis in Chemistry and the Chemical Industry. John Wiley and Sons, 1954, 3. N at r el la M. G. Experimental Statistics—NBS Handbook 91. National Bu- reau of Standards, 1963. 4. Finney D. J. Probit Analysis Cambridge University Press, 1952. 5. С о о 1 e у W. W. and L о h n e s P. R. Multivariate Procedures for the Behavio- ral Sciences, John Wiley and Sons, 1962. 6. H a r 11 e у H. О. Mathematical Methods for Digital Computers, John Wiley and Sons, 1962. 7, BMD «Computer Programs Manual, Edited by Dixon W. J. UCLA», 1964. 8. Anderson T. W. Introduction to Multivariate Statistical Analysis, John Wi- ley and Sons, 1958. 9. Kaiser. Computer Program for Varimax Rotation in Factor Analysis, Educa- tional and Psychological Measurement. Vol. XIX, No. 3, 1959. 10. L a w 1 e у D. N., Maxwell A. E. Factor Analysis as a statistical Method. London, Butterworths, 1963. Л о у л и Д. H., M а к с в e л л А. Е. Факторный анализ как статистический метод. М., «Мир», 1967. Harman Harry. Modern factor Analysis. 2d ed., revised. The University of Chicago Press, Chicago and London. Харман Г. Современный факторный анализ. М., «Статистика», 1972. 11. Blackman R. В. and Тике у J. W. The Measurment of Power Spectra, Dover Publications Inc. New York, 1959. 12. H e a 1 у J. R. and В о g e r t В. P. Fortran Subroutines for Time Series Ana- lysis. Communications of ACM. Vol. 6, No. 1, 1963. 13. В г о w n R. G. Smoothing. Forecasting and Prediction of Discrete Time Series, Prentice—Hall, N. J., 1963. 14. F e 11 e r W. On the Kolmogorov—Smirnov limit theorems for empirical distributions, Annals of Math. Stat., 1963. 15. Smirnov N. Table for estimating the goodness of fit of empirical distribu- tions, Annals of Math. Stat., 1963. 16. Von Mises R. Mathematical Theory of Probability and Statistics. Acade- mic Press, N. Y., 1964. 17. Гнеденко Б. В. Курс теории вероятностей, ГИТТЛ, 1950. 18. L i 11 i е f о г s Н. W. On the Kolmogorov — Smirnov test for normality with mean and variance unknown. T. A. S. A. 62 (1967). 19. Whittaker E. T. and Watson G. N. A Course of Modern Analysis. Cam- bridge, University Press. Cambridge, England, 1952. 20. Lindgren. Statistical Theory. The Macmillan Company New York, 1962. 21. Siegel S. Nonparametric statistics for the Behavioral Sciences, McGraw— Hill, New York, 1956. 22. W i 1 с о x о n F. Some Rapid Approximate Statistical Procedures, American Cyanamid Co., Stamford, Conn., 1949. 23. Dixon and Massey. An Introduction to Statistical Analysis, McGraw — Hill, 1957. 314
24. IBM Manual C20—8011, Power Residue Method, Random Number Generation and Testing. 25. H a m m i n g R. W. Numerical Methods for Scientists and Engineers, McGraw-Hill, New York, 1962. 26. H a s t i n g s C. Approximations for Digital Computers, Princeton, N. Y., 1955. 27. Abramowitz M. and Stegun I. A. Handbook of Mathematical Func- tions., Inc. U. S. Department of Commerce. National Bureau of Standards. Applied Mathematics Series, 1966. 28. Bargmann R. E. and Ghosh S. P. Statistical Destribation Programs for a Computer Language. IBM Research Report RC—1094, 1963. 29. Kendall M. G. The Advanced Theory of Statistics. V. I. Hafner Publishing Company, 1958. 30. G u i 1 f о r d J. P. Fundamental Statistics in Psychology and Education. McGraw—Hill, N. Y., 1956. 31. Dunlop J. W. Note on Computation of Biserial Correlations in Item Eva- luation, Psychometrika, 1936, I. 32. Horst P. Psychological Measurement and Prediction, p. 91 (Wadsworth, 1966). 33. U u 1 e G. V. On she Methods of Measuring the Association Between Two Attributes Joural of Royal Statistical Association, 1912. 34. Perry N. C. and M i c h a e 1 W. B. The Reliability of a Point—Biserial Coef- ficient of Correlation. Psychometrika, 1954, 16. 35. Elderton W. R. Freguency Curves and Correlation 4-th Edition. Cambridge University Press, 1953. 36. C u 11 e r S. J. and E d e r e r F. Maximum Utilization of the Life Table Method in Analyzing Survival, Journal of Chronic Diseases, December, 1958.
СОДЕРЖАНИЕ Предисловие .................................................. _ Введение ........................................................ Назначение и цель сборника.......................................... Области применения ................................... .1 Характеристики ............................................. Общие правила пользования ....................................... Основные правила .......................................... Операции над матрицами..................................... Размерность переменных.................................. Уплотнение памяти ...................................... Обращение к элементам матрицы........................... . Модификация программ ............................................ Расширенные возможности Фортрана .......................... Оптимизация времени . . . . . ............................. Двойная точность .......................................... Формат документации . ;.......................................... Описание подпрограмм....................................... Описание примеров программ................................. Примечания к работе ............................ Классифицированный перечень подпрограмм и примеров программ .... Описание подпрограмм и их распечатки ............................ Приложение ...................................................... Примеры написания программ................................. Отбор данных ............................................... Множественная линейная регрессия........................... Полиномиальная регрессия .................................. Пошаговая множественная регрессия.......................... Каноническая корреляция.................................... Дисперсионный анализ.......................... . ........ Дискриминантный анализ..................................... Факторный анализ .......................................... Тест Колмогорова—Смирнова.................................. Степенное трехчленное сглаживание.......................... Специальные подпрограммы, применяемые в примерах программ Библиография .................................................... 5 6 6 7 7 8 8 10 10 11 12 14 14 15 16 18 18 18 19 19 21 180 180 180 186 199 210 227 236 242 255 266 276 285 314 СБОРНИК НАУЧНЫХ ПРОГРАММ НА ФОРТРАНЕ Редактор Л. И. Ганича Техн, редактор В. А. Чуракова Корректор Я. Б. Островский Худ. редактор Т. В. Стихно Переплет художника Л. С. Эр мана Сдано в набор 12/IV 1974 г. Подписано к печати 4/Х 1974 г. Формат бумаги 60 X 90Vie. Бумага № 2. Объем 19,75 печ. л. Уч.-изд. л. 21,46. Тираж 15 000экз. (Тематич. план 1974 г. № 103). Заказ № 517. Цена 1 р. 50 к. Издательство «Статистика», Москва, ул. Кирова, 39. Типография им. Котлякова издательства «Финансы» Государственного комитета Совета Министров СССР по делам издательств, полиграфии и книжной торговли. 191023. Ленинград, Д-23, Садовая, 21.
Ip. 50 к.