Análise Exploratória de
Dados
R – 03 de junho de 2008
Objetivos
Análise bivariada: uma variável qualitativa e
uma quantitativa:
representar
graficamente as duas
variáveis combinadas;
definir e calcular uma medida de
associação entre as variáveis.
Exemplo 1
Os
dados referem-se ao exemplo 2.1 do
livro-texto (Bussab e Morettin, pag. 11)
Arquivo: ciaMB.txt
Conteúdo: informações sobre estado civil,
grau de instrução, número de filhos,
salário (expresso como fração do salário
mínimo), idade (medida em anos e
meses) e procedência de 36 empregados
da seção de orçamentos da Companhia
MB.
Exemplo 1: nomes das
variáveis no arquivo
ecivil:
variável nominal cujos níveis são
solteiro ou casado.
instrucao: variável ordinal cujos níveis são
F(Ensino Fundamental), M(Ensino Médio)
e S(Ensino Superior).
nfilhos: número de filhos (apenas para os
funcionários casados), entre os solteiros a
informação está como NA.
Exemplo 1: nomes das
variáveis no arquivo
sal:
salário expresso como fração do
salário mínimo
idadea: idade em anos completos
idadem: meses
rp: região de procedência (interior, capital
e outros).
Exemplo 1:salário versus nível
de instrução
Suponha
que estejamos interessados em
analisar o comportamento dos salários
dentro de cada nível de instrução, ou seja,
investigar o comportamento conjunto das
variáveis sal e instrucao.
Para facilitar, vamos primeiro ordenar os
dados numa nova base (dadosord) pela
variável instrução.
Ordenando por instrução
dados=read.table(“http://www.im.ufrj.br/~flavia/aed06/ciaMB.txt”,header=T)
indice=order(dados$instrucao)
dadosord=dados[indice,]
table(dados$instrucao)
F M S
12 18 6
Logo, em dadosord as observações de 1 a 12 são de
empregados com Ensino Fundamental, de 13 a 30 com
Ensino Médio e de 31 a 36 com Ensino Superior.
observações de 1 a
12 em dadosord
dadosord
observações de 13
a 30 em dadosord
observações de 31
a 36 em dadosord
ecivil instrucao filhos sal idadea idadem
rp
1 solteiro
F NA 4.00 26 3 interior
2 casado
F 1 4.56 32 10 capital
3 casado
F 2 5.25 36 5 capital
5 solteiro
F NA 6.26 40 7 outra
6 casado
F 0 6.66 28 0 interior
7 solteiro
F NA 6.86 41 0 interior
8 solteiro
F NA 7.39 43 4 capital
12 solteiro
F NA 8.46 27 11 capital
14 casado
F 3 8.95 44 2 outra
18 casado
F 2 9.80 39 7 outra
23 solteiro
F NA 12.00 41 0 outra
27 solteiro
F NA 13.85 46 7 outra
4 solteiro
M NA 5.73 20 10 outra
9 casado
M 1 7.59 34 10 capital
10 solteiro
M NA 7.44 23 6 outra
11 casado
M 2 8.12 33 6 interior
13 solteiro
M NA 8.74 37 5 outra
15 casado
M 0 9.13 30 5 interior
16 solteiro
M NA 9.35 38 8 outra
17 casado
M 1 9.77 31 7 capital
20 solteiro
M NA 10.76 37 4 interior
21 casado
M 1 11.06 30 9 outra
22 solteiro
M NA 11.59 34 2 capital
25 casado
M 2 13.23 32 5 interior
26 casado
M 2 13.60 35 0 outra
28 casado
M 0 14.69 29 8 interior
29 casado
M 5 14.71 40 6 interior
30 casado
M 2 15.99 35 10 capital
32 casado
M 1 16.61 36 4 interior
35 casado
M 2 19.40 48 11 capital
19 solteiro
S NA 10.53 25 8 interior
24 casado
S 0 12.79 26 1 outra
31 solteiro
S NA 16.22 31 5 outra
33 casado
S 3 17.26 43 7 capital
34 solteiro
S NA 18.75 33 7 capital
36 casado
S 3 23.30 42 0 interior
Medidas resumo por nível de
instrução
Vamos começar descrevendo o comportamento dos salários por
nível de instrução, a partir das estatísticas resumo dentro de cada
nível.
sink(“a:\\relatorio1.txt”) #gera um relatório no disquete
“Comportamento de salários para Ensino Fundamental”
summary(dadosord$sal[1:12])
“Desvio-padrão:”
sd(dados$sal[1:12])
“Comportamento de salários para Ensino Médio”
summary(dadosordsal[13:30])
“Desvio-padrão:”
sd(dadosord$sal[13:30])
“Comportamento de salários para Ensino Superior”
summary(dadosord$sal[31:36])
“Desvio-padrão:”
sd(dadosord$sal[31:36])
sink() #fecha o relatório
Lista de comandos
source(“http://www.im.ufrj.br/~flavia/aed06/instrusal.txt”)
O
conteúdo será gravado no arquivo
relatorio1.txt no disquete no drive A
Se você preferir, edite o arquivo
instrusal.txt e na primeira linha altere o
endereço e/ou o nome do arquivo que
conterá os resultados.
[1] "Comportamento de salários para Ensino Fundamental"
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.000 6.008 7.125
7.837 9.163 13.850
desvio-padrão: 2.956464
[1] "Comportamento de salários para Ensino Médio"
Min. 1st Qu. Median Mean 3rd Qu. Max.
5.730 8.838 10.910 11.530 14.420 19.400
desvio-padrão: 3.715144
[1] "Comportamento de salários para Ensino Superior"
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.53 13.65 16.74 16.47 18.38 23.30
desvio-padrão: 4.502438
Resumindo
nível
fundamental médio superior
mínimo
4,00
5,73 10,53
Q1
6,01
8,84 13,65
Q2
7,12
10,91 16,74
Q3
9,16
14,42 18,38
máximo
13,85
19,40 23,30
média
7,84
11,53 16,47
desvio padrão 2,96
3,72 4,50
Percebe-se claramente que as medidas de posição
crescem conforme aumenta o nível de instrução.
Gráfico de salário versus nível
de instrução
Quando se dispõe de um par de variáveis, para o
qual uma é qualitativa e outra é quantitativa, é
comum representar o comportamento conjunto
delas usando-se boxplots das distribuições das
variáveis quantitativas, segundo as respostas da
variável qualitativa.
No R podemos usar a função já conhecida plot
indicando primeiro o vetor que contém a variável
qualitativa.
Gráfico de salário versus nível
de instrução (1)
plot(dados$instrucao,dados$sal,main="Box-plots de salário segundo o nível de instrução")
Comportamento dos salários sem
discriminar por nível de instrução (todos)
summary(dadosord$sal)
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.000 7.553 10.160 11.120 14.060 23.300
sd(dados$sal)
[1] 4.587458
nível
mínimo
Q1
Q2
Q3
máximo
média
desvio padrão
todos
4,00
7,55
10,16
14,06
23,30
11,12
4,59
fundamental
4,00
6,01
7,12
9,16
13,85
7,84
2,96
médio
5,73
8,84
10,91
14,42
19,40
11,53
3,72
superior
10,53
13,65
16,74
18,38
23,30
16,47
4,50
Ver tabela 2
boxplot(dados$sal,dadosord$sal[1:12],dadosord$sal[13:30],
dadosord$sal[31:36],names=c("Todos","F","M","S"))
Comentário
É
possível perceber, a partir destes dados
e gráficos, uma dependência entre salário
e nível de instrução:
o salário tende a ser maior conforme
é maior a escolaridade do empregado.
Exemplo 2: salário versus
região de procedência
Vamos
agora analisar o comportamento
dos salários dentro de cada região de
procedência, ou seja, investigar o
comportamento conjunto das variáveis
cujos nomes na base de dados são sal e
rp.
Para facilitar, vamos primeiro ordenar os
dados numa nova base (dadosrp) pela
variável rp.
Ordenando por Região de
Procedência
indice=order(dados$rp)
dadosrp=dados[indice,]
table(dados$rp)
capital interior outra
11
12
13
Logo, em dadosrp as observações de 1 a 11 são de
empregados cuja procedência é a capital, de 12 a 23
é o interior e de 24 a 36 são outras regiões.
Medidas resumo por região de
procedência
sink(“a:\\relatoriorp.txt”)
#abre arquivo que conterá os resultados
“Comportamento de salários para Capital”
summary(dadosrp$sal[1:11])
‘’Desvio-padrão:’’
sd(dadosrp$sal[1:11])
“Comportamento de salários para Interior”
summary(dadosrp$sal[12:23])
‘’Desvio-padrão:’’
sd(dadosrp$sal[12:23])
“Comportamento de salários para Outras”
summary(dadosrp$sal[24:36])
‘’Desvio-padrão:’’
sd(dadosrp$sal[24:36])
sink() # fecha arquivo
Lista de comandos
source(“http://www.im.ufrj.br/~flavia/aed06/rpsal.txt”)
O
conteúdo será gravado no arquivo
relatoriorp.txt no disquete no drive A
Se você preferir, edite o arquivo rpsal.txt e
na primeira linha altere o endereço e/ou o
nome do arquivo que conterá os
resultados.
[1] "Comportamento de salários para Capital"
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.56 7.49 9.77 11.46 16.63 19.40
desvio-padrão: 5.476653
[1] "Comportamento de salários para Interior"
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.000 7.805 10.650 11.550 14.700 23.300
desvio-padrão: 5.296055
[1] "Comportamento de salários para Outras"
Min. 1st Qu. Median Mean 3rd Qu. Max.
5.73 8.74 9.80 10.45 12.79 16.22
desvio-padrão: 3.145453
Resumindo: salário versus região
de procedência
região
todos
Capital
Interior
Outros
mínimo
4,00
4,56
4,00
5,73
Q1
7,55
7,49
7,81
8,74
Q2
10,16
9,77
10,65
9,80
Q3
14,06
16,63
14,70
12,79
máximo
23,30
19,40
23,30
16,22
média
11,12
11,46
11,55
10,45
desvio-padrão
4,59
5,48
5,30
3,14
Volta
Gráfico de salário versus região
de procedência
plot(dados$rp,dados$sal,main="Box-plots de salário
segundo a região de procedência")
Comportamento dos salários sem
discriminar por nível de instrução (todos)
boxplot(dados$sal,dadosrp$sal[1:11],dadosrp$sal[12:23],
dadosrp$sal[24:36],names=c("Todos",”Capital",”Interior”,
”Outras"))
Comentário
É
possível perceber, a partir destes dados
e gráficos que não há uma relação bem
definida entre salário e região de
procedência.
Os salários parecem estar mais
relacionados com o nível de instrução do
que com a região de procedência.
Problema
Como
quantificar a dependência entre
estas variáveis?
No caso de duas variáveis quantitativas
usa-se a correlação.
No caso de duas variáveis qualitativas
usa-se o qui-quadrado.
O que usar no caso de uma variável
qualitativa e uma quantitiativa?
Medida de dependência: uma variável
qualitativa e uma quantitativa
Vamos
usar as variâncias dentro de cada
categoria de resposta da variável
qualitativa e a variância global, para definir
uma medida de associação entre uma
variável qualitativa e uma quantitativa.
Medida de dependência: uma variável
qualitativa e uma quantitativa (1)
Se
a variância dentro de cada categoria
de resposta for pequena e menor do que a
global, significa que a variável qualitativa
melhora a capacidade de previsão da
variável quantitativa e, portanto, existe
uma relação entre as duas variáveis.
Ver tabela 1
Instrução versus salário
Parece haver uma melhora na capacidade
de previsão de salário, segundo o nível de
instrução.
Região de procedência versus salário
Não parece haver melhora na capacidade
de previsão de salário, segundo a região
de procedência.
Medida de dependência: uma variável
qualitativa e uma quantitativa (2)
Observe
que para as variáveis salário e
instrução, as variâncias dentro de cada
nível são menores do que a variância
global:
var(dados$sal) # variância global de salários
21.04477
var(dadosord$sal[1:12]) #var. de salários para Ens. Fund.
8.740679
var(dadosord$sal[13:30]) #var. de salários para Ens. Médio
13.80230
var(dadosord$sal[31:36]) #var. de salários para Ens. Sup.
20.27195
Medida de dependência: uma variável
qualitativa e uma quantitativa (3)
Para
as variáveis sal e rp, vemos que as
variâncias dentro de cada região de
procedência não são menores do que a
global:
var(dados$sal) # variância global de salários
21.04477
var(dadosrp$sal[1:11]) #var. de salários para capital
29.99373
var(dadosrp$sal[12:23]) #var. de salários para interior
28.0482
var(dadosrp$sal[24:36]) #var. de salários para outra
9.893877
Medida de dependência: uma variável
qualitativa e uma quantitativa (4)
Utiliza-se
a média das variâncias, porém
ponderada pelo número de observações
em cada categoria, ou seja,
k
n var (S )
i
Var ( S )
i
i 1
k
ni
1
n
k
n var (S )
i
i
i 1
i 1
Essa variância média será comparada à variância global.
Medida de dependência: uma variável
qualitativa e uma quantitativa (5)
k
n var (S )
i
Var ( S )
i
i 1
k
ni
i 1
=n (total de observações.
número de categorias
de resposta da variável
qualitativa
número de observações
na i-ésima categoria
de resposta
variância dentro da
i-ésima categoria de
resposta, i=1,...,k.
Nos dois exemplos trabalhados k foi igual a 3:
instrução (F,M,S) e região de procedência
(capital,interior,outra).
Variância dentro de cada grupo
Se xij representa o salário do j-ésimo indivíduo da iésima categoria de instrução, i=1,2,3 e j=1,...,ni com ni
representando o total de indivíduos com escolaridade de
nível i, a variância dentro do i-ésimo nível de scolaridade
Vari(S) é dada por
n
1
Vari ( S )
ni
com
1
xi
ni
ni
j 1
xij
i
( xij xi ) 2
j 1
representando a média
de salário para o
nível de escolaridade i.
Continuação
Vari ( S )
ni
k
1
1
1
2
Var ( S )
ni
( xij xi )
n i 1 j 1 ni
n
k
ni
( x
ij
xi )
i 1 j 1
Fórmula para o cálculo de
Var(S )
2
Variância Global
1
Var ( S )
n
k
ni
( xij x ) 2
i 1 j 1
k
n
n
é o número total de observações
i
i 1
1
x
n
k
ni
x
ij
i 1 j 1
representa a média global.
Medida de dependência: uma variável
qualitativa e uma quantitativa (5)
Var(S ) Var(S )
com Var(S) representando a variância global e
Var(S )
representando a média ponderada das
variâncias dentro de cada categoria da
variável qualitativa.
1
Var ( S )
n
k
ni
( x
ij
x)
2
i 1 j 1
k ni
k ni
i 1 j 1
i 1 j 1
2
(
x
x
)
( xij
ij
k ni
k ni
1
Var ( S )
n
k
ni
( xij xi ) 2
i 1 j 1
soma e subtrai xi
xi xi x ) 2
k ni
( xij xi ) ( xi x ) 2 ( xi x )( xij xi )
i 1 j 1
2
i 1 j 1
2
i 1 j 1
é igual a zero
k
depende de j
ni não
i 1 j 1
( xi x ) ( xij xi )
ni
k
( x x ) ( x
i
i 1
ij
xi ) 0
j 1
0
soma dos desvios da média em cada
grupo.
k
ni
( x
ij
k
x)
i 1 j 1
2
n (x x)
i
k
2
i
i 1
variação total
var iação devido aos grupos
ni
( x
ij
xi )
i 1 j 1
variação residual
Portanto,
k
1
2
Var ( S )
ni ( xi x ) Var ( S )
n i 1
tal que
2
0
Var(S ) Var(S )
Medida de dependência: uma variável
qualitativa e uma quantitativa (6)
O grau de associação entre as duas
variáveis é definido como o ganho
relativo na variância, obtido pela
introdução da variável qualitativa.
A medida é baseada na decomposição de
somas de quadrados vista anteriormente.
variação devida aos grupos
variação residual
1
variação total
variação total
Medida de dependência: uma variável
qualitativa e uma quantitativa (7)
variação devida aos grupos
Var ( S )
Var ( S ) Var ( S )
2
1
R
Var ( S )
Var ( S )
Se a média das variâncias for muito parecida com a variância
global,
Var(S ) Var(S )
o ganho relativo na variância será pequeno.
Já se a média das variâncias for bem menor do que a variância global,
o ganho relativo na variância será grande.
Medida de dependência: uma variável
qualitativa e uma quantitativa (7)
Observe que 0R2 1.
O símbolo R2 é usual em análise de variância
e regressão, tópicos que vão ser abordados
nas disciplinas Análise de Regressão e
Planejamento de Experimentos.
Var ( S ) Var ( S )
Var ( S )
R
1
Var ( S )
Var ( S )
2
Quanto mais próximo de 1 for o valor de R2, maior será
a associação.
Cálculo de R2
Calcule o R2 para o par salário e instrução.
s=35*var(dados$sal)/36 #variância global de salários com denominador n
s1=11*var(dadosord$sal[1:12])/12 #var. sal. Ens. Fund.
s2=17*var(dadosord$sal[13:30])/18 #var. sal. Ens. Médio
s3=5*var(dadosord$sal[31:36])/6 #var.sal. Ens. Superior
sbarra=(12*s1+18*s2+6*s3)/36 #média pond. variâncias
R2=(s-sbarra)/s #cálculo de R2
R2 0.4133
Dizemos que 41,33% da variação total
do salário é explicada pela variável
instrução.
Tabela para o cálculo de R2
Nível
F
soma simples
soma de quadrados
simples
M
94.04
S
207.51
833.11 2626.88
ni
média
soma de quadrados
corrigida pela média
total
98.85
400.40
1729.91 5189.90
12
18
6
36
7.84
11.53
16.48
11.12
96.15
234.64
101.36
736.57
432.15
Variação residual
Variação total
Cálculo de R2 (continuação)
432,15 304,42
R 1
0,4133
736,57 736,57
2
Cálculo de R2
Calcule o R2 para o par salário e região de
procedência.
s=35*var(dados$sal)/36 #variância global de salários com denominador n
s1=10*var(dadosrp$sal[1:11])/11#capital
s2=11*var(dadosrp$sal[12:23])/12#interior
s3=12*var(dadosrp$sal[24:36])/13#outra
sbarra=(11*s1+12*s2+13*s3)/36
R2=(s-sbarra)/s
R2 0.0127
Dizemos que apenas 1,27%
da variabilidade dos salários
é explicada pela região de procedência.
Tabela para o cálculo de R2
Região
soma simples
soma de quadrados simples
ni
média
soma de quadrados
corrigida
capital
interior
outra
total
126.01
138.60
135.79
400.40
1743.44
1909.36
1537.11
5189.90
11
12
13
36
11.46
11.55
10.45
11.12
299.94
308.53
118.73
736.57
727.19
Cálculo de R2 (continuação)
727,19
9,37
R 1
0,0127
736,57 736,57
2
Observação
dos valores de R2 em
cada exemplo confirma comentário
anterior de que há uma relação entre
salário e instrução e, que entre
salário e região de procedência, não
há relação.
A comparação
Usando funções do R para
calcular o R2
No R, o comando aov(dados$sal~dados$instrucao),
gerará a seguinte tabela:
Terms:
dados$instrucao Residuals
Sum of Squares
304.4206
432.1463
Deg. of Freedom
2
33
é a variação devido aos grupos – numerador de R2
304 .4206
R
0.4133
304
432.1463
.4206
2
Logo,
variação total
é a variação
residual
Salário versus região de
procedência
aov(dados$sal~dados$rp)
Terms:
dados$rp Residuals
Sum of Squares 9.3728 727.1940
Deg. of Freedom
2
33
Logo,
9.3728
R
0.0127
9.3728 727 .1940
2
Revendo as fórmulas
Decomposição da variação total – soma de
quadrados total - SQ
k ni
k
k ni
( xij x ) ni ( xi x ) ( xij xi )
i 1 j 1
variação total - SQTot
2
i 1
2
2
i 1 j 1
variação devida
aos grupos –
SQExp
variação residual - SQRes
ni
k
R
2
k
( xij x ) 2
i 1 j 1
ni
( xij xi ) 2
i 1 j 1
k
ni
( xij x ) 2
i 1 j 1
k
R
2
ni ( xi x ) 2
i 1
k ni
( xij x ) 2
variação devido aos grupos
variação total
i 1 j 1
k
ni
R 1
2
i 1 j 1
k ni
( xij xi ) 2
i 1 j 1
( xij x ) 2
variação residual
1
variação total
Exercício 1
Calcule o grau de associação entre as variáveis estado
civil e idade (em anos completos) nos dados da
companhia MB.
> indice=order(dados$ecivil)
Sugestão:
> dadosec=dados[indice,]
> table(dados$ecivil)
casado solteiro
20
16
> s=35*var(dados$idadea)/36
> s1=19*var(dadosec$idadea[1:20])/20
> s2=15*var(dadosec$idadea[21:36])/16
> sbarra=(20*s1+16*s2)/36
> R2=(s-sbarra)/s
> R2
[1] 0.0090952
R.: O estado civil explica apenas 0,9% da variabilidade total da idade.
Exercício 1 (cont.)
Alternativamente,
aov(dados$idadea~dados$sal)
Terms:
dados$ecivil Residuals
Sum of Squares
14.45 1574.30
Deg. of Freedom
1
34
R2=14.45/(1574.3+14.45)
> R2
[1] 0.0090952
Exercício 2
Voltando
aos dados da pesquisa de
telemarketing (telemark.TXT), investigue
possíveis dependências entre os
seguintes pares de variáveis:
cia e uso
renda e uso
instrucao e uso
idade e uso.
aov(tel$uso~tel$cia)
Call:
aov(formula = tel$uso ~ tel$cia)
Terms:
tel$cia Residuals
Sum of Squares 17905.1 584990.0
Deg. of Freedom
1
998
R2=17905.1/(17905.1+584990)
> R2
[1] 0.02969853
R.: A Companhia explica apenas cerca de 3% da variabilidade
total da variável uso.
Renda versus uso
Renda versus uso
Call:
aov(formula = tel$uso ~ tel$renda)
Terms:
tel$renda Residuals
Sum of Squares 19314.2 387447.2
Deg. of Freedom
6
778
> R2=19314.2/(19314.2+387447.2)
> R2
[1] 0.04748287
R.: A faixa de renda explica apenas cerca de 4,7% da
variabilidade total da variável uso.
Instrução e uso
Instrução e uso
> aov(tel$uso~tel$instrucao)
Call:
aov(formula = tel$uso ~ tel$instrucao)
Terms:
tel$instrucao Residuals
Sum of Squares
25333.6 547578.7
Deg. of Freedom
5
959
> R2=25333.6/(25333.6+547578.7)
> R2
[1] 0.04421898
R.: A escolaridade explica apenas cerca de 4,4% da
variabilidade total da variável uso.
Idade e uso
Idade e uso
Call:
aov(formula = tel$uso ~ tel$idade)
Terms:
tel$idade Residuals
Sum of Squares 18638.8 559852.2
Deg. of Freedom
5
961
R2=18638.8/(18638.8+559852.2)
> R2
[1] 0.03221969
R.: A idade explica apenas cerca de 3,2% da variabilidade
total da variável uso.
Conclusão
Pelas
análises feitas, não percebe-se
nenhuma dependência entre a variável
intensidade de uso do telefone e as
variáveis cia, renda, idade e escolaridade.
Funções do R usadas na aula de hoje:
read.table
var
order
plot
sink
boxplot
summary
aov
sd
(analysis of
variance)