Skip to content

Commit cbb18ae

Browse files
committed
incluindo material aula 4
1 parent 5164f04 commit cbb18ae

File tree

3 files changed

+86
-162
lines changed

3 files changed

+86
-162
lines changed

exemplos_de_aula/5.intervalo_de_confianca.R

Lines changed: 73 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,101 @@
11
library(infer)
2+
library(tidyverse)
23

3-
sample_mean <- dados %>%
4-
specify(response = p32c, success = "Sim") %>%
5-
calculate(stat = "prop")
6-
# esse aqui ^ você consegue ler o código
7-
# ele diz o que tá fazendo
4+
dados <- readxl::read_excel("exemplos_de_aula//BD_CIS0684.xlsx")
85

9-
#mean(dados$p32c == "Sim")
10-
#sum(dados$p32c == "Sim")/2079
11-
# esse aqui vc tem que interpretar o código ^
6+
# vamos estimar a distribuição populacional da idade das mulheres.
7+
# "estimar distribuição" é chutar um histograma
8+
idade_mulheres <- dados |>
9+
filter(sexo == "Feminino") |>
10+
with(idade1)
1211

13-
# define a sampling distribution
14-
sampling_dist <- dados %>%
15-
specify(response = p32c, success = "Sim") %>%
16-
assume("z")
17-
# assume 'z' eu tô mandando o R entender
18-
# que pra tudo que seguir eu quero que seja
19-
# considerada uma distribuição teórica normal
12+
n_mulheres <-dados |>
13+
filter(sexo == "Feminino") |>
14+
nrow()
2015

21-
# get the confidence interval---note that the
22-
# point estimate is required here
23-
ci <- get_confidence_interval(
24-
sampling_dist,
25-
level = .95,
26-
point_estimate = sample_mean
27-
)
16+
hist(idade_mulheres)
2817

29-
sqrt(sample_mean*(1-sample_mean))/sqrt(2079)
18+
media_amostral <- mean(idade_mulheres)
19+
desvio_padrao_amostral <- sd(idade_mulheres)
3020

31-
sampling_dist |>
32-
visualise() +
33-
shade_confidence_interval(ci)
21+
# vou chutar o erro da distribuição amostral da média populacional
22+
erro_media_amostral <-desvio_padrao_amostral/sqrt(n_mulheres)
3423

35-
# distribuição t ----------------------------------------------------------
24+
media_amostral + 2*erro_media_amostral
25+
media_amostral - 2*erro_media_amostral
3626

37-
library(infer)
27+
# intervalo de confiança no infer
3828

39-
sample_mean <- dados %>%
40-
specify(response = idade1) %>%
41-
calculate(stat = "mean")
42-
43-
# define a sampling distribution
44-
sampling_dist <- dados %>%
45-
specify(response = idade1) %>%
29+
sampling_dist <- dados |>
30+
filter(sexo == "Feminino") |>
31+
specify(response = idade1) |>
4632
assume("t")
33+
# aplique o teorema central do limite
34+
# trocando desvio padrao populacional por
35+
# desvio padrao amostral (que dá t)
36+
37+
sampling_dist |>
38+
visualise()
39+
40+
media_amostral <- dados |>
41+
filter(sexo == "Feminino") |>
42+
specify(response = idade1) |>
43+
calculate(stat = "mean")
4744

48-
# get the confidence interval---note that the
49-
# point estimate is required here
5045
ci <- get_confidence_interval(
5146
sampling_dist,
52-
level = .95,
53-
point_estimate = sample_mean
54-
)
47+
level = .99,
48+
point_estimate = media_amostral)
5549

5650
sampling_dist |>
5751
visualise() +
5852
shade_confidence_interval(ci)
5953

60-
# distribuicao t amostra pequena ------------------------------------------
54+
# eu "roubei" pra fazer essa distribuição...
6155

62-
library(infer)
56+
# o "erro_media_amostral" tem um nome técnico que é "erro padrão"
57+
# eu "roubei" quando eu fiz o desenho ao lado, porque eu troquei
58+
# a média populacional pela amostral.
6359

64-
sample_mean <- dados %>%
65-
sample_n(5) |>
66-
specify(response = idade1) %>%
67-
calculate(stat = "mean")
60+
# mas existem resultados estatísticos que me garantem que
61+
# a distribuição X_barra / desvio_padrao_amostral é aproximadamente t com n-1
62+
# graus de liberdades. uma t com mais do que 30 graus de liberdade é aproximadamente
63+
# normal
6864

69-
# define a sampling distribution
70-
sampling_dist <- dados %>%
71-
sample_n(5) |>
72-
specify(response = idade1) %>%
73-
assume("t")
65+
# estimar proporções é um caso particular de estimar médias:
66+
#exemplo:
67+
quem_gosta_de_sorvete <- c(1, 1, 0, 1, 0)
68+
69+
mean(quem_gosta_de_sorvete)*100
70+
71+
(3/5)*100
72+
73+
sqrt(sum((quem_gosta_de_sorvete-mean(quem_gosta_de_sorvete))^2/5))
74+
75+
prop <- mean(quem_gosta_de_sorvete)
76+
77+
sqrt(prop*(1-prop))
78+
79+
######
80+
81+
# intervalo para proporções
82+
83+
sampling_dist <- dados |>
84+
filter(sexo == "Feminino") |>
85+
specify(response = p32c, success = "Sim") |>
86+
assume("z")
87+
88+
prop_amostral <- dados |>
89+
filter(sexo == "Feminino") |>
90+
specify(response = p32c, success = "Sim") |>
91+
calculate(stat = "prop")
92+
93+
sqrt(.27*(1-.27))/sqrt(1089)
7494

75-
# get the confidence interval---note that the
76-
# point estimate is required here
7795
ci <- get_confidence_interval(
7896
sampling_dist,
79-
level = .95,
80-
point_estimate = sample_mean
81-
)
97+
level = .99,
98+
point_estimate = prop_amostral)
8299

83100
sampling_dist |>
84101
visualise() +
Lines changed: 13 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,121 +1,28 @@
1-
# Teste de proporção no R -------------------------------------------------
21

3-
numero_desemprego_pnad_2024 = 0.078*180000
2+
# teste de hipotese sai de graça dos graficos de intervalo de conf --------
43

5-
prop.test(
6-
x = 14040,
7-
n = 180000,
8-
p = 0.077,
9-
alternative = "two.sided")
10-
11-
prop.test(
12-
x = 14040,
13-
n = 180000,
14-
p = 0.077,
15-
alternative = "greater")
16-
17-
# Área da normal no R -----------------------------------------------------
18-
19-
?pnorm
20-
21-
1-pnorm(
22-
0.078,
23-
0.077,
24-
sqrt(0.077*(1-0.077))/sqrt(180000)
25-
)
26-
27-
# Ler dados ---------------------------------------------------------------
28-
29-
library(tidyverse)
30-
31-
dados <- readxl::read_excel("script/BD_CIS0684.xlsx")
32-
33-
p32c_mulheres <- dados |>
34-
filter(sexo == "Feminino") |>
35-
count(p32c)
36-
37-
prop.test(
38-
x = 294,
39-
n = 1089,
40-
p = 0.22
41-
)
42-
43-
prop.test(
44-
x = p32c_mulheres$n[2],
45-
n = sum(p32c_mulheres$n),
46-
p = 0.26
47-
)
48-
49-
p32c_homens <- dados |>
50-
filter(sexo == "Masculino") |>
51-
count(p32c)
52-
53-
prop.test(
54-
x = p32c_homens$n[2],
55-
n = sum(p32c_homens$n),
56-
p = 0.26
57-
)
58-
59-
# pergunta do helder, porque testamos a segunda categoria?
60-
# porque colocamos "[2]"?
61-
62-
# porque queremos testar a probabilidade de "sim"
63-
64-
# daria pra testar a probabilidade de "não" também:
65-
66-
prop.test(
67-
x = p32c_homens$n[1],
68-
n = sum(p32c_homens$n),
69-
p = 0.74
70-
)
71-
72-
# cálculo correto
73-
library(survey)
74-
#
75-
dclus1<-svydesign(id=~nquest, weights=~PESO, data=dados)
76-
77-
dclus_mulheres <- svydesign(
78-
id=~nquest,
79-
weights=~PESO,
80-
data=filter(dados, sexo == "Feminino")
81-
)
82-
83-
tabela_contagem <- svytable(~p32c, dclus_mulheres)
84-
85-
prop.test(tabela_contagem, p = 0.74)
86-
# o proptest aceita tabelas de survei se precisar!
87-
88-
# Tidy test ---------------------------------------------------------------
89-
90-
library(infer)
4+
# tenho por hipotese que 30% das mulheres deveriam ter respondido
5+
# "sim" no ultimo grafico
916

927
dados |>
938
filter(
949
sexo == "Feminino"
9510
) |>
9611
prop_test(p32c ~ NULL, p = 0.3, success = "Sim")
97-
# essa função é alternativa ao prop.test padrão do R
98-
# que aceita tabelas diretamente como input
9912

100-
# pra gente não precisar fazer contagem na mão
101-
102-
modelo <- dados |>
13+
dados_brutos <- dados |>
10314
filter(sexo == "Feminino") |>
10415
specify(response = p32c, success = "Sim")
10516

106-
estatistica <- modelo |>
107-
hypothesize(null = "point", p = 0.3) |>
17+
sampling_dist <- dados |>
18+
filter(sexo == "Feminino") |>
19+
specify(response = p32c, success = "Sim") |>
20+
assume("z")
21+
22+
estatistica_do_teste <- dados_brutos |>
23+
hypothesise(null = "point", p = 0.30) |>
10824
calculate(stat = "z")
10925

110-
grafico_ggplot <- modelo |>
111-
assume("z") |>
26+
sampling_dist |>
11227
visualise() +
113-
shade_p_value(obs_stat = estatistica, direction = "both")
114-
115-
grafico_ggplot +
116-
labs(caption = "valor-p calculado de 3,32%") +
117-
theme_bw() +
118-
labs(x = "Valor da estatística do teste", y = "",
119-
title = "Distribuição amostral teórica")
120-
121-
?infer::prop_test
28+
shade_p_value(estatistica_do_teste, direction = "left")
1.45 MB
Binary file not shown.

0 commit comments

Comments
 (0)