O que fazem table() e prop.table()?

Passo 1

O que o enunciado pede: explicar o que fazem as funções table() e prop.table() em R.
Informações dadas: nenhuma além da pergunta. Vou mostrar o que cada função retorna, a sintaxe básica, exemplos práticos (com cálculos explícitos) e dicas úteis para usar na prova.

Passo 2

O que faz table() — ideia básica e sintaxe.
  • table() conta frequências: recebe vetores (ou fatores) e retorna uma tabela de contagens (um vetor de frequências quando um argumento, ou uma tabela de contingência quando vários argumentos).
  • Sintaxe simples:
    • table(x) — conta quantas vezes cada nível aparece em x.
    • table(x, y) — conta pares (x,y) e retorna uma matriz com as contagens.
  • Exemplo concreto (passo a passo):
    • Suponha x = \texttt{c("M","F","F","M","F")}. Então os níveis são \{"M","F"\}.
    • table(x) retorna contagens: para “F” aparece 3 vezes e para “M” aparece 2 vezes.
    • Em R:
      • x <- c(“M”,“F”,“F”,“M”,“F”)
      • table(x) # resultado: F 3 M 2
  • Interpretação: cada célula da tabela é um número de observações n_{i} (ou n_{ij} para tabelas de duas dimensões).
  • Alguns argumentos úteis:
    • useNA = “ifany” ou “always” para incluir \text{NA} nas contagens;
    • exclude para excluir níveis;
    • dnn para nomes das dimensões.
  • Observação: se passar colunas de um data.frame separadas (ex.: table(df sexo, dffuma)), o resultado é uma tabela de contingência que facilita testes estatísticos posteriores.

Passo 3

Como interpretar e manipular uma tabela de contingência (notação).
  • Se table(x,y) produzir uma matriz cujas entradas são n_{ij}, então:
    • n_{ij} = número de observações com x no nível i e y no nível j.
    • Soma total N = \sum_{i}\sum_{j} n_{ij}.
    • Soma de linha n_{i+} = \sum_{j} n_{ij}.
    • Soma de coluna n_{+j} = \sum_{i} n_{ij}.
  • Exemplo numérico claro (faça na prova à mão se pedirem): suponha a tabela
    • matriz de contagens (sexo × fuma):
      • para “Masculino” e “Sim”: n_{11} = 30
      • para “Masculino” e “Não”: n_{12} = 70
      • para “Feminino” e “Sim”: n_{21} = 20
      • para “Feminino” e “Não”: n_{22} = 80
    • Então N = 30+70+20+80 = 200.
    • Linha “Masculino”: n_{1+} = 30+70 = 100.
    • Coluna “Sim”: n_{+1} = 30+20 = 50.

Passo 4

O que faz prop.table() — definição e fórmulas.
  • prop.table() transforma uma tabela de contagens em proporções dividindo por alguma soma.
  • Sintaxe principal:
    • prop.table(tab) — divide cada célula pelo total N, ou seja retorna p_{ij} = \dfrac{n_{ij}}{N}.
    • prop.table(tab, margin = 1) — divide cada célula pela soma da linha: p_{ij}^{(\text{linha})} = \dfrac{n_{ij}}{n_{i+}}. Assim cada linha soma 1.
    • prop.table(tab, margin = 2) — divide cada célula pela soma da coluna: p_{ij}^{(\text{col})} = \dfrac{n_{ij}}{n_{+j}}. Assim cada coluna soma 1.
  • Aplicando ao exemplo do passo anterior:
    • prop.table(tab) dará células: 30/200=0,15, 70/200=0,35, 20/200=0,10, 80/200=0,40.
    • prop.table(tab, margin = 1) (proporção por linha) para “Masculino”: 30/100=0,30 e 70/100=0,70. Para “Feminino”: 20/100=0,20 e 80/100=0,80.
    • prop.table(tab, margin = 2) (proporção por coluna) para coluna “Sim”: 30/50=0,60 e 20/50=0,40.
  • Em R, usualmente multiplicam por 100 para obter percentuais: 100 \times \texttt{prop.table(tab)}.

Passo 5

Exemplos práticos em R e dicas de prova (com comandos e saída esperada).
  • Montando a tabela:
    • x <- c(“M”,“F”,“F”,“M”,“F”)
    • table(x) # mostra contagens
  • Contingência:
    • sexo <- c(“M”,“M”,“F”,“F”)
    • fuma <- c(“Sim”,“Não”,“Sim”,“Não”)
    • tab <- table(sexo, fuma) # retorna matriz n_{ij}
  • Proporções:
    • prop.table(tab) # divide por N
    • prop.table(tab, margin = 1) # divide por n_{i+} (cada linha soma 1)
    • prop.table(tab, margin = 2) # divide por n_{+j} (cada coluna soma 1)
  • Transformar para data.frame (útil em provas para ordenar ou plotar):
    • as.data.frame(tab) # converte contagens em data.frame com colunas Var1, Var2, Freq
    • as.data.frame(prop.table(tab)) # mesma coisa com proporções
  • Mostrar totais:
    • addmargins(tab) # soma margens (linhas/colunas e total)
    • round(prop.table(tab), 3) # arredonda as proporções
  • Atenção com NA:
    • table(x, useNA = “ifany”) inclui NA como categoria (se houver).
    • prop.table(NULL) precisa de uma tabela válida — normalmente aplicar prop.table em um objeto retornado por table().

Passo 6

Resumo didático e dica de memorização rápida (para prova).
  • table(): conta, retorna frequências n_{i} ou n_{ij}. Pense: “quantos”.
  • prop.table(): transforma essas contagens em proporções — por total (padrão) ou por margens (linhas/colunas). Pense: “qual a fração”.
  • Fórmulas-chave para decorar:
    • p_{ij} = \dfrac{n_{ij}}{N} quando \texttt{prop.table(tab)}.
    • p_{ij}^{(\text{linha})} = \dfrac{n_{ij}}{n_{i+}} quando \texttt{prop.table(tab, margin=1)}.
    • p_{ij}^{(\text{col})} = \dfrac{n_{ij}}{n_{+j}} quando \texttt{prop.table(tab, margin=2)}.
  • Truque de prova: calcule primeiro a tabela com table(), verifique somas (linhas/colunas) e depois aplique prop.table() com o margin certo conforme perguntado.

Resposta

table(): cria uma tabela de frequências (contagens) de um vetor ou uma tabela de contingência entre variáveis.
prop.table(): transforma uma tabela de contagens em proporções dividindo pelas somas; por padrão divide pelo total N (retorna n_{ij}/N), e com \texttt{margin=1} ou \texttt{margin=2} divide por somas de linha n_{i+} ou de coluna n_{+j}, respectivamente.

Exercícios relacionados