Teste Qui-quadrado e Análise de Correspondência

EST024 - Pesquisa de Opinião e Mercado

Helgem de Souza

Introdução

Antes de iniciar nossa aula:

  1. Abra o RStudio.

  2. Crie um novo script.

  3. Crie uma pasta na área de trabalho com seu nome.

  4. Defina a pasta como diretório de trabalho

  5. Salve o script criado na pasta com o nome "aula13_est024.R".

  6. Baixe do Moodle o arquivo Pesquisa Secom 07/2022.rar e extraia na pasta criada.

  7. Leia o arquivo Rodada 02_F2F_BDvFinal.xlsx para o objeto pesquisa_secom e limpe os nomes com a função clean_names do pacote janitor.

Variáveis Qualitativas

Variáveis qualitativas são aquelas que se apresentam em escala nominal ou ordinal.

Mesmo quando sua rotulação é numérica, sua escala é no máximo ordinal, ou seja, elas não possuem o atributo da distância.

Desse modo, sua análise não pode ser realizada diretamente em seus valores.

De modo geral, sua análise se dá por meio de frequências, proporções e medidas congêneres.

Assim, como vimos na última aula, é bastante comum a utilização de tabelas e gráficos específicos para este tipo de dados, como gráficos de barras, tabelas de frequência e contingência, por exemplo.

Medidas de associação em escala

Uma das formas de verificar a relação existente entre duas ou mais variáveis e analisar seu nível de associação.

Para variáveis em escala discreta ou contínua, existem métricas clássicas para medir tal associação, como covariância, correlação e congêneres.

Entretanto, em variáveis em escala nominal e ordinal, essas medidas não se aplicam diretamente. Assim, é necessária a definição de novas métricas, que se apliquem ao seu nível de mensuração.

De modo geral, essas métricas são baseadas em tabelas de contingência.

Tabelas de contingência

Definição: Uma tabela de contingência é uma tabela que relaciona a frequência de duas (ou mais) variáveis categóricas. Também são conhecidas como tabelas cruzadas ou tabelas bidirecionais.

Uma tabela de contingência tem m linhas e k colunas, em que m e k são a quantidade de níveis das variáveis qualitativas presentes nas linhas e colunas da tabela, respectivamente. Consequentemente, a tabela terá \(m \times k\) elementos.

\(C_1\) \(C_2\) \(\cdots\) \(C_k\)
\(R_1\) \(n_{11}\) \(n_{12}\) \(\cdots\) \(n_{1k}\)
\(R_2\) \(n_{21}\) \(n_{22}\) \(\cdots\) \(n_{2k}\)
\(\vdots\) \(\vdots\) \(\vdots\) \(\vdots\)
\(R_m\) \(n_{m1}\) \(n_{m2}\) \(\cdots\) \(n_{mk}\)

A tabela acima tem duas variáveis, a primeira com \(m\) níveis e a segunda com \(k\) níveis.

Tabelas de contingência

A tabela a seguir representa a contingência entre o sexo e a ocupação, nos dados da pesquisa SECOM:

Não, não desempenho trabalho remunerado Sim, desempenho um trabalho remunerado
Feminino 485 542
Masculino 297 707

Importante perceber que o tamanho da amostra é igual à soma das frequências, ou seja: \(n = \sum\limits_{i = 1}^m\sum\limits_{j = 1}^k n_{ij}\).

No nosso exemplo, o tamanho da amostra é \(n = 485 + 542 + 297+707 = 2031\).

Tabelas de Contingência no R com o pacote gtsummary

Existem diversas possibilidades para se gerar uma tabela de contingência de duas variáveis x e y no R, a seguir como gerar uma tabela de contingência usando os pacotes base e dplyr, os mais populares.

#base
table(pesquisa_secom$pf1, pesquisa_secom$pf4)
           
            Não, não desempenho trabalho remunerado
  Feminino                                      485
  Masculino                                     297
           
            Sim, desempenho um trabalho remunerado
  Feminino                                     542
  Masculino                                    707
#dplyr
pesquisa_secom %>% 
  group_by(pf1, pf4) %>% 
  summarise(n = n(), .groups = "drop") %>% 
  pivot_wider(names_from = pf4, values_from = n, values_fill = 0)
# A tibble: 2 × 3
  pf1       `Não, não desempenho trabalho remunerado` Sim, desempenho um traba…¹
  <chr>                                         <int>                      <int>
1 Feminino                                        485                        542
2 Masculino                                       297                        707
# ℹ abbreviated name: ¹​`Sim, desempenho um trabalho remunerado`

Ambas são bastante úteis, sobretudo para utilização em outras funções. Entretanto, do ponto de vista de formatação, são tabelas simples. O pacote gtsummary oferece tabelas com melhor formatação e nível de customização.

Tabelas de Contingência no R com o pacote gtsummary

Para gerar uma tabela de contingência no pacote gtsummary, assim como na tabela de frequências, utilizamos a função tbl_summary(). Utilizamos os seguintes parâmetros:

data: o conjunto de dados que contem as variáveis

include: variáveis primárias da tabela

by: variável de contingência

Vejamos nossa tabela anterior no pacote gtsummary:

pesquisa_secom %>% 
  tbl_summary(include = pf1,
              by = pf4)
Characteristic Não, não desempenho trabalho remunerado
N = 7821
Sim, desempenho um trabalho remunerado
N = 1,2491
pf1

    Feminino 485 (62%) 542 (43%)
    Masculino 297 (38%) 707 (57%)
1 n (%)

Perceba que ela inclui não só as frequências absolutas, mas também as relativas e a contagem da variável de contingência.

Tabelas de Contingência no R com o pacote gtsummary

Se quisermos apresentar as frequências agrupadas por linha, basta utilizar o parâmetro percent = "row":

pesquisa_secom %>% 
  tbl_summary(include = pf1,
              by = pf4,
              percent = "row")
Characteristic Não, não desempenho trabalho remunerado
N = 7821
Sim, desempenho um trabalho remunerado
N = 1,2491
pf1

    Feminino 485 (47%) 542 (53%)
    Masculino 297 (30%) 707 (70%)
1 n (%)

Tabelas de Contingência no R com o pacote gtsummary

O pacote gtsummary possui algumas vantagens. Por exemplo, é possível fazer uma única tabela de contingência com várias variáveis, desde que contingenciadas pelo mesmo fator:

pesquisa_secom %>% 
  tbl_summary(include = c(pf1, idade, pf3),
              by = pf4,
              percent = "row")
Characteristic Não, não desempenho trabalho remunerado
N = 7821
Sim, desempenho um trabalho remunerado
N = 1,2491
pf1

    Feminino 485 (47%) 542 (53%)
    Masculino 297 (30%) 707 (70%)
idade

    16 a 17 anos 44 (62%) 27 (38%)
    18 a 24 anos 125 (42%) 170 (58%)
    25 a 34 anos 113 (26%) 317 (74%)
    35 a 44 anos 81 (22%) 294 (78%)
    45 a 59 anos 158 (32%) 333 (68%)
    60 anos ou mais 261 (71%) 108 (29%)
pf3

    Analfabeto 42 (74%) 15 (26%)
    Ensino Fundamental Completo 82 (42%) 114 (58%)
    Ensino Fundamental Incompleto 246 (49%) 255 (51%)
    Ensino Médio Completo 224 (31%) 502 (69%)
    Ensino Médio Incompleto 98 (42%) 135 (58%)
    Ensino Superior Completo 24 (18%) 112 (82%)
    Ensino Superior Incompleto 37 (32%) 77 (68%)
    Pós Graduado: Especialização, Mestrado ou Doutorado 4 (15%) 23 (85%)
    Sabe ler e escrever 25 (61%) 16 (39%)
1 n (%)

Medidas de associação em variáveis qualitativas

Conforme dito, variáveis qualitativas não contem em sua escala o atributo da distância. Desse modo, uma das formas de se analisar a associação entre duas variáveis é a análise de sua tabela de contingência.

A associação é medida por meio do conceito de independência.

Se duas variáveis são independentes, em uma tabela de contingência, espera-se que as probabilidades de cada célula seja igual ao produto de duas marginais.

Ou seja, quanto mais próxima da distribuição esperada estiver a tabela de contingência, maiores são os indícios de independência ou ausência de associação.

Para testar essa suposição, o teste mais utilizado é o Teste Qui-quadrado.

Teste Qui-quadrado de independência

Suponha que queiramos testar se duas variáveis qualitativas nominais X e Y são independentes, ou seja, testar as seguintes hipóteses:

  • \(H_0:\) As variáveis X e Y são independentes

  • \(H_1:\) As variáveis X e Y não são independentes

Suponha que a variável X tenha os níveis X1 e X2, e a variável Y tenha os níveis Y1 e Y2. A partir da amostra, de tamanho \(n\), podemos construir uma tabela de contingência, que será uma tabela 2x2.

Teste Qui-quadrado de independência

Esses seriam os valores observados na amostra:

Y1 Y2 Total
X1 \(o_1\) \(o_2\) \(o_1 + o_2\)
X2 \(o_3\) \(o_4\) \(o_3 + o_4\)
Total \(o_1 + o_3\) \(o_2 + o_4\) \(n\)

em que \(n = o_1 + o_. 2 + o_3 + o_4\).

Ou seja, temos:

  • \(o_1\) elementos na amostra nos quais se observou os níveis X1 e Y1,

  • \(o_2\) elementos na amostra nos quais se observou os níveis X1 e Y2,

  • \(o_3\) elementos na amostra nos quais se observou os níveis X2 e Y1,

  • \(o_4\) elementos na amostra nos quais se observou os níveis X2 e Y2,

Teste Qui-quadrado de independência

Se considerarmos a hipótese nula (\(H_0\)) verdadeira, ou seja, X e Y são independentes, os valores esperados seriam dados conforme a tabela a seguir:

Y1 Y2 Total
X1 \(e_1 = \dfrac{(o_1 + o_2)(o_1 + o_3)}{n}\) \(e_2 = \dfrac{(o_1 + o_2)(o_2 + o_4)}{n}\) \(o_1 + o_2\)
X2 \(e_3 = \dfrac{(o_1 + o_3)(o_3 + o_4)}{n}\) \(e_4 = \dfrac{(o_2 + o_4)(o_3 + o_4)}{n}\) \(o_3 + o_4\)
Total \(o_1 + o_3\) \(o_2 + o_4\) \(n\)

Teste Qui-quadrado de independência

Ou seja, teríamos as seguintes tabelas de valores observados e esperados:

Frequências observadas
Y1 Y2 Total
X1 \(o_1\) \(o_2\) \(o_1 + o_2\)
X2 \(o_3\) \(o_4\) \(o_3 + o_4\)
Total \(o_1 + o_3\) \(o_2 + o_4\) \(n\)
Frequências esperadas
Y1 Y2 Total
X1 \(e_1\) \(e_2\) \(o_1 + o_2\)
X2 \(e_3\) \(e_4\) \(o_3 + o_4\)
Total \(o_1 + o_3\) \(o_2 + o_4\) \(n\)

Caso as variáveis sejam independentes, espera-se que a distância entre os valores observados e os respectivos valores esperados sejam pequenas.

Caso contrário, as distâncias seriam grandes, pois os valores esperados seriam muito diferentes dos valores observados.

A distância entre os valores observados e esperados em cada célula é dada por:

\[ (o_i - e_i)^2 \]

Teste Qui-quadrado de independência

Uma boa forma de quantificar essa distância para toda a tabela, seria somar as distâncias para cada valor.

Caso os valores sejam significativamente distantes, tal soma apresentaria um valor grande e as evidências apontariam para a existência de uma dependência entre as variáveis.

A soma das distâncias fica dada por:

\[ \sum\limits_{i = 1}^{r \times c}(o_i - e_i)^2 \]

em que

  • \(r\) é o número de níveis da variável 1 e

  • \(c\) é o número de níveis da variável 2.

Teste Qui-quadrado de independência

Para testar se soma das distâncias entre os valores observados e esperados é grande, utiliza-se a distribuição Qui-quadrado (\(\chi^2\) ). Como sabemos, ela pode ser obtida diretamente da distribuição normal.

Conforme já visto em outras disciplinas, a quantidade abaixo segue uma distribuição qui-quadrado com \((r-1)(c-1)\) graus de liberdade,

\[ \chi^2 = \sum\limits_{i = 1}^{r \times c}\dfrac{(o_i - e_i)^2}{e_i} \]

Utilizaremos essa estatística e a distribuição qui-quadrado para calcular se a distância total entre os valores observados e esperados é significativa, ou seja, o p-valor de nosso teste.

Distâncias grandes levarão à p-valores significativos (menores que \(\alpha\)), nos levando a não aceitar a hipótese de independência.

Teste Qui-quadrado de independência

Para concluir, vamos relembrar as hipóteses do teste:

  • \(H_0:\) As variáveis X e Y são independentes

  • \(H_1:\) As variáveis X e Y não são independentes

Caso o p-valor não seja significativo (maior que \(\alpha\)), não rejeitaremos a hipótese nula. Ou seja, as variáveis são independentes, o que significa que não existe relação entre as variáveis. A ocorrência de uma variável não afeta a ocorrência da outra.

Caso o p-valor seja significativo, não aceitaremos a hipótese nula. Ou seja, existe uma relação entre as variáveis. A ocorrência de uma variável afeta a ocorrência da outra.

Teste Qui-quadrado de independência - Exemplo

Vamos testar se existe associação entre as variáveis sexo (pf1) e perfil de ocupação (pf4). As hipóteses são:

  • \(H_0\): Não existe associação entre o sexo e o perfil de ocupação.

  • \(H_1\): Existe associação entre o sexo e o perfil de ocupação.

table(pesquisa_secom$pf1, pesquisa_secom$pf4) %>%  
  stats::chisq.test()

    Pearson's Chi-squared test with Yates' continuity correction

data:  .
X-squared = 65.999, df = 1, p-value = 4.511e-16

De acordo com o teste, existem evidências ao nível de 1% de significância que indicam associação entre as variáveis sexo e perfil de ocupação.

Teste Qui-quadrado de independência - Exemplo

Podemos também gerar a tabela de contingência no pacote gtsummary, conforme visto anteriormente, já com a inclusão do teste qui-quadrado. Basta adicionar a função add_p, do referido pacote

pesquisa_secom %>% 
  tbl_summary(include = pf4, 
              by = pf1,
              percent = "row") %>% 
  add_p
Characteristic Feminino
N = 1,0271
Masculino
N = 1,0041
p-value2
pf4

<0.001
    Não, não desempenho trabalho remunerado 485 (62%) 297 (38%)
    Sim, desempenho um trabalho remunerado 542 (43%) 707 (57%)
1 n (%)
2 Pearson’s Chi-squared test

Note que o teste indica a associação mas não explica sua natureza. Vamos explorar essa associação por meio da análise de correspondência.

Análise de Correspondência

A Análise de correspondência é uma técnica de estatística multivariada, voltada para a redução de dimensionalidade, voltada para aplicação em variáveis categóricas. Ela reduz a dimensionalidade dos dados a duas dimensões, o que permite a referida visualização.

Sua aplicação é particularmente interessante em dados de tabelas de contingência e somente faz sentido prático se a associação entre as variáveis foi verificada por meio do teste qui-quadrado.

Enquanto o teste qui-quadrado permite identificar a presença de associação, a análise de correspondência permite a compreensão das relações existentes.

Como seu conteúdo teórico foi abordado na disciplina de estatística multivariada, nos ateremos apenas à sua aplicação.

Análise de Correspondência

O cálculo da Análise de correspondência pode ser realizada por diversos pacotes:

  • CA(): pacote FactoMineR,

  • ca(): pacote ca,

  • dudi.coa(): pacote ade4,

  • corresp(): pacote MASS,

Vamos utilizar a função CA() do pacote FactoMineR em nossos exemplos.

Análise de Correspondência

Primeiramente vamos carregar os pacotes FactoMineR para ralizar a análise de correspondência e o pacote factoextra para facilitar sua visualização:

#Instalação e carregamento dos pacotes
pacman::p_load(FactoMineR, factoextra)

Vamos ilustrar com a análise da relação existente entre as variáveis nível de escolaridade e avaliação da evolução da educação estadual.

Análise de Correspondência - Exemplo

Como vimos, a função CA() já retorna o resultado do teste qui-quadrado. Assim, podemos usar a função diretamente, que possui os seguintes parâmetros principais:

CA(x, ncp) em que

  • x - Dataframe ou tabela de contingência

  • ncp - Número de dimensões. Valor padrão 5.

  • graph - plota o gráfico padrão de análise de correspondência. Padrão TRUE.

Vamos trabalhar inicialmente com uma tabela de contingência.

Análise de Correspondência - Exemplo

Primeiramente vamos analisar a tabela de contingência.

pesquisa_secom %>% 
  select(p33, pf3) %>% 
  filter(p33 %in% c("Ficou igual", "Melhorou", "Piorou")) %>% 
  tbl_summary(include = pf3, by = p33,
              percent = "row") %>% 
  add_p()
Characteristic Ficou igual
N = 9091
Melhorou
N = 5241
Piorou
N = 5481
p-value2
pf3


0.028
    Analfabeto 18 (33%) 25 (45%) 12 (22%)
    Ensino Fundamental Completo 91 (47%) 43 (22%) 59 (31%)
    Ensino Fundamental Incompleto 220 (45%) 146 (30%) 122 (25%)
    Ensino Médio Completo 341 (48%) 179 (25%) 196 (27%)
    Ensino Médio Incompleto 109 (48%) 60 (26%) 59 (26%)
    Ensino Superior Completo 60 (47%) 29 (23%) 39 (30%)
    Ensino Superior Incompleto 47 (42%) 25 (23%) 39 (35%)
    Pós Graduado: Especialização, Mestrado ou Doutorado 9 (36%) 4 (16%) 12 (48%)
    Sabe ler e escrever 14 (38%) 13 (35%) 10 (27%)
1 n (%)
2 Pearson’s Chi-squared test

Note que existe associação entre as variáveis, mas não é possível visualizar o sentido da associação. Para isso vamos agora aplicar a análise de correspondência.

Análise de Correspondência - Exemplo

Vejamos o resultado inicial do método. Note que ele retorna algumas informações, dentre elas o resultado do teste qui-quadrado. Vamos omitir o gráfico inicialmente

#Cálculo de tabela de contingência
tab1 <- pesquisa_secom %>% 
  select(p33, pf3) %>% 
  filter(p33 %in% c("Ficou igual", "Melhorou", "Piorou")) %>% 
  table 

ca_educacao <- tab1 %>% CA(graph = F)
ca_educacao
**Results of the Correspondence Analysis (CA)**
The row variable has  3  categories; the column variable has 9 categories
The chi square of independence between the two variables is equal to 28.40428 (p-value =  0.02827672 ).
*The results are available in the following objects:

   name              description                   
1  "$eig"            "eigenvalues"                 
2  "$col"            "results for the columns"     
3  "$col$coord"      "coord. for the columns"      
4  "$col$cos2"       "cos2 for the columns"        
5  "$col$contrib"    "contributions of the columns"
6  "$row"            "results for the rows"        
7  "$row$coord"      "coord. for the rows"         
8  "$row$cos2"       "cos2 for the rows"           
9  "$row$contrib"    "contributions of the rows"   
10 "$call"           "summary called parameters"   
11 "$call$marge.col" "weights of the columns"      
12 "$call$marge.row" "weights of the rows"         

Análise de Correspondência

Agora vamos plotar o gráfico.

A função CA oferece por padrão um gráfico. Entretanto, ele não apresenta boas opções de customização.

A função fviz_ca_biplot() do pacote factoextra() gera um gráfico em base ggplot(), logo, todas suas customizações são aplicáveis.

Vamos verificar seu resultado no próximo slide.

Análise de Correspondência - Exemplo

fviz_ca_biplot(ca_educacao) + 
  labs(title = "Análise de Correspondência - Educação Estadual x Escolaridade")

É possível agora verificar como os níveis das variáveis estão associados.

Exercício

Verifique por meio de tabelas de contingência e teste qui-quadrado se existe ou não associação entre as variáveis faixa etária, escolaridade e ocupação eas variáveis a seguir. Caso existam, efetue a análise de correspondência e avalie qual a relação entre os níveis:

  1. Avaliação geral do governo federal

  2. Avaliação das áreas do governo federal (Variáveis p15)