@c Language=Russian
@c Encoding=UTF-8
@c File=descriptive.texi 
@c OriginalRevision=1.19
@c TranslatedBy: (c) 2007-07 Vadim V. Zhytnikov <vvzhyt@gmail.com>

@menu
* Введение в пакет descriptive::
* Функции и переменные для манипулирования данными::
* Функции и переменные для описательной статистики::
* Функции и переменные для многомерной описательной статистики::
* Функции и переменные для статистических графиков::
@end menu

@node Введение в пакет descriptive, Функции и переменные для манипулирования данными, Пакет descriptive, Пакет descriptive
@section Введение в пакет descriptive

Пакет @code{descriptive} содержит набор функций для выполнения вычислений и визуализации данных в рамках описательной 
статистики.  Вместе с исходным кодом пакета Maxima включает также три набора данных: @code{pidigits.data}, 
@code{wind.data} и @code{biomed.data}. 

Для справки по функциям пакета @code{descriptive} можно использовать любое статистическое руководство.

Для комментариев, сообщений об ошибках и предложений обращайтесь к автору пакета по адресу 
@var{'mario AT edu DOT xunta DOT es'}.

Ниже приведен простой пример использования функций пакета @code{descriptive} в зависимости
от природы своих аргументов

@c ===beg===
@c load ("descriptive")$
@c /* univariate sample */   mean ([a, b, c]);
@c matrix ([a, b], [c, d], [e, f]);
@c /* multivariate sample */ mean (%);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) /* univariate sample */   mean ([a, b, c]);
                            c + b + a
(%o2)                       ---------
                                3
(%i3) matrix ([a, b], [c, d], [e, f]);
                            [ a  b ]
                            [      ]
(%o3)                       [ c  d ]
                            [      ]
                            [ e  f ]
(%i4) /* multivariate sample */ mean (%);
                      e + c + a  f + d + b
(%o4)                [---------, ---------]
                          3          3
@end example

Отметим, что для многомерной выборки среднее вычисляется для каждой колонки.

В случае нескольких выборок, возможно различного размера, для получения результата для каждой 
выборки можно использовать функцию @code{map}

@c ===beg===
@c load ("descriptive")$
@c map (mean, [[a, b, c], [d, e]]);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) map (mean, [[a, b, c], [d, e]]);
                        c + b + a  e + d
(%o2)                  [---------, -----]
                            3        2
@end example

В этом случае в списке находятся две выборки длины 3 и 2.

Одномерные выборки представляются списками

@c ===beg===
@c s1 : [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
@c ===end===
@example
(%i1) s1 : [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
(%o1)           [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
@end example

а многомерные выборки, матрицами

@c ===beg===
@c s2 : matrix ([13.17, 9.29], [14.71, 16.88], [18.50, 16.88],
@c              [10.58, 6.63], [13.33, 13.25], [13.21,  8.12]);
@c ===end===
@example
(%i1) s2 : matrix ([13.17, 9.29], [14.71, 16.88], [18.50, 16.88],
             [10.58, 6.63], [13.33, 13.25], [13.21,  8.12]);
                        [ 13.17  9.29  ]
                        [              ]
                        [ 14.71  16.88 ]
                        [              ]
                        [ 18.5   16.88 ]
(%o1)                   [              ]
                        [ 10.58  6.63  ]
                        [              ]
                        [ 13.33  13.25 ]
                        [              ]
                        [ 13.21  8.12  ]
@end example

В этом случае число колонок равно размерности случайной переменной, а 
число строк есть размер выборки.

Данные могут быть введены в ручную, но большие выборки обычно хранятся в текстовых файлах. 
Например, файл @code{pidigits.data} содержит первые 100 цифр числа @code{%pi}:
@example
      3
      1
      4
      1
      5
      9
      2
      6
      5
      3 ...
@end example

Для загрузки этих данных в Maxima следует делать так

@c ===beg===
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c length (s1);
@c ===end===
@example
(%i1) load ("numericalio")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) length (s1);
(%o3)                          100
@end example

С другой стороны, файл @code{wind.data} содержит дневные средние значения скорости ветра
для 5 метеорологических станций в Ирландии (Это часть данных, взятых с 12 метеорологических
станций. Исходные данные свободно доступны в StatLib Data Repository и их анализ обсуждается в 
Haslett, J., Raftery, A. E. (1989) 
@var{Space-time Modelling with Long-memory Dependence: Assessing Ireland's Wind Power Resource, with Discussion}. 
Applied Statistics 38, 1-50).  Данные загружаются при помощи:

@c ===beg===
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c length (s2);
@c s2 [%]; /* last record */
@c ===end===
@example
(%i1) load ("numericalio")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) length (s2);
(%o3)                          100
(%i4) s2 [%]; /* last record */
(%o4)            [3.58, 6.0, 4.58, 7.62, 11.25]
@end example

Некоторые выборки содержат нечисловые данные. Например, 
файл @code{biomed.data} (являющийся частью другого большого набора данных из StatLib Data Repository) 
содержит четыре измерения крови взятые от двух групп пациентов разного возраста
@code{A} и @code{B}

@c ===beg===
@c load ("numericalio")$
@c s3 : read_matrix (file_search ("biomed.data"))$
@c length (s3);
@c s3 [1]; /* first record */
@c ===end===
@example
(%i1) load ("numericalio")$
(%i2) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) length (s3);
(%o3)                          100
(%i4) s3 [1]; /* first record */
(%o4)            [A, 30, 167.0, 89.0, 25.6, 364]
@end example

Первый пациент принадлежит группе @code{A}, возраст 30 лет, и его/ее измерения 
крови есть 167.0, 89.0, 25.6 и 364.

При работе с категоризированными данными следует соблюдать осторожность. 
В следующем примере символу @code{a} присвоено значение до задания катигоризированной выборки

@c ===beg===
@c a : 1$
@c matrix ([a, 3], [b, 5]);
@c ===end===
@example
(%i1) a : 1$
(%i2) matrix ([a, 3], [b, 5]);
                            [ 1  3 ]
(%o2)                       [      ]
                            [ b  5 ]
@end example

@opencatbox{Категории:}
@category{Описательная статистика}
@category{Пакеты библиотеки share}
@category{Пакет descriptive}
@closecatbox


@node Функции и переменные для манипулирования данными, Функции и переменные для описательной статистики, Введение в пакет descriptive, Пакет descriptive
@section Функции и переменные для манипулирования данными

@deffn {Функция} continuous_freq (@var{list})
@deffnx {Функция} continuous_freq (@var{list}, @var{m})
Аргумент @code{continuous_freq} должен быть списком чисел,
которые группируются в интервалы и вычисляется число чисел в каждом из 
интервалов. Необязательный второй аргумент @code{continuous_freq}
задает число интервалов, по умолчанию 10,

@c ===beg===
@c load ("numericalio")$
@c load ("descriptive")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c continuous_freq (s1, 5);
@c ===end===
@example
(%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]]
@end example

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

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} discrete_freq (@var{list})
Вычисляет абсолютные частоты для дискретной выборки, как числовой так и категоризированной. 
Ее единственный аргумент является списком

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"));
@c discrete_freq (s1);
@c ===end===
@example
(%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]]
@end example

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

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} subsample (@var{data_matrix}, @var{logical_expression})
@deffnx {Функция} subsample (@var{data_matrix}, @var{logical_expression}, @var{col_num1}, @var{col_num2}, ...)
Является некоторым вариантом Maxima функции @code{submatrix}. 
Первый аргумент -- имя матрицы данных, второй -- экранированное логическое выражение, необязательные 
последующие аргументы -- номера колонок, которые необходимо выбрать. 
Работу функции лучше всего проиллюстрировать на примерах

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c subsample (s2, '(%c[1] > 18));
@c ===end===
@example
(%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 ]
@end example

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

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c subsample (s2, '(%c[1] >= 16 and %c[4] < 25), 1, 2, 5);
@c ===end===
@example
(%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 ]
@end example

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

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s3 : read_matrix (file_search ("biomed.data"))$
@c subsample (s3, '(%c[1] = B and %c[2] > 38));
@c ===end===
@example
(%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 ]
@end example


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

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s3 : read_matrix (file_search ("biomed.data"))$
@c subsample (s3, '(%c[1] = B and %c[2] > 38), 3, 4, 5, 6);
@c ===end===
@example
(%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 ]
@end example


Это многомерное среднее значение @code{s3}

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s3 : read_matrix (file_search ("biomed.data"))$
@c mean (s3);
@c ===end===
@example
(%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
@end example
Здесь, первая компонента бессмыслена, т.к. @code{A} и @code{B} 
представляют категории, вторая компонента -- средний возраст пациентов в форме рационального числа, 
а четвертая и последняя компоненты демонстрируют странное поведение.
Это потому, что символ @code{NA} используется для случая, когда данные недоступны (@var{non available}),
а следовательно эти два средних значения бессмысленны. Возможным решением является исключение
из матрицы строк с символами @code{NA}, хотя это и приводит к некоторой потере
данных

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s3 : read_matrix (file_search ("biomed.data"))$
@c mean (subsample (s3, '(%c[4] # NA and %c[6] # NA), 3, 4, 5, 6));
@c ===end===
@example
(%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
@end example

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn


@node Функции и переменные для описательной статистики, Функции и переменные для многомерной описательной статистики, Функции и переменные для манипулирования данными, Пакет descriptive
@section Функции и переменные для описательной статистики



@deffn {Функция} mean (@var{list})
@deffnx {Функция} mean (@var{matrix})
Среднее значение выборки, определяемое как
@ifhtml
@example
                       n
                     ====
             _   1   \
             x = -    >    x
                 n   /      i
                     ====
                     i = 1
@end example
@end ifhtml
@ifinfo
@example
                       n
                     ====
             _   1   \
             x = -    >    x
                 n   /      i
                     ====
                     i = 1
@end example
@end ifinfo
@tex
$${\bar{x}={1\over{n}}{\sum_{i=1}^{n}{x_{i}}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c mean (s1);
@c %, numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c mean (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) mean (s1);
                               471
(%o4)                          ---
                               100
(%i5) %, numer;
(%o5)                         4.71
(%i6) s2 : read_matrix (file_search ("wind.data"))$
(%i7) mean (s2);
(%o7)     [9.9485, 10.1607, 10.8685, 15.7166, 14.8441]
@end example

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} var (@var{list})
@deffnx {Функция} var (@var{matrix})
Дисперсия выборки, определяемая как
@ifhtml
@example
                     n
                   ====
           2   1   \          _ 2
          s  = -    >    (x - x)
               n   /       i
                   ====
                   i = 1
@end example
@end ifhtml
@ifinfo
@example
                     n
                   ====
           2   1   \          _ 2
          s  = -    >    (x - x)
               n   /       i
                   ====
                   i = 1
@end example
@end ifinfo
@tex
$${{1}\over{n}}{\sum_{i=1}^{n}{(x_{i}-\bar{x})^2}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c var (s1), numer;
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) var (s1), numer;
(%o4)                   8.425899999999999
@end example

См. также функцию @code{var1}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} var1 (@var{list})
@deffnx {Функция} var1 (@var{matrix})
Дисперсия выборки, определяемая как
@ifhtml
@example
                     n
                   ====
               1   \          _ 2
              ---   >    (x - x)
              n-1  /       i
                   ====
                   i = 1
@end example
@end ifhtml
@ifinfo
@example
                     n
                   ====
               1   \          _ 2
              ---   >    (x - x)
              n-1  /       i
                   ====
                   i = 1
@end example
@end ifinfo
@tex
$${{1\over{n-1}}{\sum_{i=1}^{n}{(x_{i}-\bar{x})^2}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c var1 (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c var1 (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) var1 (s1), numer;
(%o4)                    8.5110101010101
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) var1 (s2);
(%o6) [17.39586540404041, 15.13912778787879, 15.63204924242424, 
                            32.50152569696971, 24.66977392929294]
@end example

См. также функцию @code{var}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} std (@var{list})
@deffnx {Функция} std (@var{matrix})
Стандартное отклонение выборки, или квадратный корень функции @code{var}, 
дисперсии с знаменателем @math{n}.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c std (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c std (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) std (s1), numer;
(%o4)                   2.902740084816414
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) std (s2);
(%o6) [4.149928523480858, 3.871399812729241, 3.933920277534866, 
                            5.672434260526957, 4.941970881136392]
@end example

См. также функции @code{var} и @code{std1}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} std1 (@var{list})
@deffnx {Функция} std1 (@var{matrix})
Квадратный корень функции @code{var1}, дисперсии с знаменателем @math{n-1}.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c std1 (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c std1 (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) std1 (s1), numer;
(%o4)                   2.917363553109228
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) std1 (s2);
(%o6) [4.17083509672109, 3.89090320978032, 3.953738641137555, 
                            5.701010936401517, 4.966867617451963]
@end example

См. также функции @code{var1} и @code{std}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} noncentral_moment (@var{list}, @var{k})
@deffnx {Функция} noncentral_moment (@var{matrix}, @var{k})
Нецентральный момент порядка @math{k}, определенный как
@ifhtml
@example
                       n
                     ====
                 1   \      k
                 -    >    x
                 n   /      i
                     ====
                     i = 1
@end example
@end ifhtml
@ifinfo
@example
                       n
                     ====
                 1   \      k
                 -    >    x
                 n   /      i
                     ====
                     i = 1
@end example
@end ifinfo
@tex
$${{1\over{n}}{\sum_{i=1}^{n}{x_{i}^k}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c noncentral_moment (s1, 1), numer; /* the mean */
@c s2 : read_matrix (file_search ("wind.data"))$
@c noncentral_moment (s2, 5);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) noncentral_moment (s1, 1), numer; /* the mean */
(%o4)                         4.71
(%i6) s2 : read_matrix (file_search ("wind.data"))$
(%i7) noncentral_moment (s2, 5);
(%o7) [319793.8724761506, 320532.1923892463, 391249.5621381556, 
                            2502278.205988911, 1691881.797742255]
@end example

См. также функцию @code{central_moment}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} central_moment (@var{list}, @var{k})
@deffnx {Функция} central_moment (@var{matrix}, @var{k})
Центральный момент порядка @math{k}, определенный как
@ifhtml
@example
                    n
                  ====
              1   \          _ k
              -    >    (x - x)
              n   /       i
                  ====
                  i = 1
@end example
@end ifhtml
@ifinfo
@example
                    n
                  ====
              1   \          _ k
              -    >    (x - x)
              n   /       i
                  ====
                  i = 1
@end example
@end ifinfo
@tex
$${{1\over{n}}{\sum_{i=1}^{n}{(x_{i}-\bar{x})^k}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c central_moment (s1, 2), numer; /* the variance */
@c s2 : read_matrix (file_search ("wind.data"))$
@c central_moment (s2, 3);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) central_moment (s1, 2), numer; /* the variance */
(%o4)                   8.425899999999999
(%i6) s2 : read_matrix (file_search ("wind.data"))$
(%i7) central_moment (s2, 3);
(%o7) [11.29584771375004, 16.97988248298583, 5.626661952750102, 
                             37.5986572057918, 25.85981904394192]
@end example

См. также функции @code{central_moment} и @code{mean}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} cv (@var{list})
@deffnx {Функция} cv (@var{matrix})
Коэффициент дисперсии есть отношение стандартного отклонения @code{std} к 
среднему значению @code{mean},

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c cv (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c cv (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) cv (s1), numer;
(%o4)                   .6193977819764815
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) cv (s2);
(%o6) [.4192426091090204, .3829365309260502, 0.363779605385983, 
                            .3627381836021478, .3346021393989506]
@end example

См. также функции @code{std} и @code{mean}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} mini (@var{list})
@deffnx {Функция} mini (@var{matrix})
Минимальное значение выборки @var{list},

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c mini (s1);
@c s2 : read_matrix (file_search ("wind.data"))$
@c mini (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) mini (s1);
(%o4)                           0
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) mini (s2);
(%o6)             [0.58, 0.5, 2.67, 5.25, 5.17]
@end example

См. также функцию @code{maxi}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} maxi (@var{list})
@deffnx {Функция} maxi (@var{matrix})
Максимальное значение выборки @var{list},

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c maxi (s1);
@c s2 : read_matrix (file_search ("wind.data"))$
@c maxi (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) maxi (s1);
(%o4)                           9
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) maxi (s2);
(%o6)          [20.25, 21.46, 20.04, 29.63, 27.63]
@end example

См. также функцию @code{mini}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} range (@var{list})
@deffnx {Функция} range (@var{matrix})
Разница между экстремальными значениями выборки.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c range (s1);
@c s2 : read_matrix (file_search ("wind.data"))$
@c range (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) range (s1);
(%o4)                           9
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) range (s2);
(%o6)          [19.67, 20.96, 17.37, 24.38, 22.46]
@end example

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} quantile (@var{list}, @var{p})
@deffnx {Функция} quantile (@var{matrix}, @var{p})
Есть @var{p}-квантиль выборки @var{list}, где @var{p} есть число в пределах @math{[0, 1]}.
Хотя существует несколько определений квантили 
(Hyndman, R. J., Fan, Y. (1996) @var{Sample quantiles in statistical packages}. 
American Statistician, 50, 361-365), 
в пакете @code{descriptive} используется определение, основанное на линейной интерполяции.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c /* 1st and 3rd quartiles */ 
@c          [quantile (s1, 1/4), quantile (s1, 3/4)], numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c quantile (s2, 1/4);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) /* 1st and 3rd quartiles */
         [quantile (s1, 1/4), quantile (s1, 3/4)], numer;
(%o4)                      [2.0, 7.25]
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) quantile (s2, 1/4);
(%o6)    [7.2575, 7.477500000000001, 7.82, 11.28, 11.48]
@end example

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} median (@var{list})
@deffnx {Функция} median (@var{matrix})
Когда выборка упорядочена, то, если размер выборки нечетен, что медиана есть центральное значение,
иначе она есть среднее двух центральных значений.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c median (s1);
@c s2 : read_matrix (file_search ("wind.data"))$
@c median (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) median (s1);
                                9
(%o4)                           -
                                2
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) median (s2);
(%o6)         [10.06, 9.855, 10.73, 15.48, 14.105]
@end example

Медиана есть 1/2-квантиль.

См. также функцию @code{quantile}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} qrange (@var{list})
@deffnx {Функция} qrange (@var{matrix})
Интерквартильный размах есть разница между третьей и первой квартилью 
@code{quantile(@var{list},3/4) - quantile(@var{list},1/4)},

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c qrange (s1);
@c s2 : read_matrix (file_search ("wind.data"))$
@c qrange (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) qrange (s1);
                               21
(%o4)                          --
                               4
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) qrange (s2);
(%o6) [5.385, 5.572499999999998, 6.0225, 8.729999999999999, 
                                               6.650000000000002]
@end example

См. также функцию @code{quantile}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} mean_deviation (@var{list})
@deffnx {Функция} mean_deviation (@var{matrix})
Среднее отклонение, определяемое как
@ifhtml
@example
                     n
                   ====
               1   \          _
               -    >    |x - x|
               n   /       i
                   ====
                   i = 1
@end example
@end ifhtml
@ifinfo
@example
                     n
                   ====
               1   \          _
               -    >    |x - x|
               n   /       i
                   ====
                   i = 1
@end example
@end ifinfo
@tex
$${{1\over{n}}{\sum_{i=1}^{n}{|x_{i}-\bar{x}|}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c mean_deviation (s1);
@c s2 : read_matrix (file_search ("wind.data"))$
@c mean_deviation (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) mean_deviation (s1);
                               51
(%o4)                          --
                               20
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) mean_deviation (s2);
(%o6) [3.287959999999999, 3.075342, 3.23907, 4.715664000000001, 
                                               4.028546000000002]
@end example

См. также функцию @code{mean}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} median_deviation (@var{list})
@deffnx {Функция} median_deviation (@var{matrix})
Медианное отклонение, определенное как 
@ifhtml
@example
                 n
               ====
           1   \
           -    >    |x - med|
           n   /       i
               ====
               i = 1
@end example
@end ifhtml
@ifinfo
@example
                 n
               ====
           1   \
           -    >    |x - med|
           n   /       i
               ====
               i = 1
@end example
@end ifinfo
@tex
$${{1\over{n}}{\sum_{i=1}^{n}{|x_{i}-med|}}}$$
@end tex
где @code{med} есть медиана выборки @var{list}.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c median_deviation (s1);
@c s2 : read_matrix (file_search ("wind.data"))$
@c median_deviation (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) median_deviation (s1);
                                5
(%o4)                           -
                                2
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) median_deviation (s2);
(%o6)           [2.75, 2.755, 3.08, 4.315, 3.31]
@end example

См. также функцию @code{mean}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} harmonic_mean (@var{list})
@deffnx {Функция} harmonic_mean (@var{matrix})
Гармоническое среднее, определенное как
@ifhtml
@example
                  n
               --------
                n
               ====
               \     1
                >    --
               /     x
               ====   i
               i = 1
@end example
@end ifhtml
@ifinfo
@example
                  n
               --------
                n
               ====
               \     1
                >    --
               /     x
               ====   i
               i = 1
@end example
@end ifinfo
@tex
$${{n}\over{\sum_{i=1}^{n}{{{1}\over{x_{i}}}}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c y : [5, 7, 2, 5, 9, 5, 6, 4, 9, 2, 4, 2, 5]$
@c harmonic_mean (y), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c harmonic_mean (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) y : [5, 7, 2, 5, 9, 5, 6, 4, 9, 2, 4, 2, 5]$
(%i4) harmonic_mean (y), numer;
(%o4)                   3.901858027632205
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) harmonic_mean (s2);
(%o6) [6.948015590052786, 7.391967752360356, 9.055658197151745, 
                            13.44199028193692, 13.01439145898509]
@end example

См. также функции @code{mean} и @code{geometric_mean}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} geometric_mean (@var{list})
@deffnx {Функция} geometric_mean (@var{matrix})
Геометрическое среднее, определенное как
@ifhtml
@example
                 /  n      \ 1/n
                 | /===\   |
                 |  ! !    |
                 |  ! !  x |
                 |  ! !   i|
                 | i = 1   |
                 \         /
@end example
@end ifhtml
@ifinfo
@example
                 /  n      \ 1/n
                 | /===\   |
                 |  ! !    |
                 |  ! !  x |
                 |  ! !   i|
                 | i = 1   |
                 \         /
@end example
@end ifinfo
@tex
$$\left(\prod_{i=1}^{n}{x_{i}}\right)^{{{1}\over{n}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c y : [5, 7, 2, 5, 9, 5, 6, 4, 9, 2, 4, 2, 5]$
@c geometric_mean (y), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c geometric_mean (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) y : [5, 7, 2, 5, 9, 5, 6, 4, 9, 2, 4, 2, 5]$
(%i4) geometric_mean (y), numer;
(%o4)                   4.454845412337012
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) geometric_mean (s2);
(%o6) [8.82476274347979, 9.22652604739361, 10.0442675714889, 
                            14.61274126349021, 13.96184163444275]
@end example

См. также функции @code{mean} и @code{harmonic_mean}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} kurtosis (@var{list})
@deffnx {Функция} kurtosis (@var{matrix})
Коэффициент куртозиса, определенный как
@ifhtml
@example
                    n
                  ====
            1     \          _ 4
           ----    >    (x - x)  - 3
              4   /       i
           n s    ====
                  i = 1
@end example
@end ifhtml
@ifinfo
@example
                    n
                  ====
            1     \          _ 4
           ----    >    (x - x)  - 3
              4   /       i
           n s    ====
                  i = 1
@end example
@end ifinfo
@tex
$${{1\over{n s^4}}{\sum_{i=1}^{n}{(x_{i}-\bar{x})^4}}-3}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c kurtosis (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c kurtosis (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) kurtosis (s1), numer;
(%o4)                  - 1.273247946514421
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) kurtosis (s2);
(%o6) [- .2715445622195385, 0.119998784429451, 
   - .4275233490482866, - .6405361979019522, - .4952382132352935]
@end example

См. также функции @code{mean}, @code{var} и @code{skewness}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} skewness (@var{list})
@deffnx {Функция} skewness (@var{matrix})
Коэффициент асимметрии, определенный как
@ifhtml
@example
                    n
                  ====
            1     \          _ 3
           ----    >    (x - x)
              3   /       i
           n s    ====
                  i = 1
@end example
@end ifhtml
@ifinfo
@example
                    n
                  ====
            1     \          _ 3
           ----    >    (x - x)
              3   /       i
           n s    ====
                  i = 1
@end example
@end ifinfo
@tex
$${{1\over{n s^3}}{\sum_{i=1}^{n}{(x_{i}-\bar{x})^3}}}$$
@end tex

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c skewness (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c skewness (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) skewness (s1), numer;
(%o4)                  .009196180476450306
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) skewness (s2);
(%o6) [.1580509020000979, .2926379232061854, .09242174416107717, 
                            .2059984348148687, .2142520248890832]
@end example

См. также функции @code{mean}, @code{var} и @code{kurtosis}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} pearson_skewness (@var{list})
@deffnx {Функция} pearson_skewness (@var{matrix})
Коэффициент асимметрии Парсона, определенные как  
@ifhtml
@example
                _
             3 (x - med)
             -----------
                  s
@end example
@end ifhtml
@ifinfo
@example
                _
             3 (x - med)
             -----------
                  s
@end example
@end ifinfo
@tex
$${{3\,\left(\bar{x}-med\right)}\over{s}}$$
@end tex
где @var{med} -- медиана @var{list}.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c pearson_skewness (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c pearson_skewness (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) pearson_skewness (s1), numer;
(%o4)                   .2159484029093895
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) pearson_skewness (s2);
(%o6) [- .08019976629211892, .2357036272952649, 
         .1050904062491204, .1245042340592368, .4464181795804519]
@end example

См. также функции @code{mean}, @code{var} и @code{median}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} quartile_skewness (@var{list})
@deffnx {Функция} quartile_skewness (@var{matrix})
Коэффициент квартильной асимметрии, определенный как 
@ifhtml
@example
               c    - 2 c    + c
                3/4      1/2    1/4
               --------------------
                   c    - c
                    3/4    1/4
@end example
@end ifhtml
@ifinfo
@example
               c    - 2 c    + c
                3/4      1/2    1/4
               --------------------
                   c    - c
                    3/4    1/4
@end example
@end ifinfo
@tex
$${{c_{{{3}\over{4}}}-2\,c_{{{1}\over{2}}}+c_{{{1}\over{4}}}}\over{c
 _{{{3}\over{4}}}-c_{{{1}\over{4}}}}}$$
@end tex
где @math{c_p} есть @var{p}-квартиль выборки @var{list}.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c quartile_skewness (s1), numer;
@c s2 : read_matrix (file_search ("wind.data"))$
@c quartile_skewness (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) quartile_skewness (s1), numer;
(%o4)                  .04761904761904762
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) quartile_skewness (s2);
(%o6) [- 0.0408542246982353, .1467025572005382, 
       0.0336239103362392, .03780068728522298, 0.210526315789474]
@end example

См. также функцию @code{quantile}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@node Функции и переменные для многомерной описательной статистики, Функции и переменные для статистических графиков, Функции и переменные для описательной статистики, Пакет descriptive
@section Функции и переменные для многомерной описательной статистики



@deffn {Функция} cov (@var{matrix})
Матрица ковариации многомерной выборки, определенная как
@ifhtml
@example
              n
             ====
          1  \           _        _
      S = -   >    (X  - X) (X  - X)'
          n  /       j        j
             ====
             j = 1
@end example
@end ifhtml
@ifinfo
@example
              n
             ====
          1  \           _        _
      S = -   >    (X  - X) (X  - X)'
          n  /       j        j
             ====
             j = 1
@end example
@end ifinfo
@tex
$${S={1\over{n}}{\sum_{j=1}^{n}{\left(X_{j}-\bar{X}\right)\,\left(X_{j}-\bar{X}\right)'}}}$$
@end tex
где @math{X_j} есть @math{j}-й столбец матрицы выборки.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c fpprintprec : 7$  /* change precision for pretty output */
@c cov (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) fpprintprec : 7$  /* change precision for pretty output */
(%i5) cov (s2);
      [ 17.22191  13.61811  14.37217  19.39624  15.42162 ]
      [                                                  ]
      [ 13.61811  14.98774  13.30448  15.15834  14.9711  ]
      [                                                  ]
(%o5) [ 14.37217  13.30448  15.47573  17.32544  16.18171 ]
      [                                                  ]
      [ 19.39624  15.15834  17.32544  32.17651  20.44685 ]
      [                                                  ]
      [ 15.42162  14.9711   16.18171  20.44685  24.42308 ]
@end example

См. также функцию @code{cov1}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} cov1 (@var{matrix})
Матрица ковариации многомерной выборки, определенная как
@ifhtml
@example
              n
             ====
         1   \           _        _
   S  = ---   >    (X  - X) (X  - X)'
    1   n-1  /       j        j
             ====
             j = 1
@end example
@end ifhtml
@ifinfo
@example
              n
             ====
         1   \           _        _
   S  = ---   >    (X  - X) (X  - X)'
    1   n-1  /       j        j
             ====
             j = 1
@end example
@end ifinfo
@tex
$${{1\over{n-1}}{\sum_{j=1}^{n}{\left(X_{j}-\bar{X}\right)\,\left(X_{j}-\bar{X}\right)'}}}$$
@end tex
где @math{X_j} есть @math{j}-й столбец матрицы выборки.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c fpprintprec : 7$ /* change precision for pretty output */
@c cov1 (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) fpprintprec : 7$ /* change precision for pretty output */
(%i5) cov1 (s2);
      [ 17.39587  13.75567  14.51734  19.59216  15.5774  ]
      [                                                  ]
      [ 13.75567  15.13913  13.43887  15.31145  15.12232 ]
      [                                                  ]
(%o5) [ 14.51734  13.43887  15.63205  17.50044  16.34516 ]
      [                                                  ]
      [ 19.59216  15.31145  17.50044  32.50153  20.65338 ]
      [                                                  ]
      [ 15.5774   15.12232  16.34516  20.65338  24.66977 ]
@end example

См. также функцию @code{cov}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} global_variances (@var{matrix})
@deffnx {Функция} global_variances (@var{matrix}, @var{logical_value})
Функция @code{global_variances} возвращает список глобальных измерений дисперсии:

@itemize @bullet
@item
@var{полная дисперсия}: @code{trace(S_1)},
@item
@var{средняя дисперсия}: @code{trace(S_1)/p},
@item
@var{обобщенная дисперсия}: @code{determinant(S_1)},
@item
@var{обобщенное стандартное отклонение}: @code{sqrt(determinant(S_1))},
@item
@var{эффективная дисперсия} @code{determinant(S_1)^(1/p)}, (определена в: Pe@~na, D. (2002) @var{An@'alisis de datos multivariantes}; McGraw-Hill, Madrid.)
@item
@var{эффективное стандартное отклонение}: @code{determinant(S_1)^(1/(2*p))}.
@end itemize
где @var{p} есть размерность многомерной случайной переменной а @math{S_1} 
есть матрица ковариации, возвращаемая @code{cov1}.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c global_variances (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) global_variances (s2);
(%o4) [105.338342060606, 21.06766841212119, 12874.34690469686, 
         113.4651792608502, 6.636590811800794, 2.576158149609762]
@end example

Функция @code{global_variances} имеет необязательный логический аргумент: 
@code{global_variances(x,true)} сообщает Maxima, что @code{x} есть матрица данных,
что дает результат идентичный @code{global_variances(x)}. 
С другой стороны, @code{global_variances(x,false)} означает, что @code{x} не является матрицей данных 
а является матрицей ковариации, что позволяет избежать перевычисления

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c s : cov1 (s2)$
@c global_variances (s, false);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) s : cov1 (s2)$
(%i5) global_variances (s, false);
(%o5) [105.338342060606, 21.06766841212119, 12874.34690469686, 
         113.4651792608502, 6.636590811800794, 2.576158149609762]
@end example

См. также @code{cov} и @code{cov1}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} cor (@var{matrix})
@deffnx {Функция} cor (@var{matrix}, @var{logical_value})
Матрица корреляции многомерной выборки.

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c fpprintprec:7$
@c s2 : read_matrix (file_search ("wind.data"))$
@c cor (s2);
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) fpprintprec:7$
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) cor (s2);
      [   1.0     .8476339  .8803515  .8239624  .7519506 ]
      [                                                  ]
      [ .8476339    1.0     .8735834  .6902622  0.782502 ]
      [                                                  ]
(%o5) [ .8803515  .8735834    1.0     .7764065  .8323358 ]
      [                                                  ]
      [ .8239624  .6902622  .7764065    1.0     .7293848 ]
      [                                                  ]
      [ .7519506  0.782502  .8323358  .7293848    1.0    ]
@end example

Функция @code{cor} имеет необязательный логический аргумент: 
@code{cor(x,true)} сообщает Maxima, что @code{x} есть матрица данных,
что дает результат идентичный @code{cor(x)}. 
С другой стороны, @code{cor(x,false)} означает, что @code{x} не является матрицей данных 
а является матрицей ковариации, что позволяет избежать перевычисления

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c fpprintprec:7$
@c s2 : read_matrix (file_search ("wind.data"))$
@c s : cov1 (s2)$
@c cor (s, false); /* this is faster */
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) fpprintprec:7$
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) s : cov1 (s2)$
(%i6) cor (s, false); /* this is faster */
      [   1.0     .8476339  .8803515  .8239624  .7519506 ]
      [                                                  ]
      [ .8476339    1.0     .8735834  .6902622  0.782502 ]
      [                                                  ]
(%o6) [ .8803515  .8735834    1.0     .7764065  .8323358 ]
      [                                                  ]
      [ .8239624  .6902622  .7764065    1.0     .7293848 ]
      [                                                  ]
      [ .7519506  0.782502  .8323358  .7293848    1.0    ]
@end example

См. также @code{cov} и @code{cov1}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn



@deffn {Функция} list_correlations (@var{matrix})
@deffnx {Функция} list_correlations (@var{matrix}, @var{logical_value})
Функция @code{list_correlations} возвращает список мер корреляции:

@itemize @bullet

@item
@var{матрица точности}: обратная к матрице ковариации @math{S_1},
@ifhtml
@example
       -1     ij
      S   = (s  )             
       1         i,j = 1,2,...,p
@end example
@end ifhtml
@ifinfo
@example
       -1     ij
      S   = (s  )             
       1         i,j = 1,2,...,p
@end example
@end ifinfo
@tex
$${S_{1}^{-1}}={\left(s^{ij}\right)_{i,j=1,2,\ldots, p}}$$
@end tex

@item
@var{вектор множественной корреляции}:  @math{(R_1^2, R_2^2, ..., R_p^2)}, где 
@ifhtml
@example
       2          1
      R  = 1 - -------
       i        ii
               s   s
                    ii
@end example
@end ifhtml
@ifinfo
@example
       2          1
      R  = 1 - -------
       i        ii
               s   s
                    ii
@end example
@end ifinfo
@tex
$${R_{i}^{2}}={1-{{1}\over{s^{ii}s_{ii}}}}$$
@end tex
является показателем качества предсказания линейной многомерной регрессии по @math{X_i}, 
когда остальные переменные используются как регрессоры.

@item
@var{матрица частичной корреляции}: с элементом @math{(i, j)} равным
@ifhtml
@example
                         ij
                        s
      r        = - ------------
       ij.rest     / ii  jj\ 1/2
                   |s   s  |
                   \       /
@end example
@end ifhtml
@ifinfo
@example
                         ij
                        s
      r        = - ------------
       ij.rest     / ii  jj\ 1/2
                   |s   s  |
                   \       /
@end example
@end ifinfo
@tex
$${r_{ij.rest}}={-{{s^{ij}}\over \sqrt{s^{ii}s^{jj}}}}$$
@end tex

@end itemize

Пример:

@c ===beg===
@c load ("descriptive")$
@c load ("numericalio")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c z : list_correlations (s2)$
@c fpprintprec : 5$ /* for pretty output */
@c z[1];  /* precision matrix */
@c z[2];  /* multiple correlation vector */
@c z[3];  /* partial correlation matrix */
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) z : list_correlations (s2)$
(%i5) fpprintprec : 5$ /* for pretty output */
(%i6) z[1];  /* precision matrix */
      [  .38486   - .13856   - .15626   - .10239    .031179  ]
      [                                                      ]
      [ - .13856   .34107    - .15233    .038447   - .052842 ]
      [                                                      ]
(%o6) [ - .15626  - .15233    .47296    - .024816  - .10054  ]
      [                                                      ]
      [ - .10239   .038447   - .024816   .10937    - .034033 ]
      [                                                      ]
      [ .031179   - .052842  - .10054   - .034033   .14834   ]
(%i7) z[2];  /* multiple correlation vector */
(%o7)       [.85063, .80634, .86474, .71867, .72675]
(%i8) z[3];  /* partial correlation matrix */
       [  - 1.0     .38244   .36627   .49908   - .13049 ]
       [                                                ]
       [  .38244    - 1.0    .37927  - .19907   .23492  ]
       [                                                ]
(%o8)  [  .36627    .37927   - 1.0    .10911    .37956  ]
       [                                                ]
       [  .49908   - .19907  .10911   - 1.0     .26719  ]
       [                                                ]
       [ - .13049   .23492   .37956   .26719    - 1.0   ]
@end example

Функция @code{list_correlations} имеет необязательный логический аргумент: 
@code{list_correlations(x,true)} сообщает Maxima, что @code{x} есть матрица данных,
что дает результат идентичный @code{list_correlations(x)}. 
С другой стороны, @code{list_correlations(x,false)} означает, что @code{x} не является матрицей данных 
а является матрицей ковариации, что позволяет избежать перевычисления

См. также @code{cov} и @code{cov1}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@closecatbox

@end deffn


@node Функции и переменные для статистических графиков,  , Функции и переменные для многомерной описательной статистики, Пакет descriptive
@section Функции и переменные для статистических графиков


@deffn {Функция} histogram (@var{list})
@deffnx {Функция} histogram (@var{list}, @var{option_1}, @var{option_2}, ...)
@deffnx {Функция} histogram (@var{one_column_matrix})
@deffnx {Функция} histogram (@var{one_column_matrix}, @var{option_1}, @var{option_2}, ...)
@deffnx {Функция} histogram (@var{one_row_matrix})
@deffnx {Функция} histogram (@var{one_row_matrix}, @var{option_1}, @var{option_2}, ...)
Эта функция строит гистограмму для непрерывной выборки.
Данные выборки должны быть представлены в виде списка или одномерной матрицы.

Доступны следующие опции:

@itemize @bullet
@item
Опции, определенные в пакете @code{draw}. См. также @code{bars} и @code{barsplot}.
@item
@var{nclasses} - число классов в гистограмме (10 по умолчанию).
@end itemize

См. также @code{discrete_freq} и @code{continuous_freq} для подсчета данных,
и @code{bars} и @code{barsplot} для построения гистограмм непрерывных данных.

Примеры:

Простая гистограмма с восемью классами.

@c ===beg===
@c load ("descriptive")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c histogram (
@c      s1,
@c      nclasses     = 8,
@c      title        = "pi digits",
@c      xlabel       = "digits",
@c      ylabel       = "Absolute frequency",
@c      fill_color   = grey,
@c      fill_density = 0.6)$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) histogram (
        s1,
        nclasses     = 8,
        title        = "pi digits",
        xlabel       = "digits",
        ylabel       = "Absolute frequency",
        fill_color   = grey,
        fill_density = 0.6)$
@end example

@opencatbox{Категории:}
@category{Пакет descriptive}
@category{Графика}
@closecatbox

@end deffn



@deffn {Функция} scatterplot (@var{list})
@deffnx {Функция} scatterplot (@var{list}, @var{option_1}, @var{option_2}, ...)
@deffnx {Функция} scatterplot (@var{matrix})
@deffnx {Функция} scatterplot (@var{matrix}, @var{option_1}, @var{option_2}, ...)
Строит корреляционную диаграмму (scatter diagrams) для одномерной (@var{list}) или
многомерной (@var{matrix}) выборки. 

Доступны следующие опции:

@itemize @bullet
@item
Опции, определенные в пакете @code{draw}.
@item
@var{nclasses} - число классов в гистограмме (10 по умолчанию).
@end itemize

Примеры:

Одномерная корреляционная диаграмма для гауссовой выборки. 

@c ===beg===
@c load ("descriptive")$
@c load ("distrib")$
@c scatterplot(
@c   random_normal(0,1,200),
@c   xaxis      = true,
@c   point_size = 2,
@c   terminal   = eps,
@c   eps_width  = 10,
@c   eps_height = 2)$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) load ("distrib")$
(%i3) scatterplot(
        random_normal(0,1,200),
        xaxis      = true,
        point_size = 2,
        terminal   = eps,
        eps_width  = 10,
        eps_height = 2)$
@end example

Двумерная корреляционная диаграмма.

@c ===beg===
@c load ("descriptive")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c scatterplot(
@c  submatrix(s2, 1,2,3),
@c  title      = "Data from stations #4 and #5",
@c  point_type = diamant,
@c  point_size = 2,
@c  color      = blue)$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) scatterplot(
        submatrix(s2, 1,2,3),
        title      = "Data from stations #4 and #5",
        point_type = diamant,
        point_size = 2,
        color      = blue)$
@end example

Трехмерная корреляционная диаграмма.

@c ===beg===
@c load ("descriptive")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c scatterplot(submatrix (s2, 1,2))$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) scatterplot(submatrix (s2, 1,2))$
@end example

Пятимерная корреляционная диаграмма, с гистограммой, содержащей пать классов.

@c ===beg===
@c load ("descriptive")$
@c s2 : read_matrix (file_search ("wind.data"))$
@c scatterplot(
@c   s2,
@c   nclasses     = 5,
@c   fill_color   = blue,
@c   fill_density = 0.3,
@c   xtics        = 5)$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) scatterplot(
        s2,
        nclasses     = 5,
        fill_color   = blue,
        fill_density = 0.3,
        xtics        = 5)$
@end example

По поводу построения точек в двух или трех измерениях, соединенных линиями, см. @code{points}. 
См. @code{bars} по поводу опций, управляющих выводом гистограмм. 

См. также @code{histogram}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@category{Графика}
@closecatbox

@end deffn


@deffn {Функция} barsplot (@var{list})
@deffnx {Функция} barsplot (@var{list}, @var{option_1}, @var{option_2}, ...)
@deffnx {Функция} barsplot (@var{one_column_matrix})
@deffnx {Функция} barsplot (@var{one_column_matrix}, @var{option_1}, @var{option_2}, ...)
@deffnx {Функция} barsplot (@var{one_row_matrix})
@deffnx {Функция} barsplot (@var{one_row_matrix}, @var{option_1}, @var{option_2}, ...)
Аналогична @code{histogram} но для дискретных, численных или категоризированных,
статистических переменных.

Доступны следующие опции:

@itemize @bullet
@item
Опции, определенные в пакете @code{draw}.
@item
@var{box_width} -- относительная ширина прямоугольников (@code{3/4} по умолчанию).
Это число должно быть в интервале @code{[0,1]}.
@end itemize


Пример:

@c ===beg===
@c load ("descriptive")$
@c s3 : read_matrix (file_search ("biomed.data"))$
@c barsplot(col(s3,2),
@c   title        = "Ages",
@c   xlabel       = "years",
@c   box_width    = 1/2,
@c   fill_density = 0.3)$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) barsplot(col(s3,2),
         title        = "Ages",
         xlabel       = "years",
         box_width    = 1/2,
         fill_density = 0.3)$
@end example

По поводу опций, управляющих выводом диаграмм, см. @code{bars} пакета @code{draw}.
См. также функции @code{histogram} и @code{piechart}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@category{Графика}
@closecatbox

@end deffn


@deffn {Функция} piechart (@var{list})
@deffnx {Функция} piechart (@var{list}, @var{option_1}, @var{option_2}, ...)
@deffnx {Функция} piechart (@var{one_column_matrix})
@deffnx {Функция} piechart (@var{one_column_matrix}, @var{option_1}, @var{option_2}, ...)
@deffnx {Функция} piechart (@var{one_row_matrix})
@deffnx {Функция} piechart (@var{one_row_matrix}, @var{option_1}, @var{option_2}, ...)
Аналогична @code{barsplot}, но вместо прямоугольников строит сектора, т.е. круговую диаграмму.

Доступны следующие опции:

@itemize @bullet
@item
Опции, определенные в пакете @code{draw}.
@item
@var{pie_center} -- центр диаграммы (@code{[0,0]} по умолчанию).
@item
@var{pie_radius} -- радиус диаграммы (1 по умолчанию).
@end itemize

Пример:

@c ===beg===
@c load ("descriptive")$
@c s1 : read_list (file_search ("pidigits.data"))$
@c piechart(
@c   s1,
@c   xrange      = [-1.1, 1.3],
@c   yrange      = [-1.1, 1.1],
@c   axis_top    = false,
@c   axis_right  = false,
@c   axis_left   = false,
@c   axis_bottom = false,
@c   xtics       = none,
@c   ytics       = none,
@c   title       = "Digit frequencies in pi")$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) piechart(
        s1,
        xrange      = [-1.1, 1.3],
        yrange      = [-1.1, 1.1],
        axis_top    = false,
        axis_right  = false,
        axis_left   = false,
        axis_bottom = false,
        xtics       = none,
        ytics       = none,
        title       = "Digit frequencies in pi")$
@end example

См. также @code{barsplot}.

@opencatbox{Категории:}
@category{Пакет descriptive}
@category{Графика}
@closecatbox

@end deffn


@deffn {Функция} boxplot (@var{data})
@deffnx {Функция} boxplot (@var{data}, @var{option_1}, @var{option_2}, ...)
Эта функция строит диаграмму типа "ящик-с-усами" (box-and-whishker). 
Аргумент @var{data} может быть списком, что не представляет большого
интереса, т.к. подобные диаграммы в основном используются для
сравнения различных выборок или матриц, чтобы сравнить две или более 
компонент многомерной выборки.
Но @var{data} также может быть списком выборок, возможно различной длины 
(это единственная функция в пакете @code{descriptive}, которая допускает
такой тип данных). 

Доступны следующие опции:

@itemize @bullet
@item
Опции, определенные в пакете @code{draw}.
@item
@var{box_width} - относительная ширина ящиков (@code{3/4} по умолчанию). 
Это число должно быть в интервале @code{[0,1]}.
@end itemize

Примеры:

Диаграмма "ящик-с-усами" для многомерной выборки.

@c ===beg===
@c load ("descriptive")$
@c s2 : read_matrix(file_search("wind.data"))$
@c boxplot(s2,
@c   box_width  = 0.2,
@c   title      = "Windspeed in knots",
@c   xlabel     = "Stations",
@c   color      = red,
@c   line_width = 2)$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix(file_search("wind.data"))$
(%i3) boxplot(s2,
        box_width  = 0.2,
        title      = "Windspeed in knots",
        xlabel     = "Stations",
        color      = red,
        line_width = 2) $
@end example

Диаграмма "ящик-с-усами" для трех выборок различной длины.

@c ===beg===
@c load ("descriptive")$
@c A :
@c  [[6, 4, 6, 2, 4, 8, 6, 4, 6, 4, 3, 2],
@c   [8, 10, 7, 9, 12, 8, 10],
@c   [16, 13, 17, 12, 11, 18, 13, 18, 14, 12]]$
@c boxplot (A)$
@c ===end===
@example
(%i1) load ("descriptive")$
(%i2) A :
       [[6, 4, 6, 2, 4, 8, 6, 4, 6, 4, 3, 2],
        [8, 10, 7, 9, 12, 8, 10],
        [16, 13, 17, 12, 11, 18, 13, 18, 14, 12]]$
(%i3) boxplot (A)$
@end example

@opencatbox{Категории:}
@category{Пакет descriptive}
@category{Графика}
@closecatbox

@end deffn

