Siguiente: , Anterior: , Subir: descriptive   [Índice general][Índice]

44.2 Funciones y variables para el tratamiento de datos

Función: build_sample (list)
Función: build_sample (matrix)

Construye una muestra a partir de una tabla de frecuencias absolutas. La tabla de entrada puede ser una una matriz o una lista de listas, todas ellas de igual tamaño. El número de columnas o la longitud de las listas debe ser mayor que la unidad. El último elemento de cada fila o lista se interpreta como la frecuencia absoluta. El resultado se devuelve siempre en formato de matriz.

Ejemplos:

Tabla de frecuencias univariante.

(%i1) load ("descriptive")$
(%i2) sam1: build_sample([[6,1], [j,2], [2,1]]);
                       [ 6 ]
                       [   ]
                       [ j ]
(%o2)                  [   ]
                       [ j ]
                       [   ]
                       [ 2 ]
(%i3) mean(sam1);
                      2 j + 8
(%o3)                [-------]
                         4
(%i4) barsplot(sam1) $

Tabla de frecuencias multivariante.

(%i1) load ("descriptive")$
(%i2) sam2: build_sample([[6,3,1], [5,6,2], [u,2,1],[6,8,2]]) ;
                           [ 6  3 ]
                           [      ]
                           [ 5  6 ]
                           [      ]
                           [ 5  6 ]
(%o2)                      [      ]
                           [ u  2 ]
                           [      ]
                           [ 6  8 ]
                           [      ]
                           [ 6  8 ]
(%i3) cov(sam2);
       [   2                 2                            ]
       [  u  + 158   (u + 28)     2 u + 174   11 (u + 28) ]
       [  -------- - ---------    --------- - ----------- ]
(%o3)  [     6          36            6           12      ]
       [                                                  ]
       [ 2 u + 174   11 (u + 28)            21            ]
       [ --------- - -----------            --            ]
       [     6           12                 4             ]
(%i4) barsplot(sam2, grouping=stacked) $
Función: continuous_freq (list)
Función: continuous_freq (list, m)

El argumento de continuous_freq debe ser una lista de números. Divide el rango en intervalos y cuenta cuántos valores hay en ellos. El segundo argumento es opcional y puede ser el número de clases deseado, 10 por defecto, o una lista que contenga los límites de las clases y el número de éstas, o una lista que contenga únicamente los límites. Si los valores muestrales son todos iguales, esta función devuelve solamente una clase de amplitud 2.

Ejemplos:

El argumento opcional indica el número de clases deseadas. La primera lista de la respuesta contiene los límites de los intervalos y la segunda los totales correspondientes: hay 16 dígitos en el intervalo [0, 1.8], 24 en (1.8, 3.6] y así sucesivamente.

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

El argumento opcional indica que queremos 7 clases con límites -2 y 12:

(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) continuous_freq (s1, [-2,12,7]);
(%o3) [[- 2, 0, 2, 4, 6, 8, 10, 12], [8, 20, 22, 17, 20, 13, 0]]

El argumento opcional indica que queremos el número por defecto de clases y límites -2 y 12:

(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) continuous_freq (s1, [-2,12]);
                3  4  11  18     32  39  46  53
(%o3)  [[- 2, - -, -, --, --, 5, --, --, --, --, 12], 
                5  5  5   5      5   5   5   5
               [0, 8, 20, 12, 18, 9, 8, 25, 0, 0]]
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) s1 : read_list (file_search ("pidigits.data"))$
(%i3) discrete_freq (s1);
(%o3) [[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: standardize (list)
Función: standardize (matrix)

Resta a cada elemento de la lista la media muestral y luego divide el resultado por la desviación típica. Si la entrada es una matriz, standardize resta a cada fila la media multivariante y luego divide cada componente por la desviación típica correspondiente.

Función: subsample (data_matrix, predicate_function)
Función: subsample (data_matrix, predicate_function, 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 función de predicado y el resto de argumentos opcionales son los números de las columnas a tomar en consideración.

Estos son los registros multivariantes en los que la velocidad del viento en la primera estación meteorológica fue menor de 18 nudos. Véase cómo en la expresión lambda la i-ésima componente se la referencia como v[i].

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

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. La muestra sólo contiene los datos referidos a las estaciones 1, 2 y 5. En este caso, la función de predicado se define por medio de una función de Maxima ordinaria.

(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) g(x):= x[1] >= 16 and x[4] < 25$
(%i4) subsample (s2, g, 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) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) h(u):= u[1] = B and u[2] > 38 $
(%i4) subsample (s3, h);
                [ 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) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) subsample (s3, lambda([v], v[1] = B and v[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 ]
(%o3)              [                        ]
                   [ 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) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) mean (s3);
       65 B + 35 A  317          6 NA + 8145.0
(%o3) [-----------, ---, 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) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) g(v):= v[4] # NA and v[6] # NA $
(%i4) mean (subsample (s3, g, 3, 4, 5, 6));
(%o4) [79.4923076923077, 86.2032967032967, 16.93186813186813, 
                                                            2514
                                                            ----]
                                                             13
Función: transform_sample (matriz, varlist, exprlist)

Transforma la matriz de datos, en la que a cada columna se le asigna un nombre de acuerdo con la lista varlist, según las expresiones de exprlist.

Ejemplos:

El segundo argumento asigna nombres a las tres columnas, con ellos la lista de expresiones define la transformación de la muestra.

(%i1) load ("descriptive")$
(%i2) data: matrix([3,2,7],[3,7,2],[8,2,4],[5,2,4]) $
(%i3) transform_sample(data, [a,b,c], [c, a*b, log(a)]);
                               [ 7  6   log(3) ]
                               [               ]
                               [ 2  21  log(3) ]
(%o3)                          [               ]
                               [ 4  16  log(8) ]
                               [               ]
                               [ 4  10  log(5) ]

Añade una columna constante y elimina la tercera variable.

(%i1) load ("descriptive")$
(%i2) data: matrix([3,2,7],[3,7,2],[8,2,4],[5,2,4]) $
(%i3) transform_sample(data, [a,b,c], [makelist(1,k,length(data)),a,b]);
                                  [ 1  3  2 ]
                                  [         ]
                                  [ 1  3  7 ]
(%o3)                             [         ]
                                  [ 1  8  2 ]
                                  [         ]
                                  [ 1  5  2 ]

Siguiente: , Anterior: , Subir: descriptive   [Índice general][Índice]