tabfreq
do LeemExplicar a premissa básica da função tabfreq
do pacote
leem
e mostrar:
k
;ordered
;Diante do objetivo do relatório, ele será dissertado e explanado nas próximas seções:
tabfreq
:
uso básicoO pacote leem
está sendo desenvolvido com o objetivo de
prover uma melhor visualização de conceitos da estatística a estudantes
deste curso. Dentro da disciplina, uma das áreas abordadas é a
estatística descritiva: um campo que foca na descrição de população e
amostras por meio de coeficientes breves1. Por isso, seu
conhecimento básico pode ser de ampla ajuda a estudantes de qualquer
curso, especialmente para áreas que se contém com grandes estudos de
população como medicina ou psicologia.
O leem
carrega consigo funções desenhadas para obter
dados descritivos de amostra (com novas funções desta área possivelmente
sendo implementadas no futuro) e, entre elas, destaca-se a
tabfreq
, cujo objetivo é montar uma tabela de frequências
dos dados apresentados.
A tabela de frequêcia é um arranjo de dados que resume as informações apresentadas do conjunto2, tornando o processo de análise deles mais rápida e simples.
Como exemplo, observe a tabela de frequência gerada para o seguinte conjunto de dados:
library(leem)
# Criando um conjunto de caracteres aleatorios
<- sample(letters[1:10], 50, replace = TRUE)
x
# ATENCAO: para uso do tabfreq, a classe do objeto DEVE SER LEEM. Use o comando new_leem antes (mais sobre isso depois)
# Como se trata de caracteres, devemos colocar o objeto como discreto no new_leem
<- new_leem(x, variable = "discrete")
x
tabfreq(x)
## Groups Fi Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 a 9 0.18 9 50 18 18 100
## 2 b 4 0.08 13 41 8 26 82
## 3 c 4 0.08 17 37 8 34 74
## 4 d 5 0.10 22 33 10 44 66
## 5 e 5 0.10 27 28 10 54 56
## 6 f 2 0.04 29 23 4 58 46
## 7 g 5 0.10 34 21 10 68 42
## 8 h 3 0.06 37 16 6 74 32
## 9 i 8 0.16 45 13 16 90 26
## 10 j 5 0.10 50 5 10 100 10
Nesta lista disposta pela função, temos as seguintes informações:
groups
representa os nomes das variáveis qualitativas e
valores das variáveis discretas quantitativas;Fi
é a frequência dos dados em número absolutos (para
variáveis contínuas, representa o número de elementos contidos na faixa
determina pelos intervalos);Fr
é a frequência relativa daquele grupo
(frequência/número de elementos da amostra). Semelhantemente,
Fp
é a frequência relativa já em percentual;Fac1
e Fac2
são os valores das frequências
acumuladas, organizadas de maneira crescente e decrescente,
respectivamente, formando assim as ogivas crescentes e descrescentes.
Novamente, Fac1p
e Fac2p
são as ogivas
relativas crescente e decrescente.O mesmo princípio se aplica a dados contínuos, com a observação de que os grupos serão dados como intervalos de classes. A quantidade padrão para os intervalos de classe é \(\sqrt{n}\) para até 100 elementos e \(5*log_{10}{n}\) para mais de 100.
# Criando um conjunto de valores a partir da distribuição normal
<- rnorm(100, 100, 20)
y
# Colocando a variável como "continuous"
<- new_leem(y, variable = "continuous")
y
# Observe que a tabela gerada terá 10 intervalos de classe, como discutido anteriormente
tabfreq(y)
## Classe Fi PM Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 53.27 |--- 62.79 3 58.03 0.03 3 100 3 3 100
## 2 62.79 |--- 72.31 6 67.55 0.06 9 97 6 9 97
## 3 72.31 |--- 81.83 9 77.07 0.09 18 91 9 18 91
## 4 81.83 |--- 91.35 10 86.59 0.10 28 82 10 28 82
## 5 91.35 |--- 100.87 21 96.11 0.21 49 72 21 49 72
## 6 100.87 |--- 110.39 23 105.63 0.23 72 51 23 72 51
## 7 110.39 |--- 119.91 13 115.15 0.13 85 28 13 85 28
## 8 119.91 |--- 129.43 7 124.67 0.07 92 15 7 92 15
## 9 129.43 |--- 138.95 5 134.19 0.05 97 8 5 97 8
## 10 138.95 |--- 148.47 3 143.71 0.03 100 3 3 100 3
Além das demais colunas para amostras discretas, a tabela de amostras
contínuas carrega a coluna PM
, representando o valor médio
entre o limite inferior e superior do intervalo.
Após usar o tabfreq
e o atribuir a variável, é possível
chamar a tabela de frequência por meio de
objeto$tabela
:
<- tabfreq(x)
x
$tabela x
## Groups Fi Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 a 9 0.18 9 50 18 18 100
## 2 b 4 0.08 13 41 8 26 82
## 3 c 4 0.08 17 37 8 34 74
## 4 d 5 0.10 22 33 10 44 66
## 5 e 5 0.10 27 28 10 54 56
## 6 f 2 0.04 29 23 4 58 46
## 7 g 5 0.10 34 21 10 68 42
## 8 h 3 0.06 37 16 6 74 32
## 9 i 8 0.16 45 13 16 90 26
## 10 j 5 0.10 50 5 10 100 10
k
Como dito anteriormente, o número de classes padrão é dado por uma
relação matemática já embutida na função. Contudo, é possível forçar um
determinado número de grupos na função tabfreq
.
Para isso, deve-se inserir o argumento k
ao chamar a
função e declarar quantos classes desejam ser criadas
# Fazendo com apenas dois intervalos de classes
tabfreq(y, k = 2)
## Classe Fi PM Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 15.17 |--- 100.89 49 58.03 0.49 49 100 49 49 100
## 2 100.89 |--- 186.61 51 143.75 0.51 100 51 51 100 51
# Fazendo com 20 intervalos de classe
tabfreq(y, k = 20)
## Classe Fi PM Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 55.77 |--- 60.28 2 58.025 0.02 2 100 2 2 100
## 2 60.28 |--- 64.79 2 62.535 0.02 4 98 2 4 98
## 3 64.79 |--- 69.3 3 67.045 0.03 7 96 3 7 96
## 4 69.3 |--- 73.81 4 71.555 0.04 11 93 4 11 93
## 5 73.81 |--- 78.32 4 76.065 0.04 15 89 4 15 89
## 6 78.32 |--- 82.83 4 80.575 0.04 19 85 4 19 85
## 7 82.83 |--- 87.34 6 85.085 0.06 25 81 6 25 81
## 8 87.34 |--- 91.85 6 89.595 0.06 31 75 6 31 75
## 9 91.85 |--- 96.36 11 94.105 0.11 42 69 11 42 69
## 10 96.36 |--- 100.87 7 98.615 0.07 49 58 7 49 58
## 11 100.87 |--- 105.38 13 103.125 0.13 62 51 13 62 51
## 12 105.38 |--- 109.89 8 107.635 0.08 70 38 8 70 38
## 13 109.89 |--- 114.4 9 112.145 0.09 79 30 9 79 30
## 14 114.4 |--- 118.91 5 116.655 0.05 84 21 5 84 21
## 15 118.91 |--- 123.42 3 121.165 0.03 87 16 3 87 16
## 16 123.42 |--- 127.93 4 125.675 0.04 91 13 4 91 13
## 17 127.93 |--- 132.44 3 130.185 0.03 94 9 3 94 9
## 18 132.44 |--- 136.95 2 134.695 0.02 96 6 2 96 6
## 19 136.95 |--- 141.46 3 139.205 0.03 99 4 3 99 4
## 20 141.46 |--- 145.97 1 143.715 0.01 100 1 1 100 1
ordered
Para variáveis discretas, o argumento ordered
possibilita a ordem a qual os dados irão aparecer. Normalmente, elas são
organizadas por ordem alfabética para qualitativas e crescente para
quantitativas.
Este argumento possui uma natureza mais complexa que k
:
ele deve ser declarado na função com todos os tipos de elementos
listados na ordem desejada. Para esclarecimento, observe o exemplo
abaixo:
# ordenando o objeto x. Listando todos os grupos e na ordem desejada
tabfreq(x, ordered = c('j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'))
## Warning in xtfrm.data.frame(x): cannot xtfrm data frames
## Groups Fi Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 <NA> NA NA NA NA NA NA NA
## 2 <NA> NA NA NA NA NA NA NA
## 3 <NA> NA NA NA NA NA NA NA
## 4 <NA> NA NA NA NA NA NA NA
## 5 <NA> NA NA NA NA NA NA NA
## 6 <NA> NA NA NA NA NA NA NA
## 7 <NA> NA NA NA NA NA NA NA
## 8 <NA> NA NA NA NA NA NA NA
Com isso, é possível ordenar dados que requerem uma certa ordem para uma análise mais detalhada, como nomes ou dados categorizados.]
Pela natureza de manipulação de dados, a função apresenta algumas proteções para seu uso. É necessário conhecer suas limitações para seu uso apropriado.
Junto com estas proteções, há ainda alguns bugs no código fonte que podem levar a resultados errados. Os erros reportados foram encontrados com a build disponível no Github na data de 16/06/22
leem
na
função;<- c(1:10)
b
tabfreq(b)
## Error in UseMethod("tabfreq"): método não aplicável para 'tabfreq' aplicado a um objeto de classe "c('integer', 'numeric')"
<- 1
v <- new_leem(v)
v <- tabfreq(v) v
## Error in vet[j] <- vet[j - 1] - x[j - 1]: substituto tem comprimento zero
<- rnorm(20, 10, 2)
w <- new_leem(w)
w tabfreq(w)
## Groups Fi Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 7.236393 1 0.05 1 20 5 5 100
## 2 7.754281 1 0.05 2 19 5 10 95
## 3 8.591530 1 0.05 3 18 5 15 90
## 4 8.932877 1 0.05 4 17 5 20 85
## 5 9.269697 1 0.05 5 16 5 25 80
## 6 9.367232 1 0.05 6 15 5 30 75
## 7 9.567519 1 0.05 7 14 5 35 70
## 8 9.589628 1 0.05 8 13 5 40 65
## 9 9.773539 1 0.05 9 12 5 45 60
## 10 9.777314 1 0.05 10 11 5 50 55
## 11 10.245761 1 0.05 11 10 5 55 50
## 12 10.333517 1 0.05 12 9 5 60 45
## 13 10.927725 1 0.05 13 8 5 65 40
## 14 11.069082 1 0.05 14 7 5 70 35
## 15 11.443946 1 0.05 15 6 5 75 30
## 16 11.789722 1 0.05 16 5 5 80 25
## 17 12.484370 1 0.05 17 4 5 85 20
## 18 13.370185 1 0.05 18 3 5 90 15
## 19 13.814560 1 0.05 19 2 5 95 10
## 20 14.153947 1 0.05 20 1 5 100 5
k
tabfreq(y, k = 'a')
## Error: The argument should be numerical!
tabfreq(y, k = -1)
## Error in rep(0, k - 1): argumento 'times' inválido
tabfreq(y, k = 1)
## Error in vi[i] <- vi[i - 1] + c: substituto tem comprimento zero
ordered
<- sample(letters[1:10], 50, replace = TRUE)
x
<- new_leem(x)
x
tabfreq(x, ordered = c('a', 'b', 'c', 'd', 'e'))
## Groups Fi Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 a 4 0.08 4 NA 8 8 NA
## 2 b 3 0.06 7 NA 6 14 NA
## 3 c 6 0.12 13 NA 12 26 NA
## 4 d 3 0.06 16 NA 6 32 NA
## 5 e 6 0.12 22 NA 12 44 NA
## 6 <NA> NA NA NA NA NA NA NA
## 7 <NA> NA NA NA NA NA NA NA
## 8 <NA> NA NA NA NA NA NA NA
## 9 <NA> NA NA NA NA NA NA NA
## 10 <NA> NA NA NA NA NA NA NA
<- sample(letters[1:10], 50, replace = TRUE)
x
<- new_leem(x)
x
tabfreq(x, ordered = c('k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 'a'))
## Groups Fi Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 j 3 0.06 3 NA 6 6 NA
## 2 <NA> NA NA NA NA NA NA NA
## 3 <NA> NA NA NA NA NA NA NA
## 4 <NA> NA NA NA NA NA NA NA
## 5 <NA> NA NA NA NA NA NA NA
## 6 <NA> NA NA NA NA NA NA NA
## 7 <NA> NA NA NA NA NA NA NA
## 8 <NA> NA NA NA NA NA NA NA
## 9 <NA> NA NA NA NA NA NA NA
## 10 <NA> NA NA NA NA NA NA NA
<- sample(letters[1:10], 50, replace = TRUE)
x
<- new_leem(x)
x
tabfreq(x, ordered = c(1:10))
## Groups Fi Fr Fac1 Fac2 Fp Fac1p Fac2p
## 1 <NA> NA NA NA NA NA NA NA
## 2 <NA> NA NA NA NA NA NA NA
## 3 <NA> NA NA NA NA NA NA NA
## 4 <NA> NA NA NA NA NA NA NA
## 5 <NA> NA NA NA NA NA NA NA
## 6 <NA> NA NA NA NA NA NA NA
## 7 <NA> NA NA NA NA NA NA NA
## 8 <NA> NA NA NA NA NA NA NA
## 9 <NA> NA NA NA NA NA NA NA
## 10 <NA> NA NA NA NA NA NA NA
Fonte: Investopedia↩︎