Princípios e técnicas de Análise estatística experimental

Alunos: José Marcus C. Marinho e Josemario Junior

Teste de Hipóteses para duas amostras

Demonstraremos alguns exemplos do processo de análise para comparação de duas amostras populacionais

Primeiro vamos importar algumas funcionalidades extras

1º) Riqueza da OPEC

Queremos saber se os membros da OPEC tem nível médio de riqueza diferente dos não membros
H0: Os Países membros da OPEC tem a mesma média de riqueza que os não membros.
H1: Os Países membros da OPEC tem nível médio de riqueza diferente dos não membros.

Escolha do teste

Para responder esta questão nós vamos utilizar o teste t-student para duas populações, tendo em vista que este é o teste mais indicado. No entanto, precisamos que as duas variáveis sejam normalmente distribuídas em ambas as populações.

Importação dos dados

dt = read.csv("http://rfs.kvasaheim.com/data/gdp.csv")
attach(dt)

Teste de aderência

Vamos utilizar o teste de Shapiro-Wilk para verificar a normalidade dos dados, bem como plotar o gráfico.

shapiroTest(gdpcap~OPEC)
## $Title
## [1] "Shapiro-Wilk Test"
## 
## $adjustment
## [1] "Bonferroni (2)"
## 
## $results
##        Level      p.value
## 1     Member 1.043307e-03
## 2 Non-Member 2.541959e-13

De acordo com o teste de Shapiro-Wilk, nenhuma população é Normal, p-valor < 0.05. Por causa disso, nós vamos realizar o teste de hipóteses usando o teste de Mann-Whitney.

Gráfico para identificar normalidade dos Membros da OPEC

membros <- dt[(OPEC == "Member"),]
attach(membros)
## The following objects are masked from dt:
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
qqnorm(gdpcap)
qqline(gdpcap)

detach(membros)

Gráfico para identificar a normalidade dos não-Membros da OPEC

naomem <- dt[(OPEC == "Non-Member"),]
attach(naomem)
## The following objects are masked from dt:
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
qqnorm(gdpcap)
qqline(gdpcap)

detach(naomem)

Teste de Mann-Whitney

attach(dt)
## The following objects are masked from dt (pos = 3):
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
wilcox.test(gdpcap~OPEC, conf.int = TRUE)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  gdpcap by OPEC
## W = 1321, p-value = 0.06619
## alternative hypothesis: true location shift is not equal to 0
## 95 percent confidence interval:
##   -500 11700
## sample estimates:
## difference in location 
##               5134.789

De acordo com o teste de Mann-Whitney, não há evidência significativa de que a filiação à OPEP esteja associada a níveis médios de riqueza mais altos ou mais baixos. Portanto, não rejeitamos a hipótese nula.

boxplot(gdpcap~OPEC, ylab = "GDP per Capita", xlab = "OPEC Membership")

### 2º) Corrupção na OPEC
Queremos saber se os membros da OPEC tem nível médio de corrrupção que os países não membros.
H0: Os membros e não membros da OPEC tem os mesmos níveis médios de corrupção.
H1: Países membros da OPEC tem níveis médios de corrupção diferentes dos não membros.

Escolha do teste

Para responder essa questão, vamos utilizar o t-test tendo em vista que é o mais adequado. No entanto, precisamos testar a normalidade dos dados

Teste de aderência

Vamos utilizar o teste de Shapiro-Wilk para verificar a normalidade dos dados, bem como plotar o gráfico.

shapiroTest(corruption~OPEC)
## $Title
## [1] "Shapiro-Wilk Test"
## 
## $adjustment
## [1] "Bonferroni (2)"
## 
## $results
##        Level      p.value
## 1     Member 2.778506e-02
## 2 Non-Member 1.309305e-09

De acordo com o teste de Shapiro-Wilk, nenhuma população é normal. O p-value foi menor que o alpha de 5%, rejeitamos a hipótese nula que é a normalidade dos dados. Diante disso, nós vamos utilizar o Mann-Whitney test.

Gráfico para identificar a normalidade

qqnorm(corruption)
qqline(corruption)

Teste de Mann-Whitney

wilcox.test(corruption~OPEC, confint=TRUE)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  corruption by OPEC
## W = 1309, p-value = 0.07699
## alternative hypothesis: true location shift is not equal to 0

De acordo com o teste de Mann-Whitney, não há evidência significativa de que a filiação à OPEC esteja associada a níveis médios de corrupção mais altos ou mais baixos, portanto não rejeitamos a hipótese nula.

Boxplot

boxplot(corruption~OPEC, ylab = "Corruption Level", xlab = "OPEC Membership")

3º) Democracia

Desejamos investigar se os membros da OPEC tem um menor nível de democracia do que os não membros.
H0: Países membros e não membros da OPEC tem os mesmos níveis médios de democracia.
H1: Países membros da OPEC tem um menor nível médio de democracia que os não membros.
#### Escolha do teste

Para responder essa questão, vamos utilizar o t-test tendo em vista que é o mais adequado. No entanto, precisamos testar a normalidade dos dados

Teste de aderência

shapiroTest(democracy~OPEC)
## $Title
## [1] "Shapiro-Wilk Test"
## 
## $adjustment
## [1] "Bonferroni (2)"
## 
## $results
##        Level      p.value
## 1     Member 1.881502e-01
## 2 Non-Member 1.005925e-12

De acordo com o teste de Shapiro-Wilk, a população não membro da OPEC não tem distribuição normal. Por isso, achamos mais adequado usar o teste de Mann-Whitney.

Gráfico para identificar a normalidade

qqnorm(democracy)
qqline(democracy)

Teste de Mann-Whitney

Como argumentos do teste, informamos o campo democracyseparado por OPEC coluna que classifica membros e não membros, e a hipótese alternativa less.

wilcox.test(democracy~OPEC, alternative = "less", conf.int=TRUE)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  democracy by OPEC
## W = 379.5, p-value = 0.0002253
## alternative hypothesis: true location shift is less than 0
## 95 percent confidence interval:
##       -Inf -3.999991
## sample estimates:
## difference in location 
##              -6.999977

De acordo com o teste de Mann-Whitney, há evidências significativas de que a adesão à OPEP está associada a níveis médios de democracia mais baixos. Na verdade, estamos 95% confiantes de que a diferença média é de pelo menos 4 pontos.
#### Boxplot

boxplot(democracy~OPEC, ylab="Democracy Level", xlab="OPEC Membership")

detach(dt)

4º) Democracia Ocidental

Gostariamos de determinar se os estados ocidentais têm um nível de democracia MAIOR do que os estados não ocidentais.
H0: Os níveis médios de democracia são iguais entre os estados ocidentais e não ocidentais.
H1: Os estados ocidentais tem um nível médio de democracia maior do que os não ocidentais.

Escolha do teste:

Para responder essa questão, vamos utilizar o t-test tendo em vista que é o mais adequado. No entanto, precisamos testar a normalidade dos dados.

Teste de aderência:

shapiroTest(democracy~(region=="Western"))
## $Title
## [1] "Shapiro-Wilk Test"
## 
## $adjustment
## [1] "Bonferroni (2)"
## 
## $results
##   Level      p.value
## 1 FALSE 7.828212e-08
## 2  TRUE 2.615694e-11

De acordo com o teste de Shapiro, p-value < 0.05, tanto a população ocidental quanto a não ocidental, não seguem uma distribuição normal. Devido a isto, vamos usar o teste de hipóteses Mann-Whitney.

Gráfico para identificar a normalidade dos Países Ocidentais:

western <- dt[(region == "Western"),]
attach(western)
## The following objects are masked from dt:
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
qqnorm(democracy)
qqline(democracy)

detach(western)

Gráfico para identificar a normalidade dos Países Não Ocidentais:

attach(dt)
## The following objects are masked from dt (pos = 3):
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
nwestern <- dt[!(region == "Western"),]
attach(nwestern)
## The following objects are masked from dt (pos = 3):
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
## The following objects are masked from dt (pos = 4):
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
qqnorm(democracy)
qqline(democracy)

detach(nwestern)
attach(dt)
## The following objects are masked from dt (pos = 3):
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state
## 
## The following objects are masked from dt (pos = 4):
## 
##     corruption, democracy, gdpcap, govt, hig, OPEC, region, scode2,
##     state

Teste de hipóteses

wilcox.test(democracy~(region=="Western"), alternative="less",conf.int=TRUE)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  democracy by region == "Western"
## W = 919, p-value = 4.457e-13
## alternative hypothesis: true location shift is less than 0
## 95 percent confidence interval:
##       -Inf -3.999958
## sample estimates:
## difference in location 
##              -4.999951

Boxplot

boxplot(democracy~(region=="Western"), ylab = "Nível de democracia", xlab = "Estados do Ocidente")

### BOOTSTRAP
A ideia do bootstrap é muito simples, por exemplo: Nós temos uma única amostra de n medições, mas podemos fazer a amostragem de muitas maneiras, desde que permita-se que alguns valores apareçam mais de uma vez e que outras amostras sejam deixadas de fora (ou seja, amostragem com substituição). Calculamos a média da amostra muitas vezes, uma para cada amostragem dos dados e, em seguida, obtemos o intervalo de confiança olhando para os valores máximos e mínimos extremos das médias estimadas usando uma função chamada quantil para extrair o intervalo que desejamos (por exemplo um intervalo de 95% é especificado usando c (0,0275, 0,975) para localizar os limites inferior e superior).

head(dt)
##   scode2       state        region democracy      govt       OPEC hig
## 1     af Afghanistan       Islamic       -10 Autocracy Non-Member 1.3
## 2     al     Albania       Western         7 Democracy Non-Member 3.2
## 3     dz     Algeria       Islamic         2  Anocracy     Member 2.8
## 4     ao      Angola        Africa        -2  Anocracy     Member 1.9
## 5     ar   Argentina Latin America         8 Democracy Non-Member 2.9
## 6     am     Armenia         Other         5  Anocracy Non-Member 2.7
##   corruption gdpcap
## 1        8.7    800
## 2        6.8   6300
## 3        7.2   7000
## 4        8.1   8900
## 5        7.1  13800
## 6        7.3   5900
# Primeiro vamos extrair uma amostra de 60 elementos da renda per capta. (Então vamos supor que só temos 60 observações) 
set.seed(3232)
rendapc <- dt[sample(1:179,30),9]
sort(rendapc)
##  [1]   800   900  1100  1600  1900  2300  2300  2400  2400  2600  2800  3200
## [13]  3800  4100  4400  8100  8200 10400 12900 13900 17200 18700 19400 21800
## [25] 23100 23900 25100 29800 36000 54100
rendapc
##  [1] 29800  2300 18700 23900 12900 54100 36000  8200  1100   900 23100  1600
## [13]   800  4400  2400  2600 17200  2400  1900 19400  3200 21800 10400  3800
## [25]  8100 25100  2800  2300 13900  4100

Devemos simular tamanhos de amostra (k) entre 5 e 30, e para cada tamanho de amostra devemos tomar 10.000 amostras independentes de nossos dados (o vetor chamado de valores), usando a função chamada amostra com substituição.

plot(c(0,30), c(0,30000), type = "p",xlab = "Tamanho da amostra", ylab = "Intervalo de confiança")
for(k in seq(5,30,3)){
  a <- numeric(10000)
  for (i in 1:10000) {
    a[i] <- mean(sample(rendapc,k,replace = T))
    
  }

points(c(k,k),quantile(a,c(0.25,0.975)),type = "b",pch=21,bg="red")
}
# Linha azul no gráfico do IC calculado a partir da normal
xv <- seq(5,30,3)
yv <- mean(rendapc)+1.96*sqrt(var(rendapc)/xv)
lines(xv,yv,col="blue")
yv <- mean(rendapc)-1.96*sqrt(var(rendapc)/xv)
lines(xv,yv,col="blue")

# Linha pontilhada do IC calculado t.student
yv <- mean(rendapc)-qt(.975,xv-1)*sqrt(var(rendapc)/xv)
lines(xv,yv,lty=2,col="green")
yv <- mean(rendapc)+qt(.975,xv-1)*sqrt(var(rendapc)/xv)
lines(xv,yv,lty=2,col="green")

Intervalo de Confiança do Bootstrap

quantile(a,c(0.025,0.975))
##      2.5%     97.5% 
##  7682.672 16813.966

Intervalo de confiança para uma amostra

media <- mean(rendapc)
desv <- sd(rendapc)
# Cálculo do intervalo de confiança
minimo <- media - 1.96*(desv/sqrt(60))
maximo <- media + 1.96*(desv/sqrt(60))
minimo
## [1] 8735.291
maximo
## [1] 15211.38

Para o intervalo superior, observamos que os intervalos bootstrap (linhas verticais e símbolos vermelhos) ficam entre o normal (a linha azul inferior) e a distribuição t de Student (a linha verde pontilhada maior). Para o intervalo inferior, no entanto, os intervalos de bootstrap são bastante diferentes.
Isso ocorre devido à distorção exibida por esses dados. Valores muito pequenos da resposta são substancialmente menos prováveis do que o previsto pelas distribuições simétricas normal (linha azul) ou t de Student (linha verde pontilhada).
Para intervalos de confiança de pequenas amostras usando a distribuição t de Student, o tamanho da amostra, n, entra na equação duas vezes: uma vez como denominador na fórmula para o erro padrão da média, e novamente como um determinante do quantil de t distribuição qt (0,975, n-1). É por isso que a diferença entre os intervalos de confiança normal e t de Student aumenta à medida que o tamanho da amostra diminui.