Até agora as técnicas de análise descritiva apresentadas são para tratar separadamente cada uma das variáveis, seja qualitativa ou quantitativa. Isto é, analisamos isoladamente cada variável sem observar se existe algum tipo de relação entre duas ou mais variáveis.
A análise conjunta bivariada pode indicar se uma variável apresenta algum grau de depedência com outra, ou seja, se estas apresentam alguma associação ou correlação. Por fim, queremos responder à pergunta: existe relação entre duas variáveis? Esta pergunta é feita, sob diferentes situações: existe relação entre peso e altura de indivíduos? entre o número reprovações em disciplinas e o curso escolhido? entre o hábito de fumar e gênero? Nestes exemplos, as variáveis qualitativas e quantitativas podem ser estudadas conjuntamente.
Apresentamos nas seções seguintes, uma forma de analisar duas variáveis conjuntamente. Consideramos três casos:
Caso 1: uma variável é qualitativa e a outra é quantitativa, em geral descrevemos estatisticamente a variável quantitativa, segundo as categorias da variável qualitativa;
Caso 2: as duas variáveis são qualitativas, neste caso, construímos uma tabela de dupla entrada (tabela de contingência);
Caso 3: as duas variáveis são quantitativas: construímos gráficos de dispersão e determinamos o grau e o sinal da relação através do coeficiente de correlação.
Este caso é bem simples, pois utilizamos as medidas resumo, tabelas e gráficos apresentados anteriormente. Assim, esta análise é aplicada na variável quantitativa, segundo a variável qualitativa. Ou seja, realizamos a análise descritiva para os valores da variável quantitativa em cada uma das categorias.
Como exemplo, vamos utilizar as variáveis tipo de serviço e tempo de conexão do exemplo anterior, as quais são qualitativa e quantitativa, respectivamente.
Esta análise consiste na construção de três conjunto de valores tal que, o primeiro grupo conterá os tempos de conexão do tipo http, o segundo grupo conterá os tempos de conexão com serviço do tipo particular e, o terceiro grupo com os tempos da conexão do serviço smtp. Após esta construção, aplicamos nos três grupos, a técnica descrita.
Exemplo: A Tabela abaixo exibe algumas medidas resumo (número de observações, média amostral, quartis e desvio padrão amostral) do tempo de conexão, para cada tipo de serviço.
Medidas resumo para o tempo de conexão, segundo o tipo de serviço.
servico | n | Media | Q1 | Q2 | Q3 | Desv.P |
---|---|---|---|---|---|---|
http | 6 | 1.21 | 0.76 | 1.29 | 1.43 | 0.83 |
particular | 4 | 14.49 | 8.57 | 15.22 | 21.14 | 9.90 |
smtp | 5 | 5.31 | 3.23 | 3.94 | 8.77 | 4.25 |
Observe que,
o tipo particular apresenta o maior tempo médio e tempo mediano de conexão, bem como os demais quartis. A média total dos tempos pode ser obtida fazendo uma média ponderada, isto é, levando em consideração o número de observações em cada tipo de conexão;
o tipo particular apresenta a maior variabilidade;
o tipo http apresenta a menor média e variabilidade.
Além disso, representações gráficas podem ser realizadas, com gráficos boxplot para grupo.
Boxplot do tempo de conexão por tipo de serviço
Neste caso, é comum a construção de uma tabela com as duas variáveis. Esta tabela, chamada de tabela de contingência e exibe a distribuição conjunta das duas variáveis qualitativas. Através dela, podemos observar se existe alguma associação entre tais variáveis, bem como medir o grau de dependência entre elas.
Exemplo: A Tabela de contigência abaixo exibe o comportamento conjunto das variáveis tipo de serviço e login.
Tabela de contingência das variáveis login e tipo de conexão.
login | http | particular | smtp | Total |
---|---|---|---|---|
sim | 1 | 3 | 1 | 5 |
nao | 5 | 1 | 4 | 10 |
Total | 6 | 4 | 5 | 15 |
Cada célula da tabela exibe a frequência observada das realizações simultâneas das variáveis login e tipo de serviço. Por exemplo, pode-se notar que existe apenas uma conexão do tipo particular cujo login não foi realizado, bem como apenas 5 conexões, independentemente do tipo, em que o login foi realizado.
Entretanto, não é simples notarmos diretamente qualquer relação entre duas variáveis através da tabela de contingência, mesmo observando os totais expressos pela última linha e última coluna.
Uma alternativa é utilizar gráficos de barras, ou de setores circulares, para verificar a frequência em cada uma das categorias de uma variável, considerando a segunda variável como referência.
As figuras acima exibem os gráficos de barras agrupadas para o tipo de login por tipo de serviço e o tipo de serviço por tipo de login, respectivamente. Os gráficos são exibidos por frequência absoluta, porém poderiam ser exibidos em frequência relativa ou porcentagens.
Além disso, o cálculo de porcentagens, segundo as linhas ou coluna ou total, permite a comparação geral entre os valores nas células.
Exemplo: A Tabela abaixo exibe as porcentagens referentes aos totais do tipo de conexão por login, ou seja, via porcentagem geral nas linhas. Da mesma forma, os mesmos dados poderiam ser expressos via porcentagem geral nas colunas.
Tabela de contingência com as porcentagens do tipo de serviço por login.
login | http | particular | smtp | Total |
---|---|---|---|---|
sim | 20 | 60.00 | 20.00 | 100 |
nao | 50 | 10.00 | 40.00 | 100 |
Total | 40 | 26.67 | 33.33 | 100 |
Note que, independente do login, 40% das conexões são do tipo http, cerca de 27% são do tipo particular e 33% são do tipo smtp.
Não havendo associação entre as duas variáveis, esperamos essas mesmas proporções para cada uma das classes. Ou seja, se as duas variáveis forem não relacionadas, é esperado que as proporções se mantenham entre as duas classes (sim e não).
Em geral, para quantificar o grau de associação entre duas variáveis qualitativas, utilizamos um coeficiente de associação. Os coeficientes são medidas que descrevem a dependência entre as variáveis.
Para iniciar sua construção, definimos a quantidade, \(E\), chamada de frequência esperada ou valor esperado, dada por:
\[E_{ij} = \frac{(\mbox{total da linha } i) \times (\mbox{total da coluna } j)}{\mbox{total geral}}=\frac{\sum^J_{j=1} O_{ij}\times\sum^I_{i=1} O_{ij}}{n}\] sendo que \(I\) representa o número de linhas da tabela de contingência, \(J\) o número de colunas, \(O_{ij}\) é a frequência observada para linha \(i\) e coluna \(j\).
O coeficiente Qui-Quadrado de Pearson (ver por exemplo, Mukaka (2012Mukaka, M. M. 2012. «A guide to appropriate use of correlation coefficient in medical research». Malawi Medical Journal 24 (3): 69–71.)), denotado pela letra grega \(\chi\) ao quadrado, é definido por,
\[\chi^2 = \sum_{i=1}^{I} \sum_{j=1}^{J} \frac{(O_{ij} - E_{ij})^2}{E_{ij}}\]
A partir dos valores de \(\chi^2\), é possível mensurar o grau de associação entre duas variáveis qualitativas. Desta forma, dizemos que valores próximos de zero indicam não associação entre as variáveis e valores muito altos indicam associação entre as variáveis.
Exemplo: Para as variáveis tipo de conexão e login, os valores esperados são dados por,
\[\begin{array}{ccc} E_{11} = \frac{6\times5}{15}=2,00 & E_{12} = \frac{4\times5}{15}= 1,33 & E_{13} \frac{5\times5}{15}= 1,67 \\ E_{21} = \frac{6\times10}{15}=4 & E_{22} = \frac{4\times10}{15}=2,67 & E_{23} = 3,33 \end{array}\] Logo, o coeficiente de Pearson é dado por,
\[\chi^2 = \frac{(1-2)^2}{2} + \frac{(3-1,33)^2}{1,33} + \cdots + \frac{(4-3,33)^2}{3,33} = 23,5 \]
Note que o valor de \(\chi^2\) é grande, assim podemos dizer que existe uma indicação de associação entre as duas variáveis.
O coeficiente de contingência, denotado por \(C\) e baseado no coeficiente qui-quadrado de Pearson, pode ser utilizado para indicar o grau de associação.
\[C = \sqrt{\frac{\chi^2}{\chi^2+n}}\]
Quando \(C=0\) não há associação entre as variáveis. Porém, ainda que o valor de \(C\) não exceda o 1, ele pode ser menor que 1, mesmo quando duas variáveis sejam perfeitamente relacionadas entre si.
Para corrigir essa situação, utilizamos outro coeficiente, denotado por \(T\),
\[T = \sqrt{\frac{\chi^2/n}{(I-1)(J-1)}}\] sendo, da mesma forma, \(I\) o número de linhas e \(J\) o número de colunas na tabela de contingência.
Este novo coeficiente varia no intervalo \([0,1]\), atingindo o valor 1 quando \(I=J\). Quanto mais próximo de um, maior é o grau de associação, sendo 1 a associação perfeita entre as variáveis.
Exemplo: Calculando as medidas \(C\) e \(T\) para as variáveis tipo de conexão e login, obtemos
\[C = \sqrt{\frac{\chi^2}{\chi^2+n}}=\sqrt{\frac{23,5}{23,5+15}}=0,781\]
e
\[T = \sqrt{\frac{\chi^2/n}{(I-1)(J-1)}}=\sqrt{\frac{23,5/15}{(2-1)(3-1)}}=0,885\]
Podemos dizer que existe uma indicação de associação forte entre as duas variáveis.
Nesta situação, temos informação conjunta de duas variáveis quantitativas e podemos verificar o grau de dependência entre elas, bem como o sentido desta dependência.
Denotamos uma das variáveis de \(X\) e a outra de \(Y\). Assim, temos uma amostra destas variáveis e o par de informação para cada observação é denotado por \((X_i, Y_i)\), \(i = 1, \cdots, n\), sendo \(n\) o número de observações na amostra. Após observados os valores amostrais temos uma amostra bivariada dada por \(((x_1, y_1)\), \((x_2, y_2)\), \(\cdots\), \((x_n, y_n))\). Estamos interessados em conhecer o comportamento conjunto das duas variáveis quantitativas.
A representação gráfica é um passo inicial nesta análise, e neste caso, o diagrama apropriado é de gráfico de dispersão, também chamado de scatterplot. Neste gráfico podemos observar o comportamento conjunto das variáveis, no sentido de verificar a existência ou não de relações e se esta relação existe, qual é a forma: positiva, negativa, linear ou não linear.
Ou seja, a relação pode ser:
positiva: valores grandes (pequenos) de \(X\) com valores grandes (pequenos) de \(Y\);
negativa: valores pequenos (grandes) de \(X\) com valores grandes (pequenos) de \(Y\);
linear: uma reta descreve bem o comportamento dos pontos \((x_i, y_i)\), \(i = 1,\cdots,n\);
sem relação linear: uma nuvem de pontos, isto é, valores pequenos e grandes de \(X\) com valores grandes e pequenos de \(Y\), sem uma estrutura nítida crescente ou decrescente.
Uma das medidas de associação mais utilizadas para quantificar o grau de dependência entre duas variáveis quantitativas é o coeficiente de correlação (linear). Esta medida avalia o quanto a nuvem de pontos no gráfico aproxima-se visualmente de uma reta.
O coeficiente de correlação linear de Pearson assume valores no intervalo (-1,1), é denotado por \(r\) e, para os valores \((x_i, y_i)\), definido por
\[r = \frac{\sum_{i=1}^{n}x_i y_i - n\bar{x}\bar{y}} {\sqrt{(\sum_{i=1}^{n} x_i^2 - n\bar{x}^2) (\sum_{i=1}^{n} y_i^2 - n\bar{y}^2)}}\]
Para interpretá-lo, verificamos o sinal e o valor: o sinal indica a direção (positiva ou negativa) e o valor indica o grau da relação. Assim, valores próximos de -1 indicam uma relação linear negativa; valores próximos de 1 indicam relação linear positiva, ao redor de 0 indica ausência de relação linear. Alguns autores especificam o grau da correlação linear em intervalos. Figueiredo Filho e Silva Júnior (2009Figueiredo Filho, D. B., e J. A. da Silva Júnior. 2009. «Desvendando os Mistérios do Coeficiente de Correlação de Pearson (r)».) apresentam algumas interpretações, como por exemplo a interpretação de Dancey e Reidy (2018Dancey, Christine, e John Reidy. 2018. Estatı́stica Sem Matemática para Psicologia-7. Penso Editora.), que considera valores absolutos de \(r\) até 0,39 como correlação linear fraca, de 0,4 a 0,69 como correlação linear moderada e acima de 0,7 como correlação linear forte. É importante destacar que este coeficiente não indica qual é a variável dependente ou independente, apenas a existência, ou não da associação linear.
Exemplo: Voltando ao exemplo inicial, para as variáveis bytes enviados e tempo de conexão construímos um gráfico de dispersão, apresentado na figura abaixo.
Notamos que existe uma relação linear positiva, ou seja, à medida que os valores do tempo de conexão crescem, os valores da bytes enviados também aumentam, de uma forma geral. O sinal do coeficiente \(r\) será positivo.
Para verificar o grau desta relação, calculamos o coeficiente \(r\).
A Tabela abaixo exibe os cálculos para obtenção do coeficiente de correlação de Pearson.
Tabela para cálculo do coeficiente de correlação de Pearson
tempo | bytes.env | xi2 | yi2 | xiyi |
---|---|---|---|---|
1.16 | 1877 | 1.3456 | 3523129 | 2177.32 |
2.55 | 1691 | 6.5025 | 2859481 | 4312.05 |
1.42 | 1896 | 2.0164 | 3594816 | 2692.32 |
1.43 | 1944 | 2.0449 | 3779136 | 2779.92 |
0.10 | 1916 | 0.0100 | 3671056 | 191.60 |
0.63 | 1830 | 0.3969 | 3348900 | 1152.90 |
2.61 | 3502 | 6.8121 | 12264004 | 9140.22 |
10.56 | 8301 | 111.5136 | 68906601 | 87658.56 |
24.91 | 7021 | 620.5081 | 49294441 | 174893.11 |
19.88 | 5991 | 395.2144 | 35892081 | 119101.08 |
0.10 | 1760 | 0.0100 | 3097600 | 176.00 |
3.94 | 1690 | 15.5236 | 2856100 | 6658.60 |
10.49 | 1832 | 110.0401 | 3356224 | 19217.68 |
8.77 | 1901 | 76.9129 | 3613801 | 16671.77 |
3.23 | 1832 | 10.4329 | 3356224 | 5917.36 |
Somas para cálculo do coeficiente de correlação de Pearson
Soma | |
---|---|
tempo | 91.78 |
bytes.env | 44984.00 |
xi2 | 1359.28 |
yi2 | 203413594.00 |
xiyi | 452740.49 |
Logo,
\[n = 15; \bar{x} = 6,12; \; \bar{y} = 2998,93; \; \sum{x_i^2} = 1359,284; \;\]
\[\sum{y_i^2} = 203413594 \mbox{ e } \sum_{i=1}^{n} x_i y_i = 452740,5.\]
Assim,
\[\begin{aligned} r &= \frac{\sum_{i=1}^{n}x_i y_i - n\bar{x}\bar{y}} {\sqrt{(\sum_{i=1}^{n} x_i^2 - n\bar{x}^2) (\sum_{i=1}^{n} y_i^2 - n\bar{y}^2)}} \\ \\ &= \frac{ 452740,5 - 15(6,12)(2998,93)} {\sqrt{(1359,284 - (15)(6,12^2))(203413594 - (15)(2998,93^2))}} \\ \\ &= 0,759 \end{aligned}\]
Verificamos que o valor de \(r\) encontrado complementa a informação extraída do gráfico de dispersão, uma forte correlação linear positiva.
## CASO 1
#Média do tempo de conexão por tipo de serviço
aggregate(dados$tempo, by=list(dados$servico), mean)
## Group.1 x
## 1 http 1.215
## 2 particular 14.490
## 3 smtp 5.306
#Mediana do tempo de conexão por tipo de serviço
aggregate(dados$tempo, by=list(dados$servico), median)
## Group.1 x
## 1 http 1.29
## 2 particular 15.22
## 3 smtp 3.94
#Desvio padrão do tempo de conexão por tipo de serviço
aggregate(dados$tempo, by=list(dados$servico), sd)
## Group.1 x
## 1 http 0.8317391
## 2 particular 9.9029928
## 3 smtp 4.2470967
#Boxplot do tempo de conexão por tipo de serviço
boxplot(dados$temp~dados$servico)
## CASO 2
#Gráfico de Barras agregadas do tipo de serviço por login
TAB=table(dados$servico,dados$login)
TAB
##
## nao sim
## http 1 5
## particular 3 1
## smtp 1 4
CORES=c('red2','blue2','green2')
barplot(TAB,beside=T,ylim=c(0,7),col=CORES)
legend("topright", legend = c("http", "particular","smtp"),col=CORES,pch=15)
#Gráfico de Barras agregadas do login por tipo de serviço
TAB=table(dados$login,dados$servico)
TAB
##
## http particular smtp
## nao 1 3 1
## sim 5 1 4
barplot(TAB,beside=T,ylim=c(0,7),col=CORES[1:2])
legend("topright", legend = c("nao", "sim"),col=CORES,pch=15)
#Coeficientes de contingência
#Qui-quadrado
X2=chisq.test(TAB)$statistic
X2
## X-squared
## 4.275
#Coeficiente C
C.t=sqrt(X2/(X2+nrow(dados)))
C.t
## X-squared
## 0.4709457
#Coeficiente T
T.t=sqrt(X2/nrow(dados)/((nrow(TAB)-1)*(ncol(TAB)-1)))
T.t
## X-squared
## 0.3774917
## CASO 3
#Scatterplot para bytes enviados e bytes recebidos
plot(dados$bytes.env,dados$bytes.rec)
#Coeficiente de correlação linear de Pearson
cor(dados$bytes.env,dados$bytes.rec)
## [1] 0.6582805
## CASO 1
#Média do tempo de conexão por tipo de serviço
dados.groupby('servico')['tempo'].mean()
## servico
## http 1.215
## particular 14.490
## smtp 5.306
## Name: tempo, dtype: float64
#Mediana do tempo de conexão por tipo de serviço
dados.groupby('servico')['tempo'].median()
## servico
## http 1.29
## particular 15.22
## smtp 3.94
## Name: tempo, dtype: float64
#Desvio padrão do tempo de conexão por tipo de serviço
dados.groupby('servico')['tempo'].std(ddof=1)
## servico
## http 0.831739
## particular 9.902993
## smtp 4.247097
## Name: tempo, dtype: float64
#Boxplot do tempo de conexão por tipo de serviço
import matplotlib.pyplot as plt
dados.boxplot(column=['tempo'], by='servico')
plt.show()
## CASO 2
#Gráfico de barras agregadas do login por tipo de serviço
TAB=dados.groupby('login').servico.value_counts()
TAB.unstack(0).plot.bar()
plt.show()
#Gráfico de barras agregadas do tipo de servico por login
TAB=dados.groupby('servico').login.value_counts()
TAB.unstack(0).plot.bar()
plt.show()
## CASO 2
#Coeficientes de contingência
TAB=pandas.crosstab(dados['login'],dados['servico'])
from scipy.stats import chi2_contingency
import math
#Qui-quadrado
ChiVal=chi2_contingency(TAB)
ChiVal[0]
## 4.275
#Coeficiente C
Ct=math.sqrt(ChiVal[0]/(ChiVal[0]+dados.shape[0]))
Ct
## 0.4709457328275547
#Coeficiente T
Tt=math.sqrt(ChiVal[0]/dados.shape[0]/((TAB.shape[0]-1)*(TAB.shape[1]-1)))
Tt
## 0.3774917217635375
## CASO 3
#Scatterplot para bytes enviados e bytes recebidos
fig = plt.figure()
plt.scatter(dados['bytes.env'], dados['bytes.rec'])
plt.show()
#Coeficiente de correlação linear de Pearson
r=np.corrcoef(dados['bytes.rec'], dados['bytes.env'])
r
## array([[1. , 0.65828053],
## [0.65828053, 1. ]])