Основные функции и операторы команд COMPUTE и IF
Арифметические операторы +, -, *, /в этих командах употребляются обычным порядком, две звездочки ** означают возведение в степень. Результатом логической операции будет 1, если логическое выражение истинно, и 0, если выражение ложно (логическое выражение (v9 > 30) равно 1, если v9 > 30, и равно 0, если v9 £ 30). Допустимы операторы сравнения <, <=, <, <=, ~=, где последний оператор означает «не равно» и логические операторы ~ – отрицание (not), & – логическое «и» (and) и логическое «или» | (or). При вычислении логического выражения, если порядок выполнения не задан скобками, сначала выполняются арифметические операции, затем сравнения, затем логические операции. Приоритетность выполнения операций естественна – так она обычно определяется в математике и языках программирования. Но следует заметить, что операции сравнения находятся на одном уровне. В частности значение выражения (5 > 3 > 2), будет равно 0 («ложь»), так как в соответствии с порядком выполнения операций в этом выражении (5 > 3 > 2) = ((5 > 3) > 2) = (1 > 2) = 0! Наряду с арифметическими операторами в арифметических выражениях могут использоваться логические выражения, что позволяет достаточно компактно осуществлять преобразования данных: COMPUTE x = (v9 > 30) + v10 > x + z. Эта хитроумная команда превращает вначале выражение (v9 > 30)в 0 или 1 в зависимости от его истинности, затем производит вычисления левой ((v9 > 30) + v10) и правой (x + z)частей неравенства и в зависимости от результата сравнения присваивает переменной x значение 0 или 1. Кроме того, имеется возможность использовать: Арифметические функции, такие как: ABS – абсолютное значение, RND – округление, TRUNC – целая часть, EXP – экспонента, LN – натуральный логарифм, и др. Например, COMPUTE LNv9 = LN(V9). Переменной LNv9 присваиваются логарифмы значений переменной V9. Статистические функции: SUM – сумма, MEAN – среднее, SD – стандартное отклонение, VARIANCE – дисперсия,MIN – минимум и MAX – максимум. Например, команда COMPUTE S = MEAN (d1 to d10). вычисляет переменную, равную среднему валидных (т. е. определенных) значений переменных d1, …, d10. Функции распределения, например: CDF.CHISQ(q, a) – распределения хи-квадрат, CDF.EXP(q, a) – экспоненциального распределения, CDF.T(q, a) – Стьюдента, и др. (q – аргумент функции распределения, a – параметр соответствующего распределения). Команда COMPUTE Y = CDF.T(Х, 10). Эти функции могут быть использованы для проверки предположения о виде распределения переменной. Например, если мы для расчета переменной используем функцию распределения Стьюдента с 10 степенями свободы и построим значения от переменной Х, которая распределена по Стьюденту с 10 степенями свободы, то получим переменную Y, равномерно распределенную на отрезке (0, 1). Таким образом, если есть подозрение, что Х имеет именно такое распределение, то можно проверить это предположение, построив переменную Y и проверив ее на равномерность распределения на отрезке (0, 1). То же самое можно предпринять для проверки других видов распределений. Обратные функции распределения, например: IDF.CHISQ(p, a) – обратная функция распределения (по сути дела, квантиль) хи-квадрат, IDF.F(p, a, b) – квантиль распределения Фишера, IDF.T(p, a) – квантиль распределения Стьюдента, и др. (p – вероятность, a и b – параметры соответствующего распределения). Например, COMPUTE Z = IDF.CHISQ(X, 10). вычисляет квантиль порядка X распределения хи-квадрат с 10 степенями свободы. Такие функции полезны для вычисления значимости статистик для подмножеств исследуемого множества, например значимости отклонения среднего возраста по городам региона, в котором произведен сбор данных. Датчики случайных чисел, например: RV.LNORMAL(a, b) – датчик лог-нормального распределения. RV.NORMAL(a, b) – датчик нормального распределения, RV.UNIFORM(a, b) – датчик равномерного распределения (a, b – параметры соответствующего распределения). Функция, дающая значения переменной на предыдущем объекте LAG. Пример использования (см. рис. 1.1, данные «Проблем и жалоб»): COMPUTE age1 = LAG(age). COMPUTE age2 = LAG(age, 3). EXECUTE. Указанное преобразование осуществляет сдвиг информации, показанный в табл. 2.1. В скобках второй параметр задает длину лагового сдвига. Таблица2. 1 Сдвиг, произведенный функцией LAG (данные «Проблем и жалоб»)
Функция полезна для анализа временных рядов, при анализе анкетных данных – для поиска повторов объектов и других вспомогательных операций. Логические функции: RANGE(v, a1, b1, a2, b2, …) принимают значение 1, если значение V попало хотя бы в один из интервалов [a1, b1], [a2, b2],и 0 – в противном случае. ANY(v, a1, a2, …) принимают значение 1, если значение V совпало хотя бы с одним из значений a1, a2, … и 0 – в противном случае. Кроме того, в пакете имеются строчные функции, функции обработки данных типа даты и времени.
|