GET00130 - Métodos Computacionais para Estatística II
Conteúdo da aula
- Teste de aderência.
- Teste de homogeneidade.
- Teste de independência.
1 - Testes de aderência.
O objetivo dos testes de aderência é testar a adequabilidade de um modelo probabilístico a um conjunto de dados observados.
De forma geral, consideramos uma tabela de distribuição de frequências com \(k\) categorias (\(k \geq 2\)). Considere \(p_i\) a probabilidade especificada a categoria \(i\) de acordo com o modelo que desejamos verificar, \(i = 1, \ldots, k\).
As hipóteses associadas ao teste são
\[H_0: p_1 = p_{01}, \ldots, p_k = p_{0k}\] \[\times\] \[H_1: \mbox{Existe pelo menos uma diferente}.\]
Vamos discutir o teste em cima do seguinte problema: um guarda de trânsito desconfia que as probabilidades de acidentes de trânsito no quarto trimestre é maior do que nos anteriores. Ele alega que as probabilidades são de 2/10 para os três primeiros trimestres e 4/10 para o quarto, indicando, segundo ele, que existe o dobro de chance de se ter acidentes no último trimestre do ano.
Suponha que queremos verificar a afirmação do guarda de trânsito. Possuímos 4 categorias (4 trimestres) e de acordo com o modelo a ser testado, estamos interessado em verificar
\[H_0:p_1 = 2/10, p_2 = 2/10, p_3 = 2/10, p_4 = 4/10\] \[\times\] \[H_1: \mbox{Existe pelo menos uma diferente}.\]
Antes de testarmos estas hipóteses, podemos explorar um pouco os dados.
#Carregando pacote
library(tidyverse)
#Importando os dados
base = read_csv2("Base acidentes.csv")
#Ativando o pacote expss
library(expss)
#Tabela de distribuição de frequência para uma variável
base |>
select(trim_acidentes) |>
fre()| select(base, trim_acidentes) | Count | Valid percent | Percent | Responses, % | Cumulative responses, % |
|---|---|---|---|---|---|
| Trim1 | 7 | 17.5 | 17.5 | 17.5 | 17.5 |
| Trim2 | 8 | 20.0 | 20.0 | 20.0 | 37.5 |
| Trim3 | 7 | 17.5 | 17.5 | 17.5 | 55.0 |
| Trim4 | 18 | 45.0 | 45.0 | 45.0 | 100.0 |
| #Total | 40 | 100 | 100 | 100 | |
| <NA> | 0 | 0.0 |
Analisando a tabela acima, percebemos que de fato, parece haver uma maior quantidade de acidentes no último trimestre do ano, como o guarda desconfiava. Será que elas ocorrem com as probabilidades indicadas pelo guarda? Para respondermos este questionamento precisamos testar as hipóteses levantadas.
Para executarmos o teste de aderência, usaremos a função chisq.test do pacote stats.
A seguir, vamos apresentar os principais argumentos da função chisq.test:
- x - uma tabela com as frequências absolutas;
- p - um vetor com as probabilidades do modelo teórico para cada categoria,
- correct - um operador lógico indicando se será aplicado ou não a correção de continuidade (default - TRUE).
#Realizando o teste de aderência
chisq.test(x = table(base$trim_acidentes),
p = c(2/10,2/10,2/10,4/10),
correct = FALSE)
Chi-squared test for given probabilities
data: table(base$trim_acidentes)
X-squared = 0.5, df = 3, p-value = 0.9189
A saída do teste contém várias informações: o valor da estatística do teste X-squared, o número de graus de liberdade da estatística de teste df e o p-valor associado as hipóteses especificadas.
Com base em um nível de significância de 5%, não rejeitamos \(H_0\) (p-valor = 0.9189 > 0,05 = \(\alpha\)), ou seja, não encontramos evidências nos dados para desacreditar no modelo do guarda.
2 - Teste de homogeneidade
Suponha que possuímos \(r\) populações \(S_1, \ldots, S_r\). De cada subpopulação é extraída uma amostra de \(n_i\) elementos, \(i = 1, \ldots, r.\) Em seguida, é registrado a qual categoria da variável \(A\) cada elemento pertence (\(A_1, \ldots, A_c\)). O objetivo deste teste é verificar se a distribuição de probabilidade de \(A\) em cada subpopulação é a mesma.
As hipóteses associadas ao teste são
\[H_0: P_1(A_1) = \ldots = P_r(A_1), \ldots, P_1(A_c) = \ldots = P_r(A_c)\] \[\times\] \[H_1: \mbox{Existe pelo menos uma diferente}.\] em que \(P_i(A_j)\) é a probabilidade de um elemento da subpopulação \(i\) ser classificado na categoria \(A_j\), \(i = 1, \ldots, r\) e \(j = 1, \ldots, c\).
Vamos discutir o teste em cima do seguinte problema: um dono de uma fábrica que empacota cafés possui três máquinas (A, B e C) enchendo os pacotes. Os pacotes podem ser classificados no final como normais ou defeituosos. O dono da fábrica coletou uma amostra de 20 cafés da máquina A, 30 cafés da máquina B e 25 cafés da máquina C. Ele gostaria de saber se as máquinas produzem de forma semelhante. Como responder a este questionamento?
Notem que no nosso problema, cada máquina representa uma população, nesse caso, \(r = 3\) e a variável que está sendo observada é a classificação do café com duas possíveis categorias (normal ou defeituoso) \(c = 2\). Este cenário se aplica ao teste de homogeneidade, pois foi sorteado uma amostra fixada para cada subpopulação e então verificada a qual categoria (defeituoso ou não) cada elemento pertencia. Podemos traduzir o problema nas seguinte hipóteses
Hipótese: \[H_0: P_A(D) = P_B(D) = P_C(D), P_A(ND) = P_B(ND) = P_C(ND)\] \[\times\] \[H_1: \mbox{Existe pelo menos uma diferente}.\] Antes de testarmos estas hipóteses, podemos explorar um pouco os dados.
#Importando os dados
base_def = read_rds("Base defeito.rds")
#Tabela de contingência frequência absoluta
base_def |>
calc_cro_cases(defeito,maquina)| maquina | |||
|---|---|---|---|
| A | B | C | |
| defeito | |||
| D | 2 | 15 | 2 |
| ND | 18 | 15 | 23 |
| #Total cases | 20 | 30 | 25 |
#Tabela de contingência percentual por coluna
base_def |>
calc_cro_cpct(defeito,maquina)| maquina | |||
|---|---|---|---|
| A | B | C | |
| defeito | |||
| D | 10 | 50 | 8 |
| ND | 90 | 50 | 92 |
| #Total cases | 20 | 30 | 25 |
#Gráfico de barras empilhadas
base_def |>
ggplot(aes(x = maquina, fill = defeito)) +
geom_bar(position = "fill") +
labs(x = "Máquina", y = "%",fill = "Classificação") +
scale_y_continuous(labels = scales::percent_format()) Notem que se analisarmos a tabela de contingência com as frequências absolutas não consegumos comparar bem as frequências observadas já que as subpopulações (máquinas) tem amostras de tamanhos diferentes, o que faz ser necessário trabalharmos com as porcentagens. Quando avaliamos as %, o comportamento das máquinas A e C parecem bastante semelhante, isto é, as proporções de defeituosos nas duas máquinas são parecidas, bem como a proporção de não defeituosos. O mesmo não se pode falar da máquina C, que apresentou proporções das categorias bem diferente das outras máquinas. Porém para respondermos o questionamento feito precisamos testar as hipóteses levantadas.
Para executarmos o teste de homogeneidade, também usaremos a função chisq.test do pacote stats.
A seguir, vamos apresentar os principais argumentos da função chisq.test para o teste de homogeneidade:
- x - uma tabela de contingência (dupla entrada) com as frequências absolutas;
- correct - um operador lógico indicando se será aplicado ou não a correção de continuidade (default - TRUE).
#Realizando o teste de homogeneidade
chisq.test(x = table(base_def$maquina, base_def$defeito),
correct = FALSE)
Pearson's Chi-squared test
data: table(base_def$maquina, base_def$defeito)
X-squared = 16.107, df = 2, p-value = 0.000318
A saída do teste contém várias informações: o valor da estatística do teste X-squared, o número de graus de liberdade da estatística de teste df e o p-valor associado as hipóteses especificadas.
Com base em um nível de significância de 5%, rejeitamos \(H_0\) (p-valor = 0.000318 < 0,05 = \(\alpha\)), ou seja, encontramos evidências nos dados para acreditar que a distribuição de defeituosos e não defeituosos não é homogênea, isto é, existe pelo menos uma máquina com distribuição de probabilidade dos itens defeituoso diferente. Avaliando a tabela de contingência, vê-se claramente que a máquina B possui um comportamento diferente das demais.
3 - Teste de independência
Suponha que selecionamos aleatoriamente \(n\) indivíduos de uma população. Vamos observar a qual categoria de duas variáveis cada indivíduo pertence. Suponha que a variável \(A\) possui \(c\) categorias e \(B\) possui \(r\) categorias. O objetivo deste teste é verificar se \(A\) e \(B\) são independentes.
As hipóteses associadas ao teste são
\[H_0: P(A_i \mbox{ e } B_j) = P(A_i)P(B_j) \qquad\] \[\times\] \[H_1: \mbox{Existe pelo menos uma diferente}.\] em que \(P(A_i)\) é a probabilidade de um elemento da população possuir característica \(A_i\) e \(P(B_j)\) é a probabilidade de um elemento da população possuir característica \(B_j\), \(i = 1, \ldots, c\) e \(j = 1, \ldots, r\).
Vamos discutir o teste em cima do seguinte problema: um pesquisador está interessado em saber se existe relação entre sexo e hábito de fuma. O pesquisador selecinou uma amostra de 70 indivíduos de uma específica cidade. Após isso, ele coletou informações do gênero e hábito de fumar das pessoas Ele gostaria de saber se existe relação entre o gênero e hábito de fumar. Como responder a este questionamento?
Se avaliarmos de forma superficial o problema acima, se assemelha com o problema discutido na secão anterior. Entretanto, temos uma diferença dundamental. Diferença entre os testes de homogeneidade e independência:
Teste de homogeneidade: selecionamos uma amostra de elementos de cada uma das \(r\) subpopulacões e distribuímos os elementos de cada uma dessas amostras segundo \(c\) categorias, ou seja, no início do experimento já está especificado o tamanho da amostra a ser coletado em cada subpopulação.
Teste de independência: distribuímos uma amostra de n elementos de “uma” população segundo as categorias da variável A e as categorias da variável B, ou seja, é coletado uma amostra da população e avaliado duas variáveis.
Notem que no nosso problema, a amostra foi coleta de uma única população (moradores da cidade) e foram observadas as categorias de duas variáveis: (masculino e feminino) gênero e (fumante e não fumante) hábito de fumar. Podemos traduzir o problema nas seguinte hipóteses
Hipótese: \[H_0: P(A_i \mbox{ e } B_j) = P(A_i)P(B_j), i = \{M,F\} \mbox{ e } j = \{F,NF\}\] \[\times\] \[H_1: \mbox{Existe pelo menos uma diferente}.\]
Antes de testarmos estas hipóteses, podemos explorar um pouco os dados.
#Importando os dados
base_fumo = read_table2("base fumo.txt")
#Tabela de contingência frequência absoluta
base_fumo |>
calc_cro_cases(fumante,sexo)| sexo | ||
|---|---|---|
| F | M | |
| fumante | ||
| F | 13 | 32 |
| NF | 17 | 8 |
| #Total cases | 30 | 40 |
#Tabela de contingência percentual por coluna
base_fumo |>
calc_cro_cpct(fumante,sexo)| sexo | ||
|---|---|---|
| F | M | |
| fumante | ||
| F | 43.3 | 80 |
| NF | 56.7 | 20 |
| #Total cases | 30 | 40 |
#Gráfico de barras empilhadas
base_fumo |>
ggplot(aes(x = sexo, fill = fumante)) +
geom_bar(position = "fill") +
labs(x = "Sexo", fill = "Fumante", y = "%") +
scale_y_continuous(labels = scales::percent_format())Para executarmos o teste de independência, também usaremos a função chisq.test do pacote stats.
A seguir, vamos apresentar os principais argumentos da função chisq.test para o teste de homogeneidade:
- x - uma tabela de contingência (dupla entrada) com as frequências absolutas;
- correct - um operador lógico indicando se será aplicado ou não a correção de continuidade (default - TRUE).
#Realizando o teste de independência
chisq.test(x = table(base_fumo$fumante, base_fumo$sexo),
correct = FALSE)
Pearson's Chi-squared test
data: table(base_fumo$fumante, base_fumo$sexo)
X-squared = 10.039, df = 1, p-value = 0.001533
A saída do teste contém várias informações: o valor da estatística do teste X-squared, o número de graus de liberdade da estatística de teste df e o p-valor associado as hipóteses especificadas.
Com base em um nível de significância de 5%, rejeitamos \(H_0\) (p-valor = 0.001533 < 0,05 = \(\alpha\)), ou seja, encontramos evidências nos dados para acreditar que existe dependência entre as variáveis sexo e hábito de fumar.