Introducción a descriptive
==========================

El paquete descriptive contiene funciones para realizar cĺculos y gráficos estadísticos descriptivos. Junto con el código fuente se distribuyen tres conjuntos de datos: pidigits.data, wind.data y biomed.data, los cuales también se pueden descargar desde el sitio web www.biomates.net.

Cualquier manual de estadística se puede utilizar como referencia al paquete descriptive.

Para comentarios, fallos y sugerencias, por favor contactar con 'MARIO AT EDU DOT XUNTA DOT ES'.

Aquí un sencillo ejemplo sobre cómo operan las funciones de descriptive, dependiendo de la naturaleza de sus argumentos, listas o matrices,

     (%i1) load (descriptive)$
     (%i2) /* muestra univariate */   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) /* muestra multivariante */ mean (%);
                           e + c + a  f + d + b
     (%o4)                [---------, ---------]
                               3          3

Nótese que en las muestras multivariantes la media se calcula para cada columna.

En caso de varias muestras de diferente tamaño, la función map de Maxima puede utilizarse para obtener los resultados deseados para cada muestra,

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

En este caso, dos muestras de tamaños 3 y 2 han sido almacenadas en una lista.

Muestras univariantes deben guardarse en listas como en

     (%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]

y muestras multivariantes en matrices como las del siguiente ejemplo

     (%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  ]

En este caso, el número de columnas es igual al de la dimensión de la variable aleatoria y el número de filas coincide con el tamaño muestral.

Los datos pueden suministrarse manualmente, pero las muestras grandes se suelen almacenar en ficheros de texto. Por ejemplo, el fichero pidigits.data contiene los 100 primeros dígitos del número %pi:

           3
           1
           4
           1
           5
           9
           2
           6
           5
           3 ...

A fin de leer estos dígitos desde Maxima,

     (%i1) load (numericalio)$
     (%i2) s1 : read_list (file_search ("pidigits.data"))$
     (%i3) length (s1);
     (%o3)                          100

Por otro lado, el archivo wind.data contiene los promedios diarios de la velocidad del viento en cinco estaciones meteorológicas en Irlanda (esta muestra es parte de un conjunto de datos correspondientes a 12 estaciones meteorológicas. El fichero original se puede descargar libremente del 'StatLib Data Repository' y se analiza en  Haslett, J., Raftery, A. E. (1989) SPACE-TIME MODELLING WITH LONG-MEMORY DEPENDENCE: ASSESSING IRELAND'S WIND POWER RESOURCE, WITH DISCUSSION. Applied Statistics 38, 1-50). Así se leen los datos:

     (%i1) load (numericalio)$
     (%i2) s2 : read_matrix (file_search ("wind.data"))$
     (%i3) length (s2);
     (%o3)                          100
     (%i4) s2 [%]; /* ultimo registro */
     (%o4)            [3.58, 6.0, 4.58, 7.62, 11.25]

Algunas muestras contienen datos no numéricos. Como ejemplo, el archivo biomed.data (el cual es parte de otro mayor descargado también del 'StatLib Data Repository') contiene cuatro mediciones sanguíneas tomadas a dos grupos de pacientes, A y B, de diferentes edades,

     (%i1) load (numericalio)$
     (%i2) s3 : read_matrix (file_search ("biomed.data"))$
     (%i3) length (s3);
     (%o3)                          100
     (%i4) s3 [1]; /* primer registro */
     (%o4)            [A, 30, 167.0, 89.0, 25.6, 364]

El primer individuo pertenece al grupo A, tiene 30 años de edad y sus medidas sanguíneas fueron 167.0, 89.0, 25.6 y 364.

Debe tenerse cuidado cuando se trabaje con datos categóricos. En el siguiente ejemplo, se asigna al símbolo a cierto valor en algún momento previo y luego se toma una muestra con el valor categórico a,

     (%i1) a : 1$
     (%i2) matrix ([a, 3], [b, 5]);
                                 [ 1  3 ]
     (%o2)                       [      ]
                                 [ b  5 ]

Funciones y variables para el tratamiento de datos
==================================================

 -- Función: continuous_freq (LIST)
 -- Función: continuous_freq (LIST, M)
     El argumento de continuous_freq debe ser una lista de números, los cuales serán luego agrupados en intervalos y hecho el recuento de cuántos hay en cada grupo. Opcionalmente, la función continuous_freq admite un segundo argumento para indicar el número de clases a considerar, siendo 10 su valor por defecto.

          (%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]]

     La primera lista contiene los extremos de los intervalos y la segunda los resultados de los recuentos: hay 16 dígitos dentro del intervalo  [0, 1.8], esto es ceros y unos, 24 dígitos en (1.8, 3.6], es decir doses y treses, y así sucesivamente.

 -- Función: discrete_freq (LIST)
     Calcula las frecuencias absolutas en muestras discretas, tanto numéricas como categóricas. Su único argumento debe ser una lista.

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s1 : read_list (file_search ("pidigits.data"))$
          (%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]]

     La primera lista son los valores de la muestra y la segunda sus frecuencias absolutas. Las instrucciones ? col y ? transpose pueden ayudar a comprender la última entrada.

 -- Función: subsample (DATA_MATRIX, LOGICAL_EXPRESSION)
 -- Función: subsample (DATA_MATRIX, LOGICAL_EXPRESSION, COL_NUM, COL_NUM, ...)
     Esta es una variante de la función submatrix de Maxima. El primer argumento es una matriz de datos, el segundo es una expresión lógica no evaluada y el resto de argumentos opcionales son los números de las columnas a tomar en consideración,

          (%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 ]

     Estos son los registros multivariantes en los que la velocidad del viento en la primera estación meteorológica fue menor que 18. Véase cómo en la expresión lógica no evaluada a la I-ésima componente se la referencia como %c[i]. El símbolo %c[i] es utilizado dentro de la función subsample, por lo que si se utiliza también como variable categórica, Maxima puede dar resultados imprevistos. En el siguiente ejemplo, se solicitan únicamente la primera, segunda y quinta componentes de aquellos registros con velocidades del viento mayores o iguales que 16 nudos en la estación número 1 y menores que 25 nudos en la estación número 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 ]

     He aquí un ejemplo con las variables categóricas de biomed.data. Se piden los registros correspondientes a aquellos pacientes del grupo B mayores de 38 anños,

          (%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 ]

     Es probable que el análisis estadístico requiera únicamente de las medidas sanguíneas,

          (%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 ]

     Esta es la media multivariante de 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

     Aquí la primera componente carece de significado, ya que tanto A como B son categóricas, la segunda componente es la edad media de los individuos en forma racional, al tiempo que los valores cuarto y quinto muestran cierto comportamiento extraño; lo cual se debe a que el símbolo NA se utiliza para indicar datos no disponibles, por lo que ambas medias no tienen sentido. Una posible solución puede ser extraer de la matriz aquellas filas con símbolos NA, lo que acarrearía cierta pérdida de información,

          (%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

Funciones y variables de valores descriptivos
=============================================

 -- Función: mean (LIST)
 -- Función: mean (MATRIX)
     Es la media muestral, definida como

                                 n
                               ====
                       _   1   \
                       x = -    >    x
                           n   /      i
                               ====
                               i = 1

     Ejemplo:

          (%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]

 -- Función: var (LIST)
 -- Función: var (MATRIX)
     Es la varianza muestral, definida como

                               n
                             ====
                     2   1   \          _ 2
                    s  = -    >    (x - x)
                         n   /       i
                             ====
                             i = 1

     Ejemplo:

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

     Véase también var1.

 -- Función: var1 (LIST)
 -- Función: var1 (MATRIX)
     Es la cuasivarianza muestral, definida como

                               n
                             ====
                         1   \          _ 2
                        ---   >    (x - x)
                        n-1  /       i
                             ====
                             i = 1

     Ejemplo:

          (%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]

     Véase también var.

 -- Función: std (LIST)
 -- Función: std (MATRIX)
     Es la desviación típica muestral, raíz cuadrada de var.

     Ejemplo:

          (%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]

     Véanse también var y std1.

 -- Función: std1 (LIST)
 -- Función: std1 (MATRIX)
     Es la cuasidesviación típica muestral, raíz cuadrada de var1.

     Ejemplo:

          (%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]

     Véanse también var1 y std.

 -- Función: noncentral_moment (LIST, K)
 -- Función: noncentral_moment (MATRIX, K)
     Es el momento no central de orden k, definido como

                                 n
                               ====
                           1   \      k
                           -    >    x
                           n   /      i
                               ====
                               i = 1

     Ejemplo:

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s1 : read_list (file_search ("pidigits.data"))$
          (%i4) noncentral_moment (s1, 1), numer; /* la media */
          (%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]

     Véase también central_moment.

 -- Función: central_moment (LIST, K)
 -- Función: central_moment (MATRIX, K)
     Es el momento central de orden k, definido como

                              n
                            ====
                        1   \          _ k
                        -    >    (x - x)
                        n   /       i
                            ====
                            i = 1

     Ejemplo:

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s1 : read_list (file_search ("pidigits.data"))$
          (%i4) central_moment (s1, 2), numer; /* la varianza */
          (%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]

     Véanse también central_moment y mean.

 -- Función: cv (LIST)
 -- Función: cv (MATRIX)
     Es el coeficiente de variación, o cociente entre la desviación típica muestral (std) y la media (mean),

          (%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]

     Véanse también std y mean.

 -- Función: mini (LIST)
 -- Función: mini (MATRIX)
     Es el valor mínimo de la muestra LIST,

          (%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]

     Véase también maxi.

 -- Función: maxi (LIST)
 -- Función: maxi (MATRIX)
     Es el valor máximo de la muestra LIST,

          (%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]

     Véase también mini.

 -- Función: range (LIST)
 -- Función: range (MATRIX)
     Es la diferencia entre los valores extremos.

     Ejemplo:

          (%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]

 -- Función: quantile (LIST, P)
 -- Función: quantile (MATRIX, P)
     Es el P-cuantil, siendo P un número del intervalo [0, 1], de la muestra LIST. Aunque existen varias definiciones para el cuantil muestral (Hyndman, R. J., Fan, Y. (1996) SAMPLE QUANTILES IN STATISTICAL PACKAGES. American Statistician, 50, 361-365), la programada en el paquete  descriptive es la basada en la interpolación lineal.

     Ejemplo:

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s1 : read_list (file_search ("pidigits.data"))$
          (%i4) /* 1er and 3er cuartiles */
                [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]

 -- Función: median (LIST)
 -- Función: median (MATRIX)
     Una vez ordenada una muestra, si el tamaño muestral es impar la mediana es el valor central, en caso contrario será la media de los dos valores centrales.

     Ejemplo:

          (%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]

     La mediana es el cuantil 1/2.

     Véase también quantile.

 -- Función: qrange (LIST)
 -- Función: qrange (MATRIX)
     El rango intercuartílico es la diferencia entre el tercer y primer cuartil, quantile(LIST,3/4) - quantile(LIST,1/4),

          (%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]

     Véase también quantile.

 -- Función: mean_deviation (LIST)
 -- Función: mean_deviation (MATRIX)
     Es la desviación media, definida como

                               n
                             ====
                         1   \          _
                         -    >    |x - x|
                         n   /       i
                             ====
                             i = 1

     Ejemplo:

          (%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]

     Véase también mean.

 -- Función: median_deviation (LIST)
 -- Función: median_deviation (MATRIX)
     Es la desviación mediana, definida como

                           n
                         ====
                     1   \
                     -    >    |x - med|
                     n   /       i
                         ====
                         i = 1

     siendo med la mediana de LIST.

     Ejemplo:

          (%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]

     Véase también mean.

 -- Función: harmonic_mean (LIST)
 -- Función: harmonic_mean (MATRIX)
     Es la media armónica, definida como

                            n
                         --------
                          n
                         ====
                         \     1
                          >    --
                         /     x
                         ====   i
                         i = 1

     Ejemplo:

          (%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]

     Véanse también mean y geometric_mean.

 -- Función: geometric_mean (LIST)
 -- Función: geometric_mean (MATRIX)
     Es la media geométrica, definida como

                           /  n      \ 1/n
                           | /===\   |
                           |  ! !    |
                           |  ! !  x |
                           |  ! !   i|
                           | i = 1   |
                           \         /

     Ejemplo:

          (%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]

     Véanse también mean y harmonic_mean.

 -- Función: kurtosis (LIST)
 -- Función: kurtosis (MATRIX)
     Es el coeficiente de curtosis, definido como

                              n
                            ====
                      1     \          _ 4
                     ----    >    (x - x)  - 3
                        4   /       i
                     n s    ====
                            i = 1

     Ejemplo:

          (%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]

     Véanse también mean, var y skewness.

 -- Función: skewness (LIST)
 -- Función: skewness (MATRIX)
     Es el coeficiente de asimetría, definido como

                              n
                            ====
                      1     \          _ 3
                     ----    >    (x - x)
                        3   /       i
                     n s    ====
                            i = 1

     Ejemplo:

          (%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]

     Véanse también mean, var y kurtosis.

 -- Función: pearson_skewness (LIST)
 -- Función: pearson_skewness (MATRIX)
     Es el coeficiente de asimetría de Pearson, definido como

                          _
                       3 (x - med)
                       -----------
                            s

     siendo MED la mediana de LIST.

     Ejemplo:

          (%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]

     Véanse también mean, var y median.

 -- Función: quartile_skewness (LIST)
 -- Función: quartile_skewness (MATRIX)
     Es el coeficiente de asimetría cuartílico, definido como

                         c    - 2 c    + c
                          3/4      1/2    1/4
                         --------------------
                             c    - c
                              3/4    1/4

     siendo c_p el P-cuantil de la muestra LIST.

     Ejemplo:

          (%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]

     Véase también quantile.

Funciones y variables de valores descriptivos multivariantes
============================================================

 -- Función: cov (MATRIX)
     Es la matriz de covarianzas de una muestra multivariante, definida como

                        n
                       ====
                    1  \           _        _
                S = -   >    (X  - X) (X  - X)'
                    n  /       j        j
                       ====
                       j = 1

     siendo X_j la j-ésima fila de la matriz muestral.

     Ejemplo:

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s2 : read_matrix (file_search ("wind.data"))$
          (%i4) fpprintprec : 7$  /* cambia precision */
          (%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 ]

     Véase también cov1.

 -- Función: cov1 (MATRIX)
     Es la matriz de cuasivarianzas de una muestra multivariante, definida como

                        n
                       ====
                   1   \           _        _
             S  = ---   >    (X  - X) (X  - X)'
              1   n-1  /       j        j
                       ====
                       j = 1

     siendo X_j la j-ésima fila de la matriz muestral.

     Ejemplo:

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s2 : read_matrix (file_search ("wind.data"))$
          (%i4) fpprintprec : 7$ /* cambia precision */
          (%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 ]

     Véase también cov.

 -- Función: global_variances (MATRIX)
 -- Función: global_variances (MATRIX, LOGICAL_VALUE)
     La función global_variances devuelve una lista de medidas globales de variabilidad:

       * VARIANZA TOTAL: trace(S_1),

       * VARIANZA MEDIA: trace(S_1)/p,

       * VARIANZA GENERALIZADA: determinant(S_1),

       * DESVIACIÓN TÍPICA GENERALIZADA: sqrt(determinant(S_1)),

       * VARIANZA EFECTIVA determinant(S_1)^(1/p), (definida en: Peña, D. (2002) ANÁLISIS DE DATOS MULTIVARIANTES; McGraw-Hill, Madrid.)

       * DESVIACIÓN TÍPICA EFECTIVA: determinant(S_1)^(1/(2*p)).

     donde P es la dimensión de la variable aleatoria multivariante y S_1 la matriz de covarianzas devuelta por la función cov1.

     Ejemplo:

          (%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]

     La función global_variances tiene un argumento lógico opcional: global_variances(x,true) indica a Maxima que x es la matriz de datos, calculando entonces lo mismo que global_variances(x). Por otro lado, global_variances(x,false) significa que  x no es la matriz de datos, sino la de covarianzas, evitando así recalcularla,

          (%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]

     Véanse también cov y cov1.

 -- Función: cor (MATRIX)
 -- Función: cor (MATRIX, LOGICAL_VALUE)
     Es la matriz de correlaciones de la muestra multivariante.

     Ejemplo:

          (%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    ]

     La función cor tiene un argumento lógico opcional: cor(x,true) indica a Maxima que x es la matriz de datos, calculando entonces lo mismo que cor(x). Por otro lado, cor(x,false) significa que  x no es la matriz de datos, sino la de covarianzas, evitando así recalcularla,

          (%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); /* mas rapido */
                [   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    ]

     Véanse también cov y cov1.

 -- Función: list_correlations (MATRIX)
 -- Función: list_correlations (MATRIX, LOGICAL_VALUE)
     La función list_correlations devuelve una lista con medidas de correlación:

       * MATRIZ DE PRECISIÓN: es la inversa de la matriz de covarianzas S_1,

                      -1     ij
                     S   = (s  )
                      1         i,j = 1,2,...,p

       * VECTOR DE CORRELACIÓN MÚLTIPLE:  (R_1^2, R_2^2, ..., R_p^2), donde

                      2          1
                     R  = 1 - -------
                      i        ii
                              s   s
                                   ii

          es un indicador de la bondad de ajuste del modelo de regresión lineal multivariante de X_i cuando el resto de variables se utilizan como regresores.

       * MATRIZ DE CORRELACIONES PARCIALES: en la que el elemento (i, j) es

                                        ij
                                       s
                     r        = - ------------
                      ij.rest     / ii  jj\ 1/2
                                  |s   s  |
                                  \       /

     Ejemplo:

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s2 : read_matrix (file_search ("wind.data"))$
          (%i4) z : list_correlations (s2)$
          (%i5) fpprintprec : 5$ /* cambia precision */
          (%i6) z[1];  /* matriz de precision */
                [  .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];  /* vector de correlacion multiple */
          (%o7)       [.85063, .80634, .86474, .71867, .72675]
          (%i8) z[3];  /* matriz de correlaciones parciales */
                 [  - 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   ]

     La función list_correlations tiene un argumento lógico opcional: list_correlations(x,true) indica a Maxima que x es la matriz de datos, calculando entonces lo mismo que list_correlations(x). Por otro lado, list_correlations(x,false) significa que  x no es la matriz de datos, sino la de covarianzas, evitando así recalcularla.

     Véanse también cov y cov1.

Funciones y variables para gráficos estadísticos
================================================

 -- Función: dataplot (LIST)
 -- Función: dataplot (LIST, OPTION_1, OPTION_2, ...)
 -- Función: dataplot (MATRIX)
 -- Función: dataplot (MATRIX, OPTION_1, OPTION_2, ...)
     La función dataplot permite la visualización directa de datos muestrales, tanto univariantes (LIST) como multivariantes (MATRIX). Asignando valores a las siguientes opciones (OPTIONS) se pueden controlar ciertos aspectos del gráfico:

       * 'outputdev, "x" por defecto, indica el dispositivo de salida; valores aceptados son "x", "eps" y "png", para la pantalla, y los formatos de ficheros postscript y png, respectivamente.

       * 'maintitle, "" por defecto, es el título principal entre comillas dobles.

       * 'axisnames, ["x","y","z"] por defecto, es una lista con nombres para los ejes x, y y z.

       * 'joined, false por defecto, un valor lógico que indica si los puntos en 2D deben unirse por segmentos o no.

       * 'picturescales, [1.0, 1.0] por defecto, factores de escala para el tamaño del gráfico.

       * 'threedim, true por defecto, indica a Maxima si debe dibujar una matriz de tres columnas como un diagrama tridimensional o como un diagrama de dispersión multivariante. Véanse ejemplos más abajo.

       * 'axisrot, [60, 30] por defecto, cambia el punto de vista cuando 'threedim toma el valor true y los datos se suministran en una matriz de tres columnas. El primer número es el ángulo de rotación del eje X, siendo el segundo el ángulo de rotación del eje Z, ambos medidos en grados sexagesimales.

       * 'nclasses, 10 por defecto, es el número de clases a considerar en los histogramas de la diagonal de los diagramas de dispersión multivariantes.

       * 'pointstyle, 1 por defecto, es un entero que indica cómo dibujar los puntos muestrales.

     Por ejemplo, con el siguiente código se realiza un gráfico con los veinte primeros dígitos del número %pi y el resultado se guarda en un fichero en formato eps.

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s1 : read_list (file_search ("pidigits.data"))$
          (%i4) dataplot (makelist (s1[k], k, 1, 20), 'pointstyle = 3)$

     Nótese que las muestras univariantes se representan como series temporales. En el siguiente ejemplo se utilizan más datos y con diferentes opciones,

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s1 : read_list (file_search ("pidigits.data"))$
          (%i4) dataplot (makelist (s1[k], k, 1, 50),
                         'maintitle = "First pi digits",
                         'axisnames = ["digit order", "digit value"],
                         'pointstyle = 2,
                         'joined = true)$

     La función dataplot puede utilizarse para representar puntos del plano. El siguiente ejemplo es un diagrama de dispersión de los pares formados con las velocidades del viento correspondientes a las estaciones meteorológicas uno y cinco,

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s2 : read_matrix (file_search ("wind.data"))$
          (%i4) dataplot (submatrix (s2, 2, 3, 4), 'pointstyle = 2,
           'maintitle = "Pairs of wind speeds measured in knots",
           'axisnames = ["Wind speed in A", "Wind speed in E"])$

     Si los puntos están almacenados en una matriz de dos columnas, dataplot los puede dibujar directamente, pero si están guardados como una lista de pares deben transformarse previamente a una matriz, tal como se hace en el siguiente ejemplo.

          (%i1) load (descriptive)$
          (%i2) x : [[-1, 2], [5, 7], [5, -3], [-6, -9], [-4, 6]]$
          (%i3) dataplot (apply ('matrix, x), 'maintitle = "Points",
           'joined = true, 'axisnames = ["", ""], 'picturescales = [0.5, 1.0])$

     Puntos del espacio tridimensional pueden verse como proyecciones sobre un plano. Es este ejemplo se piden gráficos de las velocidades del viento correspondientes a tres estaciones meteorológicas, primero una representación tridimensional y luego como diagrama de dispersión multivariante.

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s2 : read_matrix (file_search ("wind.data"))$
          (%i4) /* grafico 3D */
                dataplot (
                   submatrix (s2, 4, 5),
                   'pointstyle = 2,
                   'maintitle = "Pairs of wind speeds measured in knots",
                   'axisnames = ["Station A", "Station B", "Station C"])$
          (%i5) /* Dispersion multivariante */
                dataplot (submatrix (s2, 4, 5),
                          'nclasses = 6,
                          'threedim = false)$

     Nótese que en este último ejemplo, el número de clases de los histogramas de la diagonal se ajusta a 6, y que a la opción 'threedim se le da el valor false.

     Para más de tres dimensiones sólo son posibles los diagramas de dispersión multivariantes, como en

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s2 : read_matrix (file_search ("wind.data"))$
          (%i4) dataplot (s2)$

 -- Función: histogram (LIST)
 -- Función: histogram (LIST, OPTION_1, OPTION_2, ...)
 -- Función: histogram (ONE_COLUMN_MATRIX)
 -- Función: histogram (ONE_COLUMN_MATRIX, OPTION_1, OPTION_2, ...)
     Dibuja un histograma. Los datos muestrales deben suministrarse como una lista de números o como una matriz columna. Asignando valores a las siguientes opciones (OPTIONS) se pueden controlar ciertos aspectos del gráfico:

       * 'outputdev, "x" por defecto, indica el dispositivo de salida; valores aceptados son "x", "eps" y "png", para la pantalla, y los formatos de ficheros postscript y png, respectivamente.

       * 'maintitle, "" por defecto, es el título principal entre comillas dobles.

       * 'axisnames, ["x", "Fr."] por defecto, es una lista con nombres para los ejes x e y.

       * 'picturescales, [1.0, 1.0] por defecto, factores de escala para el tamaño del gráfico.

       * 'nclasses, 10 por defecto, es el número de intervalos de clase.

       * 'relbarwidth, 0.9 por defecto, es un número decimal entre 0 y 1 para controlar el ancho de las barras.

       * 'barcolor, 1 por defecto, es un entero que indica el color de las barras.

       * 'colorintensity, 1 por defecto, es un número decimal entre 0 y 1 para establecer la intensidad del color.

     En los siguientes dos ejemplos se solicitan sendos histogramas para los 100 primeros dígitos del número pi y para las velocidades del viento en la estación meteorológica número 3.

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s1 : read_list (file_search ("pidigits.data"))$
          (%i4) histogram (s1,
                           'maintitle = "pi digits",
                           'axisnames = ["", "Absolute frequency"],
                           'relbarwidth = 0.2,
                           'barcolor = 3,
                           'colorintensity = 0.6)$
          (%i5) s2 : read_matrix (file_search ("wind.data"))$
          (%i6) histogram (col (s2, 3), 'colorintensity = 0.3)$

     Nótese que en el primer caso, s1 es una lista y que en el segundo col(s2,3) es una matriz.

     Véase también barsplot.

 -- Función: barsplot (LIST)
 -- Función: barsplot (LIST, OPTION_1, OPTION_2, ...)
 -- Función: barsplot (ONE_COLUMN_MATRIX)
 -- Función: barsplot (ONE_COLUMN_MATRIX, OPTION_1, OPTION_2, ...)
     Similar a histogram pero para muestras discretas, numéricas o categóricas. Estas son las variables,

       * 'outputdev, "x" por defecto, indica el dispositivo de salida; valores aceptados son "x", "eps" y "png", para la pantalla, y los formatos de ficheros postscript y png, respectivamente.

       * 'maintitle, "" por defecto, es el título principal entre comillas dobles.

       * 'axisnames, ["x", "Fr."] por defecto, es una lista con nombres para los ejes x e y.

       * 'picturescales, [1.0, 1.0] por defecto, factores de escala para el tamaño del gráfico.

       * 'relbarwidth, 0.9 por defecto, es un número decimal entre 0 y 1 para controlar el ancho de las barras.

       * 'barcolor, 1 por defecto, es un entero que indica el color de las barras.

       * 'colorintensity, 1 por defecto, es un número decimal entre 0 y 1 para establecer la intensidad del color.

     En este ejemplo se representa el gráfico de barras correspondiente a los grupos A y B de los pacientes de la muestra s3,

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s3 : read_matrix (file_search ("biomed.data"))$
          (%i4) barsplot (col (s3, 1), 'maintitle = "Groups of patients",
           'axisnames = ["Group", "# of individuals"], 'colorintensity = 0.2)$

     La primera columna de la muestra s3 almacena los valores categóricos A y B, llamados también factores. Por otro lado, los números enteros positivos en la segunda columna son las edades en años, que es una variable discreta, por lo que podemos representar las frecuencias absolutas de estos valores,

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s3 : read_matrix (file_search ("biomed.data"))$
          (%i4) barsplot (col (s3, 2), 'maintitle = "Ages",
           'axisnames = ["Years", "# of individuals"], 'colorintensity = 0.2,
           'relbarwidth = 0.6)$

     Véase también histogram.

 -- Función: boxplot (DATA)
 -- Función: boxplot (DATA, OPTION_1, OPTION_2, ...)
     Dibuja diagramas de cajas. El argumento DATA puede ser una lista, lo cual no es de gram interés puesto que estos gráficos se utilizan fundamentalmente para comparar varias muestras, o una matriz, de manera que es posible comparar dos o más componentes de una variable estadística multivariante. También se permite que DATA sea una lista de muestras con tamaños muestrales diferentes; de hecho esta es la única función del paquete descriptive que admite este tipo de estructura. Véase ejemplo más abajo. Estas son las opciones válidas:

       * 'outputdev, "x" por defecto, indica el dispositivo de salida; valores aceptados son "x", "eps" y "png", para la pantalla, y los formatos de ficheros postscript y png, respectivamente.

       * 'maintitle, "" por defecto, es el título principal entre comillas dobles.

       * 'axisnames, ["sample", "y"] por defecto, es una lista con nombres para los ejes x e y.

       * 'picturescales, [1.0, 1.0] por defecto, factores de escala para el tamaño del gráfico.

     Ejemplos:

          (%i1) load (descriptive)$
          (%i2) load (numericalio)$
          (%i3) s2 : read_matrix (file_search ("wind.data"))$
          (%i4) boxplot (s2, 'maintitle = "Windspeed in knots",
           'axisnames = ["Seasons", ""])$
          (%i5) 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]]$
          (%i6) boxplot (A)$