1 Carregando pacotes

library(sciplot)
library(MASS)
library(TeachingDemos)
library(rcompanion)
library(tidyverse)
library(animation)

2 Conceitos chave

Parâmetro = são características da população

Estimador pontual = um único valor calculado de uma amostra que estima um dado parâmetro.

Estatística = são características da amostra.

3 Conceito de Intervalo de Confiança

O intervalo de confiança são intervalos de valores dentro dos quais espera-se que um dado parâmetro esteja, de acordo com um certo grau de confiança.

Geralmente, um IC tem a forma:

estimador ± valor crítico × desv padrão do estimador estimador ± margem de erro

Por exemplo:

média da amostra ± valor crítico × erro padrão

IC podem diferir dependendo de:

4 Ilustrando o conceito de 95% IC

#clicar na aba Plot
conf.int()

(48*100)/50
## [1] 96

4.1 Calculando o 95% IC a partir de uma população com a variância conhecida

Aqui vamos utilizar o exemplo deste site e utilizar a média como estimador pontual.

Primeiro, vamos utilizar um estimador pontual que nos dará informação sobre a tendencia central da distribuição da população. Aqui, vamos estimar a media como estimador pontual, que é amplamente utilizado.

?survey
head(survey)
##      Sex Wr.Hnd NW.Hnd W.Hnd    Fold Pulse    Clap Exer Smoke Height
## 1 Female   18.5   18.0 Right  R on L    92    Left Some Never 173.00
## 2   Male   19.5   20.5  Left  R on L   104    Left None Regul 177.80
## 3   Male   18.0   13.3 Right  L on R    87 Neither None Occas     NA
## 4   Male   18.8   18.9 Right  R on L    NA Neither None Never 160.00
## 5   Male   20.0   20.0 Right Neither    35   Right Some Never 165.00
## 6 Female   18.0   17.7 Right  L on R    64   Right Some Never 172.72
##        M.I    Age
## 1   Metric 18.250
## 2 Imperial 17.583
## 3     <NA> 16.917
## 4   Metric 20.333
## 5   Metric 23.667
## 6 Imperial 21.000
height.survey = survey$Height
height.survey
##   [1] 173.00 177.80     NA 160.00 165.00 172.72 182.88 157.00 175.00 167.00
##  [11] 156.20     NA 155.00 155.00     NA 156.00 157.00 182.88 190.50 177.00
##  [21] 190.50 180.34 180.34 184.00     NA     NA 172.72 175.26     NA 167.00
##  [31]     NA 180.00 166.40 180.00     NA 190.00 168.00 182.50 185.00 171.00
##  [41] 169.00 154.94 172.00 176.50 180.34 180.34 180.00 170.00 168.00 165.00
##  [51] 200.00 190.00 170.18 179.00 182.00 171.00 157.48     NA 177.80 175.26
##  [61] 187.00 167.64 178.00 170.00 164.00 183.00 172.00     NA 180.00     NA
##  [71] 170.00 176.00 171.00 167.64 165.00 170.00 165.00 165.10 165.10 185.42
##  [81]     NA 176.50     NA     NA 167.64 167.00 162.56 170.00 179.00     NA
##  [91] 183.00     NA 165.00 168.00 179.00     NA 190.00 166.50 165.00 175.26
## [101] 187.00 170.00 159.00 175.00 163.00 170.00 172.00     NA 180.00 180.34
## [111] 175.00 190.50 170.18 185.00 162.56 158.00 159.00 193.04 171.00 184.00
## [121]     NA 177.00 172.00 180.00 175.26 180.34 172.72 178.50 157.00 152.00
## [131] 187.96 178.00     NA 160.02 175.26 189.00 172.00 182.88 170.00 167.00
## [141] 175.00 165.00 172.72 180.00 172.00 185.00 187.96 185.42 165.00 164.00
## [151] 195.00 165.00 152.40 172.72 180.34 173.00     NA 167.64 187.96 187.00
## [161] 167.00 168.00 191.80 169.20 177.00 168.00 170.00 160.02 189.00 180.34
## [171] 168.00 182.88     NA 165.00 157.48 170.00 172.72 164.00     NA 162.56
## [181] 172.00 165.10 162.50 170.00 175.00 168.00 163.00 165.00 173.00 196.00
## [191] 179.10 180.00 176.00 160.02 157.48 165.00 170.18 154.94 170.00 164.00
## [201] 167.00 174.00     NA 160.00 179.10 168.00 153.50 160.00 165.00 171.50
## [211] 160.00 163.00     NA 165.00 168.90 170.00     NA 185.00 173.00 188.00
## [221] 171.00 167.64 162.56 150.00     NA     NA 170.18 185.00 167.00 185.00
## [231] 169.00 180.34 165.10 160.00 170.00 183.00 168.50
base::mean(height.survey, na.rm=TRUE)
## [1] 172.3809
var(height.survey, na.rm=TRUE)
## [1] 96.9738
sqrt(var(height.survey, na.rm=TRUE))
## [1] 9.847528
sd(height.survey, na.rm=TRUE)
## [1] 9.847528
height.response = na.omit(survey$Height)
n = length(height.response) 
sigma = 9.84       # population standard deviation
sem = sigma/sqrt(n); sem       # standard error of the mean 
## [1] 0.680647
E = qnorm(.975)*sem; E         # margin of error 
## [1] 1.334044
xbar = mean(height.response);xbar   # sample mean 
## [1] 172.3809
xbar + c(-E, E)
## [1] 171.0468 173.7149

Um outro jeito que fazer a mesma coisa:

z.test(height.response, sd=sigma)
## 
##  One Sample z-test
## 
## data:  height.response
## z = 253.26, n = 209.00000, Std. Dev. = 9.84000, Std. Dev. of the
## sample mean = 0.68065, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  171.0468 173.7149
## sample estimates:
## mean of height.response 
##                172.3809

Parabéns, vocês acabaram de conhecer o teste Z. Sala teste Z, teste Z sala, agora podem conversar entre si :)

4.2 Outro exemplo de como calcular o IC 95% conhecendo a média e desvio padrão de uma amostra:

a <- 5 #média da amostra
s <- 2 #desvio padrão
n <- 20 #tamanho da amostra

Inserindo essas informações na fórmula do Intervalo de confiança e assumindo uma distribuição normal, temos:

error <- qnorm(0.975)*s/sqrt(n)
left <- a-error
right <- a+error
left
## [1] 4.123477
right
## [1] 5.876523

Ou seja, temos 95% de certeza de que a nossa estimativa da média está entre 5.8765225 e 4.1234775.

exemplo anterior veio deste site

4.3 Calculando o 95% IC a partir de uma população com a variância desconhecida

O exemplo seguinte. Aqui vamos utilizar as duas caudas da distribuição t de Student, o que implicaria em tomar o 97.5º percentil de uma das caudas.

height.response = na.omit(survey$Height)
n = length(height.response) 
s = sd(height.response)        # sample standard deviation 
SE = s/sqrt(n); SE             # standard error estimate
## [1] 0.6811677
E = qt(.975, df=n-1)*SE; E     # margin of error 
## [1] 1.342878
xbar = mean(height.response)   # sample mean 
xbar + c(-E, E) 
## [1] 171.0380 173.7237

Uma maneira mais fácil de fazer a mesma coisa:

t.test(height.response) 
## 
##  One Sample t-test
## 
## data:  height.response
## t = 253.07, df = 208, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  171.0380 173.7237
## sample estimates:
## mean of x 
##  172.3809

Agora vocês já conhecem o teste t de Student para estimar o intervalo de confiança. O prazer foi todo dele :) . Em mais algumas aulas vamos utilizar o mesmo teste para comparar amostras de dois grupos.

Agora vamos explorar o conceito e as propriedades de Intervalos de Confiança utilizando a ferramenta interativa deste site.

Um ótimo e curto vídeo sobre intervalos de confiança. Recomendo para sedimentar o conceito.

exercícios sobre Intervalo de Confiança de 95%

5 Exemplo com dados reais

Número de passos dados em um dia por estudantes:

Input = ("
Student  Sex     Teacher  Steps  Rating
a        female  Catbus    8000   7
b        female  Catbus    9000  10
c        female  Catbus   10000   9
d        female  Catbus    7000   5
e        female  Catbus    6000   4
f        female  Catbus    8000   8
g        male    Catbus    7000   6
h        male    Catbus    5000   5
i        male    Catbus    9000  10
j        male    Catbus    7000   8
k        female  Satsuki   8000   7
l        female  Satsuki   9000   8
m        female  Satsuki   9000   8 
n        female  Satsuki   8000   9
o        male    Satsuki   6000   5
p        male    Satsuki   8000   9
q        male    Satsuki   7000   6
r        female  Totoro   10000  10
s        female  Totoro    9000  10
t        female  Totoro    8000   8
u        female  Totoro    8000   7
v        female  Totoro    6000   7 
w        male    Totoro    6000   8
x        male    Totoro    8000  10
y        male    Totoro    7000   7
z        male    Totoro    7000   7
")

Data = read.table(textConnection(Input),header=TRUE)
head(Data)
##   Student    Sex Teacher Steps Rating
## 1       a female  Catbus  8000      7
## 2       b female  Catbus  9000     10
## 3       c female  Catbus 10000      9
## 4       d female  Catbus  7000      5
## 5       e female  Catbus  6000      4
## 6       f female  Catbus  8000      8

Calculando a média de passos e o intervalo de confiança para cada sexo:

groupwiseMean(Steps~1, 
              data   = Data, 
              conf   = 0.95, 
              digits = 3)
##    .id  n Mean Conf.level Trad.lower Trad.upper
## 1 <NA> 26 7690       0.95       7170       8210

Plotando os dados:

  1. Boxplot
ggplot(Data, aes(y=Steps, x=Sex))+
       geom_point(aes(color=Sex))

ggplot(Data, aes(y=Steps, x=Sex)) + 
       stat_summary(fun.y = "median", colour = "red", size = 2, geom = "point")

ggplot(Data, aes(Sex, Steps)) +
       geom_boxplot(aes(fill=Sex)) +
       theme(legend.position = "none")

Mostrar o slide com a anatomia do boxplot.

O boxplot é uma excelente ferramenta de Análise Exploratória de Dados porque ele descreve a distribuição dos dados, mostrando a variabilidade, outliers, e permite verificar homogeneidade de variância ente grupos.

  1. Gráfico de linhas mostrando o IC
lineplot.CI(Sex, Steps, data = Data, xlab = "Sexos", ylab = "Número de passos")

Utilizando os conceitos de IC, vocês acreditam que existe uma diferença nos números de passos entre homens e mulheres?

6 Teste t de Student

t.test(Steps~Sex, data = Data, var.equal=TRUE)
## 
##  Two Sample t-test
## 
## data:  Steps by Sex
## t = 2.6018, df = 24, p-value = 0.01564
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##   248.0811 2151.9189
## sample estimates:
## mean in group female   mean in group male 
##                 8200                 7000
summary(lm(Steps~Sex, data = Data))
## 
## Call:
## lm(formula = Steps ~ Sex, data = Data)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##  -2200   -200      0    800   2000 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   8200.0      300.0  27.333   <2e-16 ***
## Sexmale      -1200.0      461.2  -2.602   0.0156 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1162 on 24 degrees of freedom
## Multiple R-squared:   0.22,  Adjusted R-squared:  0.1875 
## F-statistic: 6.769 on 1 and 24 DF,  p-value: 0.01564
anova(lm(Steps~Sex, data = Data))
## Analysis of Variance Table
## 
## Response: Steps
##           Df   Sum Sq Mean Sq F value  Pr(>F)  
## Sex        1  9138462 9138462  6.7692 0.01564 *
## Residuals 24 32400000 1350000                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1