Next: , Previous: Введение в пакет descriptive, Up: Пакет descriptive   [Contents][Index]

43.2 Функции и переменные для манипулирования данными

Функция: continuous_freq (list)
Функция: continuous_freq (list, m)

Аргумент continuous_freq должен быть списком чисел, которые группируются в интервалы и вычисляется число чисел в каждом из интервалов. Необязательный второй аргумент continuous_freq задает число интервалов, по умолчанию 10,

(%i1) load ("numericalio")$
(%i2) load ("descriptive")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) continuous_freq (s1, 5);
(%o4) [[0, 1.8, 3.6, 5.4, 7.2, 9.0], [16, 24, 18, 17, 25]]

Первый список содержит границы интервалов, а второй содержит число чисел в соответствующем интервале: 16 цифр в интервале [0, 1.8], что есть 0 или 1, 24 цифры в интервале (1.8, 3.6], что есть 2 и 3, и т.д.

Функция: discrete_freq (list)

Вычисляет абсолютные частоты для дискретной выборки, как числовой так и категоризированной. Ее единственный аргумент является списком

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"));
(%o3) [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 
4, 6, 2, 6, 4, 3, 3, 8, 3, 2, 7, 9, 5, 0, 2, 8, 8, 4, 1, 9, 7, 
1, 6, 9, 3, 9, 9, 3, 7, 5, 1, 0, 5, 8, 2, 0, 9, 7, 4, 9, 4, 4, 
5, 9, 2, 3, 0, 7, 8, 1, 6, 4, 0, 6, 2, 8, 6, 2, 0, 8, 9, 9, 8, 
6, 2, 8, 0, 3, 4, 8, 2, 5, 3, 4, 2, 1, 1, 7, 0, 6, 7]
(%i4) discrete_freq (s1);
(%o4) [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
                             [8, 8, 12, 12, 10, 8, 9, 8, 12, 13]]

Первый список значения в выборке, а второй их абсолютные частоты. Команды ? col и ? transpose должны помочь понять последний ввод.

Функция: subsample (data_matrix, logical_expression)
Функция: subsample (data_matrix, logical_expression, col_num1, col_num2, ...)

Является некоторым вариантом Maxima функции submatrix. Первый аргумент – имя матрицы данных, второй – экранированное логическое выражение, необязательные последующие аргументы – номера колонок, которые необходимо выбрать. Работу функции лучше всего проиллюстрировать на примерах

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) subsample (s2, '(%c[1] > 18));
              [ 19.38  15.37  15.12  23.09  25.25 ]
              [                                   ]
              [ 18.29  18.66  19.08  26.08  27.63 ]
(%o4)         [                                   ]
              [ 20.25  21.46  19.95  27.71  23.38 ]
              [                                   ]
              [ 18.79  18.96  14.46  26.38  21.84 ]

Это многомерная выборка в которой скорость ветра в первой метеорологической станции превышает 18. В экранированном логическом выражении i-й компонент данных обозначается %c[i]. Символ %c[i] используется внутри subsample, что вызывает проблемы если этот символ используется для обозначения категории в категоризированных данных. В следующем примере мы затребуем только первую, вторую и пятую компоненту записей, для которых скорость ветра больше или равна 16 на станции номер 1 и менее 25 узлов на станции номер 4

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) subsample (s2, '(%c[1] >= 16 and %c[4] < 25), 1, 2, 5);
                     [ 19.38  15.37  25.25 ]
                     [                     ]
                     [ 17.33  14.67  19.58 ]
(%o4)                [                     ]
                     [ 16.92  13.21  21.21 ]
                     [                     ]
                     [ 17.25  18.46  23.87 ]

Далле приведен пример с категоризированными переменными из biomed.data. Мы выбираем записи, которые соответствуют пациентам в группе B старше 38 лет

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s3 : read_matrix (file_search ("biomed.data"))$
(%i4) subsample (s3, '(%c[1] = B and %c[2] > 38));
                [ B  39  28.0  102.3  17.1  146 ]
                [                               ]
                [ B  39  21.0  92.4   10.3  197 ]
                [                               ]
                [ B  39  23.0  111.5  10.0  133 ]
                [                               ]
                [ B  39  26.0  92.6   12.3  196 ]
(%o4)           [                               ]
                [ B  39  25.0  98.7   10.0  174 ]
                [                               ]
                [ B  39  21.0  93.2   5.9   181 ]
                [                               ]
                [ B  39  18.0  95.0   11.3  66  ]
                [                               ]
                [ B  39  39.0  88.5   7.6   168 ]

Вероятно статистический анализ будет включать только измерения крови

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s3 : read_matrix (file_search ("biomed.data"))$
(%i4) subsample (s3, '(%c[1] = B and %c[2] > 38), 3, 4, 5, 6);
                   [ 28.0  102.3  17.1  146 ]
                   [                        ]
                   [ 21.0  92.4   10.3  197 ]
                   [                        ]
                   [ 23.0  111.5  10.0  133 ]
                   [                        ]
                   [ 26.0  92.6   12.3  196 ]
(%o4)              [                        ]
                   [ 25.0  98.7   10.0  174 ]
                   [                        ]
                   [ 21.0  93.2   5.9   181 ]
                   [                        ]
                   [ 18.0  95.0   11.3  66  ]
                   [                        ]
                   [ 39.0  88.5   7.6   168 ]

Это многомерное среднее значение s3

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s3 : read_matrix (file_search ("biomed.data"))$
(%i4) mean (s3);
       65 B + 35 A  317          6 NA + 8145.0
(%o4) [-----------, ---, 87.178, -------------, 18.123, 
           100      10                100
                                                    3 NA + 19587
                                                    ------------]
                                                        100

Здесь, первая компонента бессмыслена, т.к. A и B представляют категории, вторая компонента – средний возраст пациентов в форме рационального числа, а четвертая и последняя компоненты демонстрируют странное поведение. Это потому, что символ NA используется для случая, когда данные недоступны (non available), а следовательно эти два средних значения бессмысленны. Возможным решением является исключение из матрицы строк с символами NA, хотя это и приводит к некоторой потере данных

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s3 : read_matrix (file_search ("biomed.data"))$
(%i4) mean(subsample(s3, '(%c[4] # NA and %c[6] # NA), 3,4,5,6));
(%o4) [79.4923076923077, 86.2032967032967, 16.93186813186813, 
                                                            2514
                                                            ----]
                                                             13

Next: , Previous: Введение в пакет descriptive, Up: Пакет descriptive   [Contents][Index]