library(sciplot)
library(MASS)
library(TeachingDemos)
library(rcompanion)
library(tidyverse)
library(animation)
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.
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:
O parâmetro de interesse, e.g., média da população, proporção da população, diferença nas médias das populações, etc
Desenho amostral: SRS, estratificado, experimentos
Nível de confiança, (1 - α)100%, e.g., 95%, 99%, 90%, 80%, correspondendo, respectivamente, a valores de α de 0.05, 0.01, 0.1, 0.2, etc…
#clicar na aba Plot
conf.int()
(48*100)/50
## [1] 96
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 :)
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
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%
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:
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.
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?
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