Skip to content

Commit

Permalink
incluindo material aula 4
Browse files Browse the repository at this point in the history
  • Loading branch information
azeloc committed Sep 17, 2024
1 parent 5164f04 commit cbb18ae
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 162 deletions.
129 changes: 73 additions & 56 deletions exemplos_de_aula/5.intervalo_de_confianca.R
Original file line number Diff line number Diff line change
@@ -1,84 +1,101 @@
library(infer)
library(tidyverse)

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

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

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

# get the confidence interval---note that the
# point estimate is required here
ci <- get_confidence_interval(
sampling_dist,
level = .95,
point_estimate = sample_mean
)
hist(idade_mulheres)

sqrt(sample_mean*(1-sample_mean))/sqrt(2079)
media_amostral <- mean(idade_mulheres)
desvio_padrao_amostral <- sd(idade_mulheres)

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

# distribuição t ----------------------------------------------------------
media_amostral + 2*erro_media_amostral
media_amostral - 2*erro_media_amostral

library(infer)
# intervalo de confiança no infer

sample_mean <- dados %>%
specify(response = idade1) %>%
calculate(stat = "mean")

# define a sampling distribution
sampling_dist <- dados %>%
specify(response = idade1) %>%
sampling_dist <- dados |>
filter(sexo == "Feminino") |>
specify(response = idade1) |>
assume("t")
# aplique o teorema central do limite
# trocando desvio padrao populacional por
# desvio padrao amostral (que dá t)

sampling_dist |>
visualise()

media_amostral <- dados |>
filter(sexo == "Feminino") |>
specify(response = idade1) |>
calculate(stat = "mean")

# get the confidence interval---note that the
# point estimate is required here
ci <- get_confidence_interval(
sampling_dist,
level = .95,
point_estimate = sample_mean
)
level = .99,
point_estimate = media_amostral)

sampling_dist |>
visualise() +
shade_confidence_interval(ci)

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

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

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

# define a sampling distribution
sampling_dist <- dados %>%
sample_n(5) |>
specify(response = idade1) %>%
assume("t")
# estimar proporções é um caso particular de estimar médias:
#exemplo:
quem_gosta_de_sorvete <- c(1, 1, 0, 1, 0)

mean(quem_gosta_de_sorvete)*100

(3/5)*100

sqrt(sum((quem_gosta_de_sorvete-mean(quem_gosta_de_sorvete))^2/5))

prop <- mean(quem_gosta_de_sorvete)

sqrt(prop*(1-prop))

######

# intervalo para proporções

sampling_dist <- dados |>
filter(sexo == "Feminino") |>
specify(response = p32c, success = "Sim") |>
assume("z")

prop_amostral <- dados |>
filter(sexo == "Feminino") |>
specify(response = p32c, success = "Sim") |>
calculate(stat = "prop")

sqrt(.27*(1-.27))/sqrt(1089)

# get the confidence interval---note that the
# point estimate is required here
ci <- get_confidence_interval(
sampling_dist,
level = .95,
point_estimate = sample_mean
)
level = .99,
point_estimate = prop_amostral)

sampling_dist |>
visualise() +
Expand Down
119 changes: 13 additions & 106 deletions exemplos_de_aula/7.testes_de_proporcao.R
Original file line number Diff line number Diff line change
@@ -1,121 +1,28 @@
# Teste de proporção no R -------------------------------------------------

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

prop.test(
x = 14040,
n = 180000,
p = 0.077,
alternative = "two.sided")

prop.test(
x = 14040,
n = 180000,
p = 0.077,
alternative = "greater")

# Área da normal no R -----------------------------------------------------

?pnorm

1-pnorm(
0.078,
0.077,
sqrt(0.077*(1-0.077))/sqrt(180000)
)

# Ler dados ---------------------------------------------------------------

library(tidyverse)

dados <- readxl::read_excel("script/BD_CIS0684.xlsx")

p32c_mulheres <- dados |>
filter(sexo == "Feminino") |>
count(p32c)

prop.test(
x = 294,
n = 1089,
p = 0.22
)

prop.test(
x = p32c_mulheres$n[2],
n = sum(p32c_mulheres$n),
p = 0.26
)

p32c_homens <- dados |>
filter(sexo == "Masculino") |>
count(p32c)

prop.test(
x = p32c_homens$n[2],
n = sum(p32c_homens$n),
p = 0.26
)

# pergunta do helder, porque testamos a segunda categoria?
# porque colocamos "[2]"?

# porque queremos testar a probabilidade de "sim"

# daria pra testar a probabilidade de "não" também:

prop.test(
x = p32c_homens$n[1],
n = sum(p32c_homens$n),
p = 0.74
)

# cálculo correto
library(survey)
#
dclus1<-svydesign(id=~nquest, weights=~PESO, data=dados)

dclus_mulheres <- svydesign(
id=~nquest,
weights=~PESO,
data=filter(dados, sexo == "Feminino")
)

tabela_contagem <- svytable(~p32c, dclus_mulheres)

prop.test(tabela_contagem, p = 0.74)
# o proptest aceita tabelas de survei se precisar!

# Tidy test ---------------------------------------------------------------

library(infer)
# tenho por hipotese que 30% das mulheres deveriam ter respondido
# "sim" no ultimo grafico

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

# pra gente não precisar fazer contagem na mão

modelo <- dados |>
dados_brutos <- dados |>
filter(sexo == "Feminino") |>
specify(response = p32c, success = "Sim")

estatistica <- modelo |>
hypothesize(null = "point", p = 0.3) |>
sampling_dist <- dados |>
filter(sexo == "Feminino") |>
specify(response = p32c, success = "Sim") |>
assume("z")

estatistica_do_teste <- dados_brutos |>
hypothesise(null = "point", p = 0.30) |>
calculate(stat = "z")

grafico_ggplot <- modelo |>
assume("z") |>
sampling_dist |>
visualise() +
shade_p_value(obs_stat = estatistica, direction = "both")

grafico_ggplot +
labs(caption = "valor-p calculado de 3,32%") +
theme_bw() +
labs(x = "Valor da estatística do teste", y = "",
title = "Distribuição amostral teórica")

?infer::prop_test
shade_p_value(estatistica_do_teste, direction = "left")
Binary file added slides/apresentacao_tcl_amostragem.pptx
Binary file not shown.

0 comments on commit cbb18ae

Please sign in to comment.