Próximo: , Anterior:   [Conteúdo][Índice]

44, descriptive


44.1, Introdução ao pacote descriptive

O pacote descriptive contém um conjunto de funções para fazer cálculos de estatística descritiva e desenhar gráficos. Juntamente com o código fonte três conjuntos de dados em suar árvore do Maxima: pidigits.data, wind.data e biomed.data. Eles também podem ser baixados a partir de www.biomates.net.

Qualque manual de estatística pode ser usado como referência para as funções no pacote descriptive.

Para comentários, erros ou sugestões, por favor entre em contato comigo em ’mario AT edu DOT xunta DOT es’.

Aqui está um exemplo sobre como as funções de estatística descritiva no pacote descriptive fazem esse trabalho, dependendo da natureza de seus argumentos, listas e matrizes,

(%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) /* amostra de várias variáveis */ mean (%);
                      e + c + a  f + d + b
(%o4)                [---------, ---------]
                          3          3

Note que em amostras de várias variáveis a média é calculada em cada coluna.

No caso de muitas amostras amostras com possíveis tamanhos diferentes, A função do Maxima map pode ser usada para pegar os resultados desejados de cada amostra,

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

Nesse caso, duas amostras de tamanhos 3 e 2 foram armazenadas em uma lista.

Amostras de uma única variável devem ser armazenadas em listas como

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

e amostras de várias variáveis em matrizes como em

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

Nesse caso, o número de colunas é igual à dimensão (ao número) de variáveis e o n;umero de linhas é o tamano da amostra.

Dados podem ser introduzidos manualmente, mas grandes amostras são usualmente armazenadas em ficheiros no formato texto plano. Por exemplo, o ficheiro pidigits.data contém os primeiros 100 dígitos do número %pi:

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

Com o objectivo de chamar esses dígitos no Maxima,

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

Por outro lado, o ficheiro wind.data contém a média diária de velocidades do ventoem 5 estações meteorológicas na República da Irlanda (Esses dados são parte de um conjunto de dados tomados em 12 estações meteorológicas. O ficheiro original está disponivel livremente para download no Repositório de Dados StatLib e sua análise é discutida em 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 linhas seguintes mostram como tornar os dados disponíveis para o Maxima:

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

Algumas amostras possuem dados não numéricos. Como um exemplo, o ficheiro biomed.data (que é parte de outro grande ficheiro tomado do Repósitório de Dados StatLib) contém quatro medidas sanguíneas tomadas de dois grupos de pacientes, A e B, de diferentes idades,

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

O primeiro indivíduo pertence ao grupo A, com 30 anos de idade e suas medidas sanguíneas foram 167.0, 89.0, 25.6 e 364.

Se deve tomar cuidado quando se trabalha com dados divididos por categorias. no exemplo seguinte, ao símbolo a é atribuído um valor em algum momento anterior e então a amostra com valores divididos por categoria a é interpretada como,

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

44.2, Definições para manipulação da dados

Função: continuous_freq (list)
Função: continuous_freq (list, m)

O argumento de continuous_freq deve ser uma lista de números, que serão então agrupadas em intervalos e contado quantos desses dados pertencem a cada grupo. Opcionalmente, a função continuous_freq admite um segundo argumento indicando o número de classes, 10 é o valor padrão,

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

A primeira lista contém os limites de intervalos e o segundo a correspondente contagem: existem 16 algarismos da parte decimal de %pi dentro do intervalo [0, 1.8], isto é 0’s e 1’s, 24 algarismos em (1.8, 3.6], isto é 2’s e 3’s, e assim por diante.

Função: discrete_freq (list)

Conta as frequências absolutas em amostras discretas, em amostras numéricas e em amostras divididas em categorias. Seu único argumento é uma lista,

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

A primeira lista fornece os valores da amostra e a segunda as suas frequências absolutas. Os comandos ? col e ? transpose podem ajudá-lo a entender o último comando de entrada.

Função: subsample (matriz_de_dados, expressão_lógica)
Função: subsample (matriz_de_dados, expressão_lógica, col_num, col_num, ...)

Essas funções são um tipo de variação da função submatrix do Maxima. O primeiro argumento é o nome da matriz de dados, o segundo argumento é uma expressão lógica que recebeu apóstrofo e os argumentos opcionais adicionais são o número de colunas a serem tomadas. Esse comportamento é melhor entendido com exemplos,

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

Existem registros de várias variáveis nos quais a velocidade do vento na primeira estação meteorológica foram maiores que 18. Veja que na expressão lógica que recebeu apóstrofo o i-ésimo componente é referenciado como %c[i]. O símbolo %c[i] é usado dentro da função subsample, portanto quando usado como uma variável de uma categoria, Maxima fica confuso. No seguinte exemplo, requisitamos somente o primeiro, o segundo e o quinto componentes desses registro com velocidades de vento maiores que ou igual a 16 nós na estação meteorológica número 1 e menor que 25 nós na estação meteorológica 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 ]

Aqui está um exemplo com as variáveis divididas em categorias do ficheiro biomed.data. Queremos os registros correspondentes a aqueles pacientes no grupo B que possuem idade maior que 38 anos,

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

Probavelmente, a análise estatística irá envolver somente as 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 ]

Essa é a média de várias variáveis 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

Aqui, a primeira componente é sem sentido, uma vez que A e B são categorias, o segundo componente é a idade média dos indivíduos na forma racional, e o quarto eo último valores exibem um comportamento estranho. Isso ocorre porque o símbolo NA é usado aqui para indicar dado não disponível (non available em inglês), e as duas médias são certamente sem sentido. Uma solução possível pode ser jogar fora a matriz cujas linhas possuam símbolos NA, embora isso cause alguma perda de informação,

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

44.3, Definições para estatística descritiva

Função: mean (lista)
Função: mean (matriz)

Essa função calcula a média de uma amostra, definida como

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

Exemplo:

(%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]
Função: var (list)
Função: var (matrix)

This is the sample variance, defined as

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

Exemplo:

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

See also function var1.

Função: var1 (lista)
Função: var1 (matriz)

Essa função calcula a variância da amostra, definida como

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

Exemplo:

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

See also function var.

Função: std (lista)
Função: std (matriz)

A raíz quadrada da função var, a variância com denominador n.

Exemplo:

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

Veja também as funções var e std1.

Função: std1 (lista)
Função: std1 (matriz)

É a raíz quadrada da função var1, a variância com denominador n-1.

Exemplo:

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

Veja também as funções var1 e std.

Função: noncentral_moment (lista, k)
Função: noncentral_moment (matriz, k)

O momento não central de ordem k, definido como

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

Exemplo:

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

Veja também a função central_moment.

Função: central_moment (lista, k)
Função: central_moment (matriz, k)

O momento central de ordem k, definido como

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

Exemplo:

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

Veja também as funções central_moment e mean.

Função: cv (lista)
Função: cv (matriz)

O coeficiente de variação é o quociente entre o desvio padrão da amostra (std) e a média 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]

Veja também as funções std e mean.

Função: mini (lista)
Função: mini (matriz)

É o valor mínimo da amostra lista,

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

Veja também função maxi.

Função: maxi (lista)
Função: maxi (matriz)

É o valor máximo da amostra lista,

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

Veja também a função mini.

Função: range (lista)
Função: range (matriz)

A amplitude é a diferença entre os valores de maximo e de mínimo.

Exemplo:

(%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]
Função: quantile (lista, p)
Função: quantile (matriz, p)

É o p-quantile (quantil de ordem p), com p sendo um número em [0, 1] (intervalo fechado), da amostra lista. Embora exista muitas Definições para quantil de uma amostra (Hyndman, R. J., Fan, Y. (1996) Sample quantiles in statistical packages. American Statistician, 50, 361-365), aquela que se baseia em interpolação linear é a que foi implementada no pacote descriptive.

Exemplo:

(%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]
Função: median (lista)
Função: median (matriz)

Uma vez que a amostra está ordenada, se o tamanho da amostra for ímpar a mediana é o valor central, de outra forma a mediana será a média dos dois valores centrais.

Exemplo:

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

A mediana é o 1/2-quantil.

Veja também function quantile.

Função: qrange (lista)
Função: qrange (matriz)

A amplitude do interquartil é a diferença entre o terceiro e o primeiro quartil, quantile(lista,3/4) - quantile(lista,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]

Veja também a função quantile.

Função: mean_deviation (lista)
Função: mean_deviation (matriz)

O desvio médio, definido como

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

Exemplo:

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

Veja também a função mean.

Função: median_deviation (lista)
Função: median_deviation (matriz)

O desvio da mediana, definido como

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

onde med é a mediana da lista.

Exemplo:

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

Veja também a função mean.

Função: harmonic_mean (lista)
Função: harmonic_mean (matriz)

A média harmônica, definida como

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

Exemplo:

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

Veja também as funções mean e geometric_mean.

Função: geometric_mean (lista)
Função: geometric_mean (matriz)

A média geométrica, definida como

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

Exemplo:

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

Veja também as funções mean e harmonic_mean.

Função: kurtosis (lista)
Função: kurtosis (matriz)

O coeficiente de curtose, definido como

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

Exemplo:

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

Veja também as funções mean, var e skewness.

Função: skewness (lista)
Função: skewness (matriz)

O coeficiente de assimetria, definido como

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

Exemplo:

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

Veja também as funções mean, var e kurtosis.

Função: pearson_skewness (lista)
Função: pearson_skewness (matriz)

O coeficiente de assimetria de pearson, definido como

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

onde med é a mediana de lista.

Exemplo:

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

Veja também as funções mean, var e median.

Função: quartile_skewness (lista)
Função: quartile_skewness (matriz)

O coeficiented de assimetria do quartil, definido como

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

onde c_p é o quartil de ordem p da amostra lista.

Exemplo:

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

Veja também a função quantile.


44.4, Definições específicas para estatística descritiva de várias variáveis

Função: cov (matriz)

A matriz de covariância da amostra de várias variáveis, definida como

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

onde X_j é a j-ésima linha da matriz de amostra.

Exemplo:

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) fpprintprec : 7$  /* modifique a precisão para obter uma saída melhor */
(%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 ]

Veja também a função cov1.

Função: cov1 (matriz)

A matriz de covariância da amostra de várias variáveis, definida como

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

where X_j is the j-th row of the sample matrix.

Exemplo:

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) fpprintprec : 7$ /* modifique a precisão para obter uma saída melhor */
(%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 ]

Veja também a função cov.

Função: global_variances (matriz)
Função: global_variances (matriz, valor_lógico)

A função global_variances retorna uma lista de medidas de variância global:

  • variância total: trace(S_1),
  • variância média: trace(S_1)/p,
  • variância generalizada: determinant(S_1),
  • desvio padrão generalizado: sqrt(determinant(S_1)),
  • variância efectiva determinant(S_1)^(1/p), (defined in: Peña, D. (2002) Análisis de datos multivariantes; McGraw-Hill, Madrid.)
  • desvio padrão efectivo: determinant(S_1)^(1/(2*p)).

onde p é a dimensão das várias variáveis aleatórias e S_1 a matriz de covariância retornada por cov1.

Exemplo:

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

A função global_variances tem um argumento lógico opcional: global_variances(x,true) diz ao Maxima que x é a matriz de dados, fazendo o mesmo que global_variances(x). Por outro lado, global_variances(x,false) significa que x não é a matriz de dados, mas a matriz de covariância, evitando a repetição seu cálculo,

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

Veja também cov e cov1.

Função: cor (matriz)
Função: cor (matriz, valor_lógico)

A matriz de correlação da maostra de várias variáveis.

Exemplo:

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

A função cor tem um argumento lógico opcional: cor(x,true) diz ao Maxima que x é a matriz de dados, fazendo o mesmo que cor(x). Por outro lado, cor(x,false) significa que x não é a matriz de dados, mas a matriz de covariância, evitando a repetição de seu cálculo,

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

Veja também cov e cov1.

Função: list_correlations (matriz)
Função: list_correlations (matriz, valor_lógico)

A função list_correlations retorna uma lista de medidas de correlação:

  • matriz de precisão: o inverso da matriz de covariância S_1,
           -1     ij
          S   = (s  )             
           1         i,j = 1,2,...,p
    
  • vector de correlação múltipla: (R_1^2, R_2^2, ..., R_p^2), com
           2          1
          R  = 1 - -------
           i        ii
                   s   s
                        ii
    

    sendo um indicador do melhor do ajuste do modelo de regressão linear de várias variáveis dobre X_i quando o resto das variáveis são usados como regressores.

  • matriz de correlação parcial: como elemento (i, j) sendo
                             ij
                            s
          r        = - ------------
           ij.rest     / ii  jj\ 1/2
                       |s   s  |
                       \       /
    

Exemplo:

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

A função list_correlations também tem um argumento lógico opcional: list_correlations(x,true) diz ao Maxima que x é a matriz de dados, fazendo o mesmo que list_correlations(x). Por outro lado, list_correlations(x,false) significa que x não é a matriz de correlação, mas a matriz de covariancia, evitando a repetição de seu cálculo.

Veja também cov e cov1.


44.5, Definições para gráficos estatísticos

Função: dataplot (lista)
Função: dataplot (lista, opção_1, opção_2, ...)
Função: dataplot (matriz)
Função: dataplot (matriz, opção_1, opção_2, ...)

A função dataplot permite visualização directa de dados de amostra, ambas d uma única variável (lista) e de várias variáveis (matriz). Fornecendo valores para as seguintes opções que são alguns aspéctos de impressão que podem ser controlados:

  • 'outputdev, o valor padrão é "x", indica o formato de dispositivo/ficheiro da figura de saída; valores correctos são "x", "eps" e "png", para a tela, formato de ficheiro postscript e formato de ficheiro png, respectivamente.
  • 'maintitle, o valor padrão é "", é o título principal entre aspas duplas.
  • 'axisnames, o valor padrão é ["x","y","z"], é uma lista de nomes dos eixos x, y e z.
  • 'joined, o valor padrão é false, um valor lógico para seleccionar pontos em 2D para serem unidos ou isolados.
  • 'picturescales, o valor padrão é [1.0, 1.0], factor de proporcionalidade para o tamanho do gráfico.
  • 'threedim, o valor padrão é true, diz ao Maxima se ou monta-se o gráfico de uma matriz de três colunas como um diagrama 3D ou se monta-se o gráfico como um diagrama de dispersão de várias variáveis. Veja exemplos abaixo.
  • 'axisrot, o valor padrão é [60, 30], modifica o ponto de visualização quando 'threedim for escolhido para true dados forem armazenados em uma matriz de três colunas. O primeiro número é o ângulo de rotação do eixo x, e o segundo número é o angulo de rotação do eixo z-axis, ambas as medidas em graus.
  • 'nclasses, o valor padrão é 10, é o número de classes para histogramas na diagonal de gráficos de dispersão de várias variáveis.
  • 'pointstyle, o valor padrão é 1, é um inteiro que indica como mostrar pontos de amostra.

Por exemplo, com a seguite entrada um gráfico simples dos primeiros vinte dígitos de %pi é requisitado e a saída é armazenada em um ficheiro no 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)$

Note que dados unidimensionais são colocados no gráfico como uma série de tempo. No caso seguinte, ocorre a mesma coisa só que com mais dados e com mais configurações,

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) dataplot (makelist (s1[k], k, 1, 50), 'maintitle = "Primeiros dígitos de pi",
 'axisnames = ["ordem do dígito", "valor do dígito"], 'pointstyle = 2,
 'joined = true)$

A função dataplot pode ser usada para montar gráficos de pontos no plano. O exemplo seguinte é gráfico de dispersão de pares de pontos de velocidades de vento para o primeira e para o quinta estação meteorológica,

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) dataplot (submatrix (s2, 2, 3, 4), 'pointstyle = 2,
 'maintitle = "Pares de medidas de velocidade do vento em nós",
 'axisnames = ["Velocidade do vento em A", "Velocidade do vento em E"])$

Se pontos forem armazenados em uma matriz de duas colunas, dataplot pode montar o gráfico desses pontos directamente, mas se eles forem formatados em uma lista de pares, essa lista deve ser transformada em uma matriz como no seguinte exemplo.

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

Pontos no espaço tridimensional podem ser vistos como uma projeção no plano. Nesse exemplo, o gráfico de velocidades do vento correspondendo a três estações meteorológicas são requisitados, primeiramente em um gráfico em 3D e a seguir em um gráfico de dispersào de várias variáveis.

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) /* 3D plot */ dataplot (submatrix (s2, 4, 5), 'pointstyle = 2,
 'maintitle = "Pares de medidas de velocidades do vento em nós",
 'axisnames = ["Estação A", "Estação B", "Estação C"])$
(%i5) /* Gráfico de dispersão de várias variáveis */ dataplot (submatrix (s2, 4, 5),
 'nclasses = 6, 'threedim = false)$

Note que no último exemplo, o número de classes no histogramas da diagonal é escolhido para 6, e aquela opção 'threedim for escolhida para false.

Para mais que três dimensões somente gráficos de dispersão de várias variáveis são possível, como em

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) dataplot (s2)$
Função: histogram (lista)
Função: histogram (lista, opção_1, opção_2, ...)
Função: histogram (one_column_matrix)
Função: histogram (one_column_matrix, opção_1, opção_2, ...)

Essa função monta um gráfico de um histograma. Dados de amostras devem ser armazenados em uma lista de números ou em uma matriz de uma coluna. Fornecendo valores para as seguintes opções alguns aspéctos do gráfico podem ser controlados:

  • 'outputdev, o valor padrão é "x", indica o formato de ficheiro da figura de saída; valores correctos são "x", "eps" e "png", para a tela, formato de ficheiro postscript e formato de ficheiro png, respectivamente.
  • 'maintitle, o valor padrão é "", é o título principal entre aspas duplas.
  • 'axisnames, o valor padrão é ["x", "Fr."], é uma lista de nomes dos eixos x e y.
  • 'picturescales, o valor padrão é [1.0, 1.0], factor de proporcionalidade para o tamanho do gráfico.
  • 'nclasses, o valor padrão é 10, é o número de classes ou o número de barras.
  • 'relbarwidth, o valor padrão é 0.9, um número decimao entre 0 e 1 para controlar a largura das barras.
  • 'barcolor, o valor padrão é 1, um inteiro para indicar a cor das barras.
  • 'colorintensity, o valor padrão é 1, um número decimal entre 0 e 1 para estabelecer a intensidade da cor.

Nos próximos dois exemplos, histogramas são requisitados para os primeiros 100 dígitos do número %pi e para velocidades do vento na terceira estação meteorológica.

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s1 : read_list (file_search ("pidigits.data"))$
(%i4) histogram (s1, 'maintitle = "dígitos de pi", 'axisnames = ["", "Frequência absoluta"],
 'relbarwidth = 0.2, 'barcolor = 3, 'colorintensity = 0.6)$
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) histogram (col (s2, 3), 'colorintensity = 0.3)$

Note tque no primeiro caso, s1 é uma lista e o segundo exemplo, col(s2,3) é uma matriz.

Veja também a função barsplot.

Função: barsplot (lista)
Função: barsplot (lista, opção_1, opção_2, ...)
Função: barsplot (one_column_matrix)
Função: barsplot (one_column_matrix, opção_1, opção_2, ...)

Similar a histogram mas para variáveis estatísticas, numéricas ou divididas em categorias. As opções estão abaixo,

  • 'outputdev, o valor padrão é "x", indica o formato de ficheiro da figura de saída; valores correctos são "x", "eps" e "png", para a tela, formato de ficheiro postscript e formato de ficheiro png, respectivamente.
  • 'maintitle, o valor padrão é "", é o título principal entre aspas duplas.
  • 'axisnames, o valor padrão é ["x", "Fr."], é uma lista de nomes dos eixos x e y.
  • 'picturescales, o valor padrão é [1.0, 1.0], factor de proporcionalidade para o tamanho do gráfico.
  • 'relbarwidth, o valor padrão é 0.9, um número decimao entre 0 e 1 para controlar a largura das barras.
  • 'barcolor, o valor padrão é 1, um inteiro para indicar a cor das barras.
  • 'colorintensity, o valor padrão é 1, um número decimal entre 0 e 1 para estabelecer a intensidade da cor.

Esse exemplo monta um gráfico de barras para os grupos A e B de pacientes na amostra s3,

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s3 : read_matrix (file_search ("biomed.data"))$
(%i4) barsplot (col (s3, 1), 'maintitle = "Grupos de pacientes",
 'axisnames = ["Grupo", "# de indivíduos"], 'colorintensity = 0.2)$

A primeira coluna na amostra s3 armazena os valores das categorias A e B, também conhecidos algumas vezes como factores. Por outro lado, os números inteiros positivos na segunda coluna sào idades, em anos, que se comportam como variável discreta, então podemos montar um gráfico as freqyuências absolutas para esses valores,

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s3 : read_matrix (file_search ("biomed.data"))$
(%i4) barsplot (col (s3, 2), 'maintitle = "Idades",
 'axisnames = ["Anos", "# dos indivíduos"], 'colorintensity = 0.2,
 'relbarwidth = 0.6)$

Veja também a função histogram.

Função: boxplot (data)
Função: boxplot (data, opção_1, opção_2, ...)

Essa função monta diagramas em caixas. O argumento data pode ser uma lista, que não é de grande interesse, uma vez que esses diagramas são principalmente usados para comparação entre diferentes amostras, ou uma matriz, eentão é possível comparar dois ou mais componentes de uma variável estatística de várias variáveis. Mas é também permitido data se uma lista de amostras com tamanhos diferentes de amostra, de facto essa é aa única função no pacote descriptive que admite esse tipo de estrutura de dados. Veja o exemplo abaixo. Abaixo etão as opções,

  • 'outputdev, o valor padrão é "x", indica o formato de ficheiro da figura de saída; valores correctos são "x", "eps" e "png", para a tela, formato de ficheiro postscript e formato de ficheiro png, respectivamente.
  • 'maintitle, o valor padrão é "", é o título principal entre aspas duplas.
  • 'axisnames, o valor padrão é ["sample", "y"], é uma lista de nomes dos eixos x e y.
  • 'picturescales, o valor padrão é [1.0, 1.0], factor de proporcionalidade para o tamanho do gráfico.

Examples:

(%i1) load ("descriptive")$
(%i2) load ("numericalio")$
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) boxplot (s2, 'maintitle = "Velocidade do vento em nós",
 'axisnames = ["Estação do ano", ""])$
(%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)$

Próximo: , Anterior:   [Conteúdo][Índice]