Métodos Computacionais para Estatística 2
Github com os arquivos
)
Lista 01
library(readxl)
library(magrittr)
library(readr)
library(haven)
library(stringr)
library(dplyr)Questão 1
(a)
(8/22)^(-3) + (gamma(4)/22)## [1] 21.0696
(b)
sqrt(25/102) + log10(33)## [1] 2.013588
(c)
(100/22)^(-1/4) + exp(-2/3) - 2/3## [1] 0.5316166
(d)
choose(10, 4) - factorial(7)## [1] -4830
(e)
beta(2, 3) + gamma(9) + abs(-5) - log(22)## [1] 40321.99
Questão 2
(a)
seq(1, 10)## [1] 1 2 3 4 5 6 7 8 9 10
(b)
seq(1, 100, 3)## [1] 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49
## [18] 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100
(c)
seq(0, 1000, 50)## [1] 0 50 100 150 200 250 300 350 400 450 500 550 600 650
## [15] 700 750 800 850 900 950 1000
(d)
rep(c(1, 22, 5, 3), c(6, 2, 2, 4))## [1] 1 1 1 1 1 1 22 22 5 5 3 3 3 3
(e)
rep(c(9, 10, 11, 12), each=2, times=3)## [1] 9 9 10 10 11 11 12 12 9 9 10 10 11 11 12 12 9 9 10 10 11 11 12
## [24] 12
Questão 3
A <- matrix(data = c(
rep(c(0,1),500),
1:1000,
rep(c(10,20,30,40,50), 200)
), ncol = 3)(a)
A[seq(1,1000,2), c(1,3)] %>% head()## [,1] [,2]
## [1,] 0 10
## [2,] 0 30
## [3,] 0 50
## [4,] 0 20
## [5,] 0 40
## [6,] 0 10
(b)
A[,1] <- rep(1:200, each=5)(c)
A[seq(0,1000,2),] <- 0Questão 4
base_Q4_1 <- tibble(
Nome = c('Joao','Maria','Ana','Fabia','Rodrigo','Renato','Luciana','Guilherme','Gabriel','Diogo'),
Idade = c(27,22,21,37,29,27,21,18,19,25),
Altura = c(1.83,1.53,1.79,1.58,1.65,1.70,1.51,1.66,1.72,1.83),
Genero = c("M","F","F","F","M","M","F","M","M","M"),
Estado_Civil = c("Solteiro","Solteiro","Casado","Solteiro","Casado","Solteiro","Solteiro","Solteiro","Casado","Casado"),
Bairro = c('Icarai','Inga','Botafogo','Lagoa','Boa Viagem','Leblon','Leblon','Inga','Icarai','Botafogo')
)
base_Q4_2 <- tibble(
nome = c('Joao','Maria','Ana','Fabia','Rodrigo','Renato','Gabriel','Diogo'),
peso = c(40,65,77,63,78,80,83,77)
)
base_Q4_3 <- tibble(
Nome = c('Joao','Maria','Ana','Fabia','Rodrigo','Renato','Gabriel','Diogo','Vicente','Fernando'),
opniao = c("Contra","Contra","A favor","Contra","A favor","Contra","A favor","A favor","A favor","A favor")
)
base_Q4_4 <- tibble(
bairro = c('Inga','Icarai','Boa Viagem','Botafogo','Leblon','Copacabana','Ipanema','Lagoa','Gavea','Sao Francisco'),
Cidade = c("Niterói","Niterói","Niterói","Rio de Janeiro","Rio de Janeiro","Rio de Janeiro","Rio de Janeiro","Rio de Janeiro","Rio de Janeiro","Rio de Janeiro")
)(a)
base_Q4_a <- inner_join(base_Q4_1, base_Q4_2, by=c("Nome"="nome"))(b)
saveRDS(base_Q4_a, "Lista 01/base_Q4_a.rds")(c)
base_Q4_c <- right_join(base_Q4_1, base_Q4_2, by=c("Nome"="nome"))(d)
write_csv(base_Q4_c, "Lista 01/base_Q4_c.csv")(e)
base_Q4_e <- full_join(base_Q4_1, base_Q4_2, by=c("Nome"="nome")) %>%
full_join(base_Q4_3, by="Nome")(f)
write_dta(base_Q4_e, "Lista 01/base_Q4_e.dta")(g)
base_Q4_g <- left_join(base_Q4_1, base_Q4_4, by=c("Bairro"="bairro"))(h)
write_delim(base_Q4_g, "Lista 01/base_Q4_g.txt")(i)
# file.size(dir("Lista 01")[1]) %>% min()Questão 5
Banco1 <- read_excel("Lista 01/Banco1.xls")(a)
Banco1$Altura %>% max()## [1] 1.98
(b)
Banco1$Peso[which.max(Banco1$Altura)]## [1] 95
(c)
Banco1$Grupo[which.min(Banco1$Peso)]## [1] 1
(d)
Banco1$Grupo %<>% factor(labels = c("Placebo", "Tratamento A"))(e)
write_csv(Banco1, "Lista 01/Banco1_mod.csv")Questão 6
dados_pop <- read_csv("Lista 01/populacaototaljovem2010.csv")
dados2010 <- read_excel("Lista 01/dados2010.xls")(a)
dados2010 %>% distinct(codmun)## # A tibble: 1,880 x 1
## codmun
## <dbl>
## 1 110000
## 2 110001
## 3 110002
## 4 110003
## 5 110004
## 6 110005
## 7 110006
## 8 110007
## 9 110008
## 10 110009
## # ... with 1,870 more rows
(b)
dados2010 %>%
group_by(codmun) %>%
summarise(tot_estupros = sum(Estupros, na.rm = T))## # A tibble: 1,880 x 2
## codmun tot_estupros
## <dbl> <dbl>
## 1 110000 0
## 2 110001 8
## 3 110002 50
## 4 110003 0
## 5 110004 25
## 6 110005 7
## 7 110006 0
## 8 110007 1
## 9 110008 6
## 10 110009 2
## # ... with 1,870 more rows
(c)
dados2010 %<>%
mutate(idade.cat = cut(Idade %>% as.integer(), breaks = c(-Inf, 18, Inf), labels = c(1, 2), right=F))
dados2010 %>%
group_by(codmun, idade.cat) %>%
summarise(tot_afogamentos = sum(Afogamentos, na.rm = T))## # A tibble: 3,365 x 3
## # Groups: codmun [?]
## codmun idade.cat tot_afogamentos
## <dbl> <fct> <dbl>
## 1 110000 1 1
## 2 110001 1 1
## 3 110001 2 6
## 4 110002 1 5
## 5 110002 2 28
## 6 110003 1 0
## 7 110003 2 0
## 8 110003 <NA> 0
## 9 110004 1 3
## 10 110004 2 23
## # ... with 3,355 more rows
(d)
dados2010 %>%
group_by(codmun) %>%
summarise(pop_total = length(Idade),
pop_jovem = sum(idade.cat==1, na.rm = T))## # A tibble: 1,880 x 3
## codmun pop_total pop_jovem
## <dbl> <int> <int>
## 1 110000 2 2
## 2 110001 47 3
## 3 110002 88 10
## 4 110003 10 1
## 5 110004 87 8
## 6 110005 40 3
## 7 110006 36 4
## 8 110007 13 2
## 9 110008 26 1
## 10 110009 49 2
## # ... with 1,870 more rows
(e)
dados2010 %<>% rename("maior.idade" = "idade.cat")(f)
dados2010 %>%
group_by(codmun) %>%
filter(Idade<18)## # A tibble: 4,518 x 6
## # Groups: codmun [1,387]
## codmun Idade Estupros Espancamentos Afogamentos maior.idade
## <dbl> <chr> <dbl> <dbl> <dbl> <fct>
## 1 110000 14 0 0 1 1
## 2 110000 17 0 0 0 1
## 3 110001 0 0 0 0 1
## 4 110001 1 0 0 1 1
## 5 110001 14 0 0 0 1
## 6 110002 0 0 0 1 1
## 7 110002 1 0 0 1 1
## 8 110002 10 0 0 0 1
## 9 110002 11 0 0 0 1
## 10 110002 15 0 0 1 1
## # ... with 4,508 more rows
Questão 7
base_mae <- read_dta("Lista 01/basemae.dta")(a)
base_mae %<>%
mutate(UF = str_sub(munic_res, end = 2),
GR = str_sub(munic_res, end = 1))(b)
base_mae %>%
group_by(UF) %>%
filter(UF == 21, ano >= 2000, ano <= 2005) %>%
summarise(taxa_media_estupro = mean(txestupro, na.rm = T),
taxa_media_agressao = mean(txagressao, na.rm = T))## # A tibble: 1 x 3
## UF taxa_media_estupro taxa_media_agressao
## <chr> <dbl> <dbl>
## 1 21 0.00313 5.45
(c)
base_mae %>%
group_by(meso_res, meso_nome_res) %>%
summarise(num_mun = sum(length(munic_res), na.rm = T))## # A tibble: 138 x 3
## # Groups: meso_res [?]
## meso_res meso_nome_res num_mun
## <chr> <chr> <int>
## 1 "" "" 108
## 2 1101 Madeira-Guaporé 110
## 3 1102 Leste Rondoniense 462
## 4 1201 Vale do Juruá 88
## 5 1202 Vale do Acre 154
## 6 1301 Norte Amazonense 66
## 7 1302 Sudoeste Amazonense 176
## 8 1303 Centro Amazonense 330
## 9 1304 Sul Amazonense 110
## 10 1401 Norte de Roraima 88
## # ... with 128 more rows
(d)
base_mae %>%
group_by(ano) %>%
summarise(taxa_media_suicidio = mean(txsuicidio, na.rm = T),
taxa_media_homicidio = mean(txhomicidio, na.rm = T))## # A tibble: 11 x 3
## ano taxa_media_suicidio taxa_media_homicidio
## <dbl> <dbl> <dbl>
## 1 2000 5.45 12.1
## 2 2001 6.04 13.1
## 3 2002 6.12 13.8
## 4 2003 6.00 14.3
## 5 2004 6.21 14.3
## 6 2005 6.40 14.6
## 7 2006 6.21 14.6
## 8 2007 6.48 15.1
## 9 2008 6.41 15.5
## 10 2009 6.36 16.1
## 11 2010 6.38 16.3
(e)
base_mae %>%
group_by(ano, GR) %>%
filter(!is.na(txsuicidio), !is.na(txhomicidio)) %>%
summarise(taxa_media_suicidio = mean(txsuicidio, na.rm = T),
taxa_media_homicidio = mean(txhomicidio, na.rm = T))## # A tibble: 55 x 4
## # Groups: ano [?]
## ano GR taxa_media_suicidio taxa_media_homicidio
## <dbl> <chr> <dbl> <dbl>
## 1 2000 1 2.48 14.0
## 2 2000 2 2.42 11.2
## 3 2000 3 4.51 11.9
## 4 2000 4 10.9 9.55
## 5 2000 5 7.62 21.5
## 6 2001 1 3.41 16.6
## 7 2001 2 3.12 12.0
## 8 2001 3 5.11 12.6
## 9 2001 4 11.3 10.3
## 10 2001 5 7.80 22.1
## # ... with 45 more rows
(f)
base_mae %>%
group_by(micro_res, micro_nome_res) %>%
summarise(pop_media = mean(populacao, na.rm = T),
tot_homicidios = sum(homicidio, na.rm = T),
tot_homicidios_paf = sum(homicidio_paf, na.rm = T))## # A tibble: 559 x 5
## # Groups: micro_res [?]
## micro_res micro_nome_res pop_media tot_homicidios tot_homicidios_paf
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 "" "" 2654. 87 60
## 2 11001 Porto Velho 67530. 2876 1903
## 3 11002 Guajará-Mirim 22476. 170 96
## 4 11003 Ariquemes 22750. 989 674
## 5 11004 Ji-Paraná 28230. 793 513
## 6 11005 Alvorada D'Oeste 19198. 144 97
## 7 11006 Cacoal 25658. 490 305
## 8 11007 Vilhena 19512. 357 175
## 9 11008 Colorado do Oeste 11282 82 37
## 10 12001 Cruzeiro do Sul 23310. 148 26
## # ... with 549 more rows
Lista 02
library(readxl)
library(magrittr)
library(janitor)
library(dplyr)
library(readr)
library(stringr)
library(ggplot2)
library(gridExtra)Questão 1
data1 <- read_excel("Lista 02/Tratamento.xls", na = "999") %>% clean_names()(a)
data1$grupo %<>% factor(labels=c("Adesão", "Não Adesão"))
data1$situacao_atual_no_trabalho %<>% factor(labels=c("Empregado", "Desempregado"))
data1$frequenta_algum_grupo_religioso %<>% factor(labels=c("Não","Sim"))
data1$escolaridade %<>% factor(labels=c("analfabeto", "ensino fundamental", "ensino medio", "ensino superior"))(b)
data1 %<>%
mutate(faixa_etaria = cut(data1$idade, breaks=c(0,18,60,150), labels=c("Jovem", "Adulto", "3ª Idade")))(c)
class(data1)## [1] "tbl_df" "tbl" "data.frame"
(d)
summary(data1)## grupo situacao_atual_no_trabalho idade
## Adesão :30 Empregado :17 Min. :67.00
## Não Adesão:26 Desempregado:39 1st Qu.:73.00
## Median :76.50
## Mean :76.32
## 3rd Qu.:79.25
## Max. :91.00
##
## escolaridade ansiedade depressao
## analfabeto : 4 Min. :15.0 Min. :10.0
## ensino fundamental:34 1st Qu.:19.0 1st Qu.:16.0
## ensino medio :10 Median :21.0 Median :18.0
## ensino superior : 8 Mean :20.8 Mean :17.6
## 3rd Qu.:23.0 3rd Qu.:20.0
## Max. :26.0 Max. :23.0
## NA's :1 NA's :1
## frequenta_algum_grupo_religioso faixa_etaria
## Não :29 Jovem : 0
## Sim :24 Adulto : 0
## NA's: 3 3ª Idade:56
##
##
##
##
(e)
write_delim(data1, "Lista 02/Tratamento_Q1.txt")
write_csv(data1, "Lista 02/Tratamento_Q1.csv")
write_rds(data1, "Lista 02/Tratamento_Q1.rds")
files <- c("Lista 02/Tratamento_Q1.txt",
"Lista 02/Tratamento_Q1.csv",
"Lista 02/Tratamento_Q1.rds")
for (i in 1:2) {
ifelse (((file.size(files[i])) < (file.size(files[i+1]))), j <- 1, j <- i+1)
}; cat("O arquivo com menor tamanho é ",
str_sub((files[j]), start = 10),
", pois ao salvar o arquivo com a extensão .rds o R salva-o com a compressão gzip, o que diminui o tamanho e o tempo necessário para a leitura do mesmo.")## O arquivo com menor tamanho é Tratamento_Q1.rds , pois ao salvar o arquivo com a extensão .rds o R salva-o com a compressão gzip, o que diminui o tamanho e o tempo necessário para a leitura do mesmo.
Questão 2
data2 <- read_rds("Lista 02/Tratamento_Q1.rds")(a)
data2 %>% select(idade, ansiedade, depressao) %>% write_delim("Lista 02/Tratamento_Q2a.txt")(b)
data2 %>%
group_by(escolaridade) %>%
filter(escolaridade=="ensino fundamental", idade>50, frequenta_algum_grupo_religioso=="Não") %>%
write_csv("Lista 02/Tratamento_Q2b.csv")(c)
data2 %>% arrange(idade)## # A tibble: 56 x 8
## grupo situacao_atual_~ idade escolaridade ansiedade depressao
## <fct> <fct> <dbl> <fct> <dbl> <dbl>
## 1 Não ~ Empregado 67 ensino medio 23 18
## 2 Não ~ Desempregado 67 ensino fund~ 22 23
## 3 Não ~ Desempregado 67 ensino medio 25 17
## 4 Não ~ Desempregado 67 ensino fund~ 25 23
## 5 Não ~ Desempregado 67 ensino fund~ 15 19
## 6 Não ~ Empregado 68 ensino supe~ 25 22
## 7 Ades~ Desempregado 69 ensino fund~ 20 14
## 8 Ades~ Desempregado 69 ensino medio 22 17
## 9 Ades~ Desempregado 70 ensino fund~ 19 12
## 10 Ades~ Desempregado 71 ensino medio 24 20
## # ... with 46 more rows, and 2 more variables:
## # frequenta_algum_grupo_religioso <fct>, faixa_etaria <fct>
(d)
data2 %>% rename("pont.ansiedade" = "ansiedade")## # A tibble: 56 x 8
## grupo situacao_atual_~ idade escolaridade pont.ansiedade depressao
## <fct> <fct> <dbl> <fct> <dbl> <dbl>
## 1 Ades~ Empregado 73 ensino fund~ 23 15
## 2 Ades~ Empregado 72 ensino fund~ 25 18
## 3 Ades~ Empregado 80 analfabeto 21 20
## 4 Ades~ Empregado 78 ensino fund~ 20 15
## 5 Ades~ Empregado 81 ensino supe~ 21 20
## 6 Ades~ Empregado 77 ensino fund~ 19 16
## 7 Ades~ Empregado 90 ensino medio 15 18
## 8 Ades~ Empregado 81 ensino fund~ 21 19
## 9 Ades~ Desempregado 70 ensino fund~ 19 12
## 10 Ades~ Desempregado 74 ensino fund~ 16 18
## # ... with 46 more rows, and 2 more variables:
## # frequenta_algum_grupo_religioso <fct>, faixa_etaria <fct>
(e)
data2 %<>% mutate(pont.total = ansiedade+depressao)(f)
data2 %>%
group_by(grupo, situacao_atual_no_trabalho) %>%
summarise(med_ansiedade = mean(ansiedade, na.rm = T),
med_depressao = mean(depressao, na.rm = T))## # A tibble: 4 x 4
## # Groups: grupo [?]
## grupo situacao_atual_no_trabalho med_ansiedade med_depressao
## <fct> <fct> <dbl> <dbl>
## 1 Adesão Empregado 20.6 17.6
## 2 Adesão Desempregado 20.3 15.9
## 3 Não Adesão Empregado 20.7 19.6
## 4 Não Adesão Desempregado 21.7 18.6
(g)
data2 %>%
group_by(grupo, escolaridade, frequenta_algum_grupo_religioso) %>%
summarise(maximo = max(pont.total, na.rm = T),
mediana = median(pont.total, na.rm = T),
"5o_decil" = quantile(pont.total, 0.5, na.rm = T))## # A tibble: 15 x 6
## # Groups: grupo, escolaridade [?]
## grupo escolaridade frequenta_algum_grup~ maximo mediana `5o_decil`
## <fct> <fct> <fct> <dbl> <dbl> <dbl>
## 1 Adesão analfabeto Não 28 28 28
## 2 Adesão analfabeto Sim 41 38 38
## 3 Adesão ensino fundame~ Não 42 32.5 32.5
## 4 Adesão ensino fundame~ Sim 43 35 35
## 5 Adesão ensino medio Não 44 41.5 41.5
## 6 Adesão ensino medio Sim 37 35 35
## 7 Adesão ensino superior Sim 47 42 42
## 8 Não Ad~ analfabeto Não 38 38 38
## 9 Não Ad~ ensino fundame~ Não 48 38 38
## 10 Não Ad~ ensino fundame~ Sim 45 40 40
## 11 Não Ad~ ensino fundame~ <NA> 45 45 45
## 12 Não Ad~ ensino medio Não 43 41 41
## 13 Não Ad~ ensino superior Não 37 36.5 36.5
## 14 Não Ad~ ensino superior Sim 47 47 47
## 15 Não Ad~ ensino superior <NA> 43 43 43
Questão 3
(a)
grafa <-
data1 %>%
ggplot() +
geom_bar(aes(x=grupo), fill="#8cb8ff", color="black") +
theme_bw() +
labs(x="Grupo", y="", title="Grupos")(b)
grafb <-
data1 %>%
ggplot() +
geom_bar(aes(x=situacao_atual_no_trabalho), fill="#a570d1", color="black") +
theme_bw() +
labs(x="Situação", y="", title="Situação atual do trabalho")(c)
grafc <-
data1 %>%
ggplot() +
geom_boxplot(aes(x=grupo, y=idade, color=grupo)) +
theme_bw() +
labs(x="Grupo", y="Idade", title="Idade por Grupos") +
theme(legend.position = "none") ##ou guides(color=F)(d)
data1 %>%
filter(frequenta_algum_grupo_religioso=="Sim") %>%
ggplot() +
geom_boxplot(aes(x=ansiedade, y=depressao, group=frequenta_algum_grupo_religioso)) +
theme_bw() +
labs(x="Ansiedade", y="Depressão", title="Ansiedade e Depressão segundo frequenta algum grupo religioso")(e)
data1 %>%
ggplot() +
geom_histogram(aes(x=idade), fill="#8cb8ff") +
theme_bw() +
labs(x="Idade", y="", title="Idade")(f)
summary(data1)## grupo situacao_atual_no_trabalho idade
## Adesão :30 Empregado :17 Min. :67.00
## Não Adesão:26 Desempregado:39 1st Qu.:73.00
## Median :76.50
## Mean :76.32
## 3rd Qu.:79.25
## Max. :91.00
##
## escolaridade ansiedade depressao
## analfabeto : 4 Min. :15.0 Min. :10.0
## ensino fundamental:34 1st Qu.:19.0 1st Qu.:16.0
## ensino medio :10 Median :21.0 Median :18.0
## ensino superior : 8 Mean :20.8 Mean :17.6
## 3rd Qu.:23.0 3rd Qu.:20.0
## Max. :26.0 Max. :23.0
## NA's :1 NA's :1
## frequenta_algum_grupo_religioso faixa_etaria
## Não :29 Jovem : 0
## Sim :24 Adulto : 0
## NA's: 3 3ª Idade:56
##
##
##
##
graf1 <-
data1 %>%
ggplot(aes(x=idade)) +
geom_histogram(aes(y=..density..), bins=10) +
stat_function(fun=dnorm, args=list(mean=mean(data1$idade), sd=sd(data1$idade)), color="red") +
theme_bw() +
labs(x="Idade", y="", title="Idade")
# Idade é uma variável quantitativa discreta
## Escolaridade é uma variável qualitativa, logo não possui densidade
graf2 <-
data1 %>%
ggplot(aes(x=depressao, na.rm=T)) +
geom_histogram(aes(y=..density..), bins=10) +
stat_function(fun=dnorm, args=list(mean=mean(na.omit(data1$depressao)), sd=sd(na.omit(data1$depressao))), color="red") +
theme_bw() +
labs(x="Depressão", y="", title="Depressão")
# Depressão é uma variável quantitativa discreta
graf3 <-
data1 %>%
na.omit(.$ansiedade) %>%
ggplot(aes(x=ansiedade, na.rm=T)) +
geom_histogram(aes(y=..density..), bins=10) +
stat_function(fun=dnorm, args=list(mean=mean(na.omit(data1$ansiedade)), sd=sd(na.omit(data1$ansiedade))), color="red") +
theme_bw() +
labs(x="Ansiedade", y="", title="Ansiedade")
# Ansiedade é uma variável quantitativa discreta
grid.arrange(graf1, graf2, graf3, ncol=2)(g)
table(data1$situacao_atual_no_trabalho, data1$grupo) ##
## Adesão Não Adesão
## Empregado 8 9
## Desempregado 22 17
table(data1$situacao_atual_no_trabalho, data1$grupo) %>% prop.table(2)##
## Adesão Não Adesão
## Empregado 0.2666667 0.3461538
## Desempregado 0.7333333 0.6538462
data1 %>%
ggplot(aes(situacao_atual_no_trabalho)) +
geom_bar(aes(fill=grupo), position = "fill") +
theme_minimal() +
labs(x="Situação atual do trabalho", y="")(h)
grid.arrange(grafa, grafb, grafc, ncol=2)Questão 4
data1$depressao %>% summary()## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 10.0 16.0 18.0 17.6 20.0 23.0 1
a4 <- data1$depressao %>% na.omit()
data1 %>%
ggplot() +
geom_boxplot(aes(y=depressao)) +
scale_y_continuous(breaks = seq(min(a4), max(a4), 2)) +
theme_bw()data1$depressao %>% boxplot()data1$frequenta_algum_grupo_religioso %>% summary()## Não Sim NA's
## 29 24 3
data1 %>% filter(!is.na(frequenta_algum_grupo_religioso)) %>%
ggplot() +
geom_bar(aes(x=frequenta_algum_grupo_religioso, fill=frequenta_algum_grupo_religioso)) +
labs(x="Frequenta algum grupo religioso", y="", title="Frequenta algum grupo religioso") +
theme_bw() +
guides(fill=F)Questão 5
(a)
data1 %<>% mutate(cat_idade = cut(idade, breaks=c(-Inf,70,90,+Inf), labels=c(1,2,3)))(b)
data1 %<>% mutate(cat_depre = cut(depressao, breaks=c(0,10,20,30), labels=c(1,2,3)))Questão 6
(a)
a1 <- function(x, lambda) {
lambda*exp(-lambda*x) * I(x>=0)
}(b)
a2 <- function(x) {
x^2 * I(x>-5 & x<5)
}(c)
a3 <- function(x) {
(1/10)*exp(-1)*(x-10) * I(x>2 & x<18)
}(d)
a4 <- function(alfa, beta, x) {
((beta^alfa)/gamma(alfa)) * x^(alfa-1) * exp(-beta * x) * I(x>=0)
}(e)
a5 <- function(alfa, beta, x) {
(gamma(alfa+beta)/((gamma(alfa)*gamma(beta)))) * x^(alfa-1) * (1-x)^(beta-1) * I(x<1 & x>0)
}
# a5 <- function(a, b, x) {
# ((x^(a-1))*((1-x)^(b-1)))/beta(a,b) * I(x<1 & x>0)
# }Questão 7
ggplot(data.frame(x=c(0,10)), aes(x=x)) +
stat_function(fun = a1, args = list(lambda=1)) +
labs(y="", title="Destribuição exponencial com lambda=1") +
theme_minimal()ggplot(data.frame(x=c(-5,5)), aes(x=x)) +
stat_function(fun = a2) +
labs(y="f(x)", title="Função x^2 no intervalo (-5,5)") +
theme_minimal()ggplot(data.frame(x=c(2,18)), aes(x=x)) +
stat_function(fun = a3) +
labs(y="f(x)") +
theme_minimal()ggplot(data.frame(x=c(0,30)), aes(x=x)) +
stat_function(fun = a4, args = list(alfa=2, beta=1)) +
labs(y="", title="Distribuição Gama(2,1)") +
theme_minimal()ggplot(data.frame(x=c(0,1)), aes(x=x)) +
stat_function(fun = a5, args = list(a=7, b=2)) +
labs(y="", title="Distribuição Beta(7,2)") +
theme_minimal()Questão 8
dev_pad <- function(x) {
sqrt(var(x))
}
vet <- c(1:5)
sd(vet)## [1] 1.581139
dev_pad(vet)## [1] 1.581139
Questão 9
f9 <- function(x) {
cat(paste0("Soma = ", sum(x), ". Média = ", mean(x), "."))
}
f9(vet)## Soma = 15. Média = 3.
Questão 10
IMC <- function(peso, altura) {
peso/((altura)^2)
}
IMC(80,1.80)## [1] 24.69136
Questão 11
IMC <- function(peso, altura) {
imc <- peso/((altura)^2)
if (imc>=0 && imc<=18.5) {
cat("IMC: ", imc %>% round(), "- Desnutrido")
}else{
if(imc>18.5 && imc<=25){
cat("IMC: ", imc %>% round(), "- Normal")
}else{
cat("IMC: ", imc %>% round(), "- Obeso")
}
}
}
IMC(80,1.80)## IMC: 25 - Normal
Questão 12
(a)
{
soma=1
for (i in seq(32,20*100,20)) {
soma=soma+(1/i)
}
soma
}## [1] 1.224006
(b)
{
soma=1
vet <- seq(11,10*100,10)
for (j in seq(1,50,2)) {
soma=soma-(1/vet[j])+(1/vet[j+1])
}
soma
}## [1] 0.9390823
(c)
{
soma=0
for (i in 1:100) {
soma=soma+(i/15)
}
soma
}## [1] 336.6667
(d)
{
soma=1/10
for (i in seq(10,10*99,10)) {
soma=soma+(i/10)
}
soma
}## [1] 4950.1
(e)
{
soma=0
for (i in 1:100) {
soma=soma+sqrt(log(i))
}
soma
}## [1] 188.104
Questão 13
(a)
(function(x) x^3) %>%
integrate(lower = 0, upper = 10)## 2500 with absolute error < 2.8e-11
(b)
fb <- function(x) (3/5)*(x^3 + x)
integrate(fb, lower = 0, upper = 5)[[1]] + integrate(fb, lower = 7, upper = 10)[[1]] + integrate(fb, lower = 11, upper = 15)[[1]]## [1] 6685.2
(c)
(function(x) x^12 * (1-8)^8) %>%
integrate(lower = 0, upper = 1)## 443446.2 with absolute error < 4.9e-09
(d)
(function(x) 3*exp(-3*x)) %>%
integrate(lower = 0, upper = 100)## 1 with absolute error < 4.2e-08
Questão 14
(a)
quote(x^3) %>% D("x")## 3 * x^2
(b)
quote(cos(2*x)+exp(-3*x)) %>% D("x")## -(exp(-3 * x) * 3 + sin(2 * x) * 2)
(c)
quote(3*x+log(x+y)) %>% D("x")## 3 + 1/(x + y)
(d)
quote(x*exp(-2*x) + log(1/x)) %>% D("x")## exp(-2 * x) - x * (exp(-2 * x) * 2) - 1/x^2/(1/x)
Questão 15
(a)
quote(3*x^3 - cos(x)) %>% D("x") %>% D("x")## 3 * (3 * (2 * x)) + cos(x)
(b)
quote(3*x^3 - y*cos(x)) %>% D("x") %>% D("y")## sin(x)
Lista 03
library(ggplot2)
library(gridExtra)
library(dplyr)Questão 1
(a)
unif <- sample(0:10, size = 100, replace=T)(b)
gam <- rgamma(100, shape = 2, rate = 3)(c)
norm <- rnorm(100, mean = 3, sd = 9)(d)
expo <- rexp(100, rate = 7)Questão 2
grafb <- ggplot(data = data.frame(x=gam), aes(x=x)) +
geom_histogram(aes(y=..density..), bins = 10) +
stat_function(fun = dgamma, args = list(shape = 2, rate = 3), color = "red") +
theme_minimal() +
labs(title = "Distribuição Gama com shape=2 e rate=3", y="f(x)")
grafc <- ggplot(data = data.frame(x=norm), aes(x=x)) +
geom_histogram(aes(y=..density..), bins = 10) +
stat_function(fun = dnorm, args = list(mean = 3, sd = 9), color = "red") +
theme_minimal() +
labs(title = "Distribuição Normal com media=3 e desv. padrao=9", y="f(x)")
grafd <- ggplot(data = data.frame(x=expo), aes(x=x)) +
geom_histogram(aes(y=..density..), bins = 10) +
stat_function(fun = dexp, args = list(rate = 7), color = "red") +
theme_minimal() +
labs(title = "Distribuição Exponencial com rate=7", y="f(x)")
grid.arrange(grafb, grafc, grafd, ncol=2)Questão 3
(a)
ppois(0, lambda = 5, lower.tail = F)## [1] 0.9932621
(b)
ppois(11, lambda = 5) - ppois(2, lambda = 5)## [1] 0.8698949
(c)
qpois(0.76, lambda = 5)## [1] 6
(d)
qpois(0.73, lambda = 5, lower.tail = F)## [1] 4
## ou
qpois(0.27, lambda = 5)## [1] 4
Questão 4
(a)
pbeta(0.7, 3, 10, lower.tail = F)## [1] 0.0002063763
(b)
pbeta(0.25, 3, 10) - pbeta(0.2, 3, 10)## [1] 0.1676707
(c)
qbeta(0.20, 3, 10)## [1] 0.1307157
(d)
qbeta(0.12, 3, 10, lower.tail = F)## [1] 0.3703205
## ou
qbeta(0.88, 3, 10)## [1] 0.3703205
Questão 5
base <- data.frame(
am.norm = rnorm(200, mean = 10, sd = 5),
am.gama = rgamma(200, rate = 2, shape = 4),
am.pois = rpois(200, lambda = 5),
am.qui = rchisq(200, df = 2)
)(a)
ggplot(base, aes(sample=am.norm)) +
stat_qq(distribution = qchisq, dparams = list(df=2)) +
stat_qq_line(distribution = qchisq, dparams = list(df=2))qqplot(
x = rchisq(200, 2),
y = rnorm(200, mean = 10, sd = 5)
)(b)
ggplot(base, aes(sample=am.gama)) +
stat_qq(distribution = qchisq, dparams = list(df=2)) +
stat_qq_line(distribution = qchisq, dparams = list(df=2))qqplot(
x = rchisq(200, 2),
y = rgamma(200, 3, 4)
)(c)
ggplot(base, aes(sample=am.pois)) +
stat_qq(distribution = qchisq, dparams = list(df=2)) +
stat_qq_line(distribution = qchisq, dparams = list(df=2))qqplot(
x = rchisq(200, 2),
y = rpois(200, 2)
)(d)
ggplot(base, aes(sample=am.qui)) +
stat_qq(distribution = qchisq, dparams = list(df=2)) +
stat_qq_line(distribution = qchisq, dparams = list(df=2))qqplot(
x = rchisq(200, 2),
y = rchisq(200, 2)
)Questão 6
(a)
pexp(5, 5, lower.tail = F)## [1] 1.388794e-11
(b)
pexp(9, 5) - pexp(2, 5)## [1] 4.539993e-05
(c)
dexp(0, 5)## [1] 5
(d)
pexp(2, 5)## [1] 0.9999546
(e)
dbinom(2, 15, 0.3)## [1] 0.09156011
## ou
pbinom(2, 15, 0.3) - pbinom(1, 15, 0.3)## [1] 0.09156011
(f)
pbinom(4, 15, 0.3)## [1] 0.5154911
(g)
pbinom(5, 15, 0.3) - pbinom(-2, 15, 0.3)## [1] 0.7216214
(h)
pbinom(9, 15, 0.3) - pbinom(2, 15, 0.3)## [1] 0.8695198
(i)
pbinom(3, 15, 0.3, lower.tail = F)## [1] 0.7031321
## ou
1 - pbinom(3, 15, 0.3)## [1] 0.7031321
Questão 7
fun7 <- function(y) {
if(y<1) return(0)
if(y>3) return(1)
return(integrate(
(function(x) (x^3)/20), lower = 1, upper = y
)[[1]]
)
}(a)
1 - fun7(2)## [1] 0.8125
(b)
fun7(2.6) - fun7(2)## [1] 0.37122
(c)
1 - fun7(2.8)## [1] 0.24418
(d)
fun7(2) + (1 - fun7(2.5))## [1] 0.7117188
Questão 8
(a)
ggplot(data = data.frame(x=c(-1,11)), aes(x=x)) +
stat_function(fun = punif, args = list(min = 0, max = 10)) +
labs(y="F(x)", title="Distribuição acumulada de uma Uniforme(0,10)") +
theme_minimal()(b)
ggplot(data = data.frame(x=c(0,5)), aes(x=x)) +
stat_function(fun = pgamma, args = list(shape = 2 , rate = 3)) +
labs(y="F(x)", title="Distribuição acumulada de uma Gama(2,3)") +
theme_minimal()(c)
ggplot(data = data.frame(x=c(-30,40)), aes(x=x)) +
stat_function(fun = pnorm, args = list(mean = 3, sd = 9)) +
labs(y="F(x)", title="Distribuição acumulada de uma N(3,9)") +
theme_minimal()(d)
ggplot(data = data.frame(x=c(0,2)), aes(x=x)) +
stat_function(fun = pexp, args = list(7)) +
labs(y="F(x)", title="Distribuição acumulada de uma Exponecial(7)") +
theme_minimal()(e)
ggplot(data = data.frame(x=c(0,4)), aes(x=x)) +
stat_function(fun = Vectorize(fun7)) +
labs(y="F(x)", title="Distribuição acumulada de x^3/20") +
theme_minimal()(f)
Professor desconsiderou a questão
Questão 9
(a)
ggplot(data = data.frame(x=c(-1:110)), aes(x=x)) +
# geom_point(aes(y=dbinom(x, 100, 0.85)), color="red") +
stat_function(fun = dbinom, args = list(100, 0.85), geom = "point", n = 112)## ou
plot(dbinom(-1:110,100,0.85), type = 'h')ggplot(data = data.frame(x=c(-1:110)), aes(x=x)) +
stat_function(fun = pbinom, args = list(100, 0.85), geom = "step") +
labs(y="F(x)")## ou
plot(pbinom(-1:110,100,0.85), type = 's')Professor desconsiderou a questão
(b)
Professor desconsiderou a questão
(c)
Professor desconsiderou a questão
Questão 10
Professor desconsiderou a questão
Questão 11
Professor desconsiderou a questão
Questão 12
fun12 <- function(x, k) {
return((gamma(k)*exp(-k*x-3))/k * I(x>0 & k>0))
}(a)
ggplot(data = data.frame(x=c(-2,6)), aes(x=x)) +
stat_function(fun = fun12, args = list(k=4)) +
labs(y="f(x)") +
theme_minimal()(b)
ggplot(data = data.frame(k=c(-2,6)), aes(x=k)) +
stat_function(fun = fun12, args = list(x=2)) +
labs(y="f(k)") +
theme_minimal()(c)
maximo <- optimise(fun12, c(-2,6), k=2, maximum = TRUE); maximo## $maximum
## [1] 5.786925e-05
##
## $objective
## [1] 0.02489065
(d)
ggplot(data = data.frame(x=c(-2,6)), aes(x=x)) +
stat_function(fun = fun12, args = list(k=2)) +
labs(y="f(x)") +
geom_vline(aes(xintercept = maximo$maximum), linetype = "dashed", color = "red") +
theme_minimal()Questão 13
(a)
x = c(1, 2, 2.4, 2.8, 5, 1, 3, 4, 6.3, 2.9)
mv_a <- function(beta, x) {
produto = 1
for (i in 1:length(x)) {
produto = produto*(x[i]^2)
}
b <- beta^(3*length(x))
g <- gamma(3)^length(x)
return(((b/g) * exp(-beta*sum(x)) * produto))
}
EMV <- optimise(mv_a, c(0,2), x = c(1, 2, 2.4, 2.8, 5, 1, 3, 4, 6.3, 2.9), maximum = T)
ggplot(data=data.frame(x=c(0,2)), aes(x=x)) +
stat_function(fun = mv_a, args = list(x = c(1, 2, 2.4, 2.8, 5, 1, 3, 4, 6.3, 2.9))) +
geom_vline(xintercept = EMV$maximum, linetype = "dashed", color = "red") +
theme_minimal()(b)
x = c(10, 12, 11, 12.8, 13, 14.9, 12, 16.2)
mv_b <- function(u,x) {
soma=0
for (i in 1:length(x)) {
soma = soma + ((x[i]-u)/sqrt(10))^2
}
return(((1/sqrt(20*pi))^(length(x))) * exp((-1/2) * soma))
}
EMV <- optimise(mv_b, c(5,20), x = c(10, 12, 11, 12.8, 13, 14.9, 12, 16.2), maximum = T)
ggplot(data = data.frame(x=c(5,20)), aes(x=x)) +
stat_function(fun = mv_b, args = list(x = c(10, 12, 11, 12.8, 13, 14.9, 12, 16.2))) +
geom_vline(xintercept = EMV$maximum, linetype = "dashed", color = "red") +
labs(y="") +
theme_minimal()(c)
Está indo pro infinito do infinito ..
# x = c(2, 3, 2, 2, 3, 3, 3, 4, 4, 5, 7, 2, 2, 2)
#
# mv_c <- function(p, x) {
# return(((1-p)^sum(x)) * p^length(x))
# }
#
# EMV <- optimise(mv_c, c(300,470), x = c(2, 3, 2, 2, 3, 3, 3, 4, 4, 5, 7, 2, 2, 2), maximum = T)
#
# ggplot(data = data.frame(x=c(300,470)), aes(x=x)) +
# stat_function(fun = mv_c, args = list(x = c(2, 3, 2, 2, 3, 3, 3, 4, 4, 5, 7, 2, 2, 2))) +
# geom_vline(xintercept = EMV$maximum, args = list(x = c(2, 3, 2, 2, 3, 3, 3, 4, 4, 5, 7, 2, 2, 2)), linetype = "dashed", color = "red") +
# theme_minimal()(d)
x = c(25, 23, 22, 21, 27, 39, 35, 33, 32)
mv_d <- function(o2, x) {
soma=0
for (i in 1:length(x)) {
soma = soma + ((x[i]-10)/sqrt(o2))^2
}
return(((1/sqrt(2*pi*o2))^length(x)) * exp((-1/2) * soma))
}
EMV <- optimise(mv_d, c(0,1000), x = c(25, 23, 22, 21, 27, 39, 35, 33, 32), maximum = T)
ggplot(data = data.frame(x=c(0,2000)), aes(x=x)) +
stat_function(fun = mv_d, args = list(x = c(25, 23, 22, 21, 27, 39, 35, 33, 32))) +
geom_vline(xintercept = EMV$maximum, linetype = "dashed", color = "red") +
theme_minimal()(e)
x <- c(4, 5, 6.2, 4, 3, 5, 6.9, 7, 9.3)
mv_e <- function(lambda, x) {
for (i in 1:length(x)) {
if(x[i]<=0) x[i] <- 0
}
return((lambda^length(x))*exp(-lambda*sum(x)))
}
EMV <- optimise(mv_e, c(0,1), x=c(4, 5, 6.2, 4, 3, 5, 6.9, 7, 9.3), maximum = TRUE)
ggplot(data = data.frame(x=c(0,1)), aes(x=x)) +
stat_function(fun = mv_e, args = list(x = c(4, 5, 6.2, 4, 3, 5, 6.9, 7, 9.3))) +
geom_vline(xintercept = EMV$maximum, linetype = "dashed", color= "red") +
labs(y="") +
theme_minimal() Questão 14
P U L A
Questão 15
X <- rnorm(1000,25,sqrt(70))
T <- rchisq(1000, 5)
Y <- rexp(1000,10)
Z <- rgamma(1000,3,5)
W <- rgamma(1000,10,5)(a)
data.frame(x=Z+W) %>%
ggplot(aes(x=x)) +
geom_histogram(aes(y=..density..), bins=30) +
stat_function(fun = dgamma, args = list(13,5), color = "red") +
labs(y="") +
theme_minimal()(b)
data.frame(x=2*Y) %>%
ggplot(aes(x=x)) +
geom_histogram(aes(y=..density..), bins = 30) +
stat_function(fun = dgamma, args = list(2,10), color = "red") +
labs(y="") +
theme_minimal()(c)
X_ <- 5*(replicate(1000,rnorm(5,25,sqrt(70)))/5)
mean_X <- apply(X_, 2, mean)
data.frame(x=(mean_X-25)/sqrt(70/5)) %>%
ggplot(aes(x=x)) +
geom_histogram(aes(y=..density..), bins = 30) +
stat_function(fun = dnorm, args = list(0,1), color = "red") +
labs(y="") +
theme_minimal()(d)
data.frame(x=3*T) %>%
ggplot(aes(x=x)) +
geom_histogram(aes(y=..density..), bins = 30) +
stat_function(fun = dgamma, args = list((15/2), (1/2)), color = "red") +
labs(y="") +
theme_minimal()(e)
data.frame(x=(X+20) + (X+20) + (X+20)) %>%
ggplot(aes(x=x)) +
geom_histogram(aes(y=..density..), bins = 30) +
stat_function(fun = dnorm, args = list(95, sqrt(210)), color = "red")Lista 04
library(dplyr)
library(magrittr)
library(readr)
library(ggplot2)Questão 1
(a)
IC_q1a <- function(x, sigma2, confianca) {
amostra = na.omit(x)
n = length(amostra)
x_barra = mean(amostra)
alfa = 1-confianca
z = qnorm(1-alfa)
L = (x_barra - z*sqrt(sigma2/n)) %>% round(1)
cat("IC(m,", confianca*100, "%) = [", L, ",Inf).", sep = "")
}(b)
IC_q1b <- function(x, sigma2, confianca) {
amostra = na.omit(x)
n = length(amostra)
x_barra = mean(amostra)
alfa = 1-confianca
z = qnorm(1-alfa)
L = (x_barra + z*sqrt(sigma2/n)) %>% round(1)
cat("IC(m,", confianca*100, "%) = (-Inf,", L, "].", sep = "")
}(c)
IC_q1c <- function(x, sigma, confianca) {
amostra = na.omit(x)
n = length(amostra)
x_barra = mean(amostra)
alfa = 1-confianca
z = qnorm(1-alfa/2)
LI = (x_barra - z*sigma/sqrt(n)) %>% round(1)
LS = (x_barra + z*sigma/sqrt(n)) %>% round(1)
cat("IC(m,", confianca*100, "%) = [", LI, ",", LS, "].", sep = "")
}(d)
IC_q1d <- function(x, sigma, confianca) {
amostra = na.omit(x)
n = length(amostra)
x_barra = mean(amostra)
alfa = 1-confianca
z = qnorm(1-alfa/2)
LI = (x_barra - z*sigma/sqrt(n)) %>% round(1)
LS = (x_barra + z*sigma/sqrt(n)) %>% round(1)
# cat("IC(m,", confianca*100, "%) = [", LI, ",", LS, "].", sep = "")
cont = ifelse(30>=LI & 30<=LS, 1, 0)
return(cont)
}
amostra = data.frame(
replicate(1000, rnorm(25, mean = 30, sd = sqrt(25)))
)
soma = 0
for (i in 1:length(amostra)) {
ifelse(
(IC_q1d(amostra[[i]], 5, 0.9)==1), (soma = soma +1), 0
)
}
# soma
cat(
(soma/1000)*100, "%", sep = ""
)## 89.9%
## Como pode ser observado, a porcentagem é aproximadamente 90%, o que indica que em 90% das vezes o intervalo contém o verdadeiro valor de muQuestão 2
IC_q2 <- function(x, confianca) {
x = na.omit(x)
n = length(x)
p_chapeu = 1/2
alfa = 1 - confianca
z = qnorm(confianca + alfa/2)
erro = sqrt(0.5*0.5/n)*z
LI = p_chapeu - erro
LS = p_chapeu + erro
cat("IC(p,", confianca*100, "%) = [", LI, ",", LS, "]", sep= "")
}Questão 3
base_3 <- read_table2("Lista 04/Base saude.txt", na = "9")
base_3$HIV %<>% factor(labels = c("Não", "Sim"))
base_3$DST %<>% factor(labels = c("Não", "Sim"))
base_3$Sexo %<>% factor(labels = c("Feminino", "Masculino"))Como a função da letra d era uma adaptação da c, usei a função criada na letra c.
(a)
n = length(base_3$Peso); n## [1] 30
## Como n é suficientemente grande, pelo TCL podemos estimar a variância pela variância amostral
IC_q1c(base_3$Peso, sigma = sqrt(var(base_3$Peso, na.rm = T)), confianca = 0.97)## IC(m,97%) = [138.5,371.1].
## Foi realizada a suposição de que n é suficientemente grande para usar o TCL.(b)
base_q3b <- base_3 %>% filter(HIV=="Sim") %$% Estatura
## Assumindo que a variância da amostra é um bom estimador para a variância da população
IC_q1c(base_q3b, sigma = sqrt(var(base_q3b, na.rm = T)), confianca = 0.95)## IC(m,95%) = [76.7,139.5].
## Isso quer dizer que aproximadamente em 95% das vezes o intervalo conterá o verdadeiro valor de mu.
## Foi realizada a suposição de que a variância amostral é um bom estimador para a variância populacional.(c)
Análogo a b
(d)
base_q3d <- base_3 %>% filter(Sexo=="Feminino", HIV=="Não") %$% Idade
## Assumindo que a variância amostral é um bom estimador para a variância populacional
IC_q1c(base_q3d, sigma = sqrt(var(base_q3d, na.rm = T)), confianca = 0.90)## IC(m,90%) = [26.4,42.8].
## Isso quer dizer que em 90% das vezes o intervalo conterá o verdadeiro valor de mu.
## Foi realizado a suposição de que a variância amostral é um bom estimador para a variância populacional.Questão 4
IC_q7 <- function(x, y, conf){
grupos = levels(y)
for(i in 1:length(grupos)){
aux = x[y==grupos[i]] %>% .[!is.na(.)]
cat(grupos[i]," - ", "")
IC_q1c(aux, sigma = sqrt(var(aux, na.rm = T)), conf)
cat("\n")
}
}
IC_q7(base_3$Peso, base_3$Sexo, 0.90)## Feminino - IC(m,90%) = [59.1,312.1].
## Masculino - IC(m,90%) = [183.4,423.9].
Questão 5
IC_q7(base_3$Estatura, base_3$DST, conf = 0.95)## Não - IC(m,95%) = [56.2,147.2].
## Sim - IC(m,95%) = [97,158.4].
## Para os pacientes observados divididos em grupo possui e não possui DST, pode-se observar o intervalo que conterá o verdadeiro valor da média da estatura de cada grupo com um nível de confiança de 95%.
## Com base nos intervalos dos grupos, leva-nos a supor que a média da Estatura de quem possui DST é maior se comparado com a média de quem não possui DST.Questão 6
IC_q6_var <- function(x, conf) {
x = na.omit(x)
n = length(x)
alfa = 1-conf
S2 = var(x, na.rm = T)
x1 = qchisq(alfa/2, df = n-1, lower.tail = F)
x2 = qchisq(1-alfa/2, df = n-1, lower.tail = F)
LI = (n-1)*S2/x1
LS = (n-1)*S2/x2
cat(
"IC(sigma^2,", conf*100, "%) = [", LI %>% round(2), ",", LS %>% round(2), "].", sep = ""
)
}(a)
base_3 %>% filter(Sexo=="Masculino", HIV=="Sim") %>% select(Idade) %>% pull %>% IC_q6_var(0.90)## IC(sigma^2,90%) = [28.5,102.72].
## Se realizado o intervalo de confiança para a variância para todas as possíveis amostras da população, teriamos que aproximadamente 90% desses intervalos conteriam o real valor do parâmetro.
## Foram realizadas as suposições de que a amostra veio de uma distribuição normal e que a variância amostral é um bom estimador para a variância populacional.(b)
IC_q6_var(base_3$Estatura, 0.95)## IC(sigma^2,95%) = [3076.14,8934.48].
## Se realizado o intervalo de confiança para a variância para todas as possíveis amostras da população, teríamos que aproximadamente 90% desses intervalos conteriam o real valor do parâmetro.
## Foram realizadas as suposições de que a amostra veio de uma distrivui(c)
base_3 %>% filter(Escol==0)## # A tibble: 1 x 10
## Codigo Datacol Sexo Idade Peso Estatura HIV Escol DST Tipo
## <chr> <chr> <fct> <int> <dbl> <dbl> <fct> <int> <fct> <int>
## 1 AB15 01/01/14 Masculino 18 65 166 Sim 0 Não NA
## Não é possível encontrar o intervalo de confiança pois o tamanho da amostra é 1.Questão 7
base_7 <- read_rds("Lista 04/exames medicos.rds")(a)
## HDL
## Empiricamente, não é razoável supor normalidade.
ggplot(base_7, aes(sample = base_7$HDL)) + geom_qq() + geom_qq_line()## LDL
## Empiricamente, é razoável supor normalidade.
ggplot(base_7, aes(sample = base_7$LDL)) + geom_qq() + geom_qq_line()## Glicose
## Empiricamente, é razoável supor normalidade
ggplot(base_7, aes(sample = base_7$glicose)) + geom_qq() + geom_qq_line()## Linfocitos
## Empiricamente, não é razoável supor normalidade.
ggplot(base_7, aes(sample = base_7$linfocitos)) + geom_qq() + geom_qq_line()(b)
IC_media_q7 <- function(x, conf){
x_barra = mean(x, na.rm = T)
s2 = var(x, na.rm = T)
n = length(x[!is.na(x)])
alfa = 1-conf
erro = qt(1-alfa/2, df = n-1) * sqrt(s2/n)
LI = x_barra - erro
LS = x_barra + erro
cat(
"IC (m,", conf*100, "%) = [", LI, ";", LS, "]", sep = ""
)
}IC_media_q7(base_7$LDL, 0.98)## IC (m,98%) = [29.06364;31.40836]
IC_media_q7(base_7$glicose, 0.98)## IC (m,98%) = [46.36625;51.08975]
(c)
## Empiricamente. Igual feito na letra a.(d)
IC_var_q7 <- function(x, conf){
n = length(x[!is.na(x)])
s2 <- var(x, na.rm = T)
alfa = 1-conf
x1 = qchisq(alfa/2, df = n-1, lower.tail = F)
x2 = qchisq(1-alfa/2, df = n-1, lower.tail = F)
LI = (n-1)*s2 / x1
LS = (n-1)*s2 / x2
cat(
"IC (sigma,", conf*100, "% = [", LI, ";", LS, "]", sep = ""
)
}IC_var_q7(base_7$LDL, 0.95)## IC (sigma,95% = [3.373065;10.70688]
IC_var_q7(base_7$glicose, 0.95)## IC (sigma,95% = [13.68889;43.45165]
(e)
IC_prop_q7 <- function(num_s, n, conf, conservador=FALSE){
if_else(
conservador==FALSE, p_chapeu = num_s/n, p_chapeu = 1/2
)
alfa = 1-conf
erro = qnorm(1-alfa/2) * sqrt( (pchapeu*(1-p_chapeu))/n )
LI = p_chapeu - erro
LS = p_chapeu + erro
cat(
"IC (p,", conf*100, "%) = [", LI, ";", LS, "]", sep = ""
)
}Questão 8
base_8 <- read_rds("Lista 04/colesterol.rds")(a)
## Empiricamente, não é razoável supor normalidade.
ggplot(base_8, aes(sample = base_8$HDL)) + geom_qq() + geom_qq_line()## Empiricamente, é razoável supor normalidade.
ggplot(base_8, aes(sample = base_8$LDL)) + geom_qq() + geom_qq_line()(b)
## Suponde normalidade independente do resultado na questão acima.
## Supondo normalidade, sim é possível obter o Intervalo de Confiança para a média.
IC_media_q8 <- function(x, conf){
n = length(x[!is.na(x)])
x_barra = mean(x, na.rm = T)
s2 = var(x, na.rm = T)
alfa = 1-conf
erro = qt(1-alfa, df = n-1) * sqrt(s2/n)
LI = x_barra - erro
LS = x_barra + erro
cat(
"IC (m,", conf*100, ") = [", LI, ";", LS, "]", sep = ""
)
}## Isso quer dizer que aproximadamente 95% das vezes o intervalo conterá o verdadeiro valor de mu.
base_8$HDL %>% IC_media_q8(0.95)## IC (m,95) = [0.2874198;0.3948024]
## Isso quer dizer que aproximadamente 95% das vezes o intervalo conterá o verdadeiro valor de mu.
base_8$LDL %>% IC_media_q8(0.95)## IC (m,95) = [49.69716;50.44951]
(c)
## Empiricamente, igual feito na letra a.(d)
## Suponde normalidade independente do resultado na questão acima.
## Supondo normalidade, sim é possível obter o Intervalo de Confiança para a variância.
IC_var_q8 <- function(x, conf){
n = length(x[!is.na(x)])
s2 = var(x, na.rm = T)
alfa = 1-conf
x1 = qchisq(alfa/2, df = n-1)
x2 = qchisq(1-alfa/2, df = n-1)
LI = (n-1)*s2/x2
LS = (n-1)*s2/x1
cat(
"IC (sigma,", conf*100, ") = [", LI, ";", LS, "]", sep = ""
)
}## Isso quer dizer que aproximadamente 95% das vezes o intervalo conterá o verdadeiro valor de sigma.
base_8$HDL %>% IC_var_q8(0.95)## IC (sigma,95) = [0.07144162;0.128993]
## Isso quer dizer que aproximadamente 95% das vezes o intervalo conterá o verdadeiro valor de sigma.
base_8$LDL %>% IC_var_q8(0.95)## IC (sigma,95) = [3.50696;6.332068]
Lista 05
library(dplyr)
library(ggplot2)Questão 1
(a)
## Amostras a. s. obtidas de uma população normal.
## Variância conhecida.
## H0: mu = mu0
## H1: mu < mu0
TH_media_q1a <- function(x, mu0, sigma2, alfa){
amostra = na.omit(x)
n = length(amostra)
z = qnorm(1-alfa)
x_barra = mean(amostra)
x_critico = mu0 - z*sqrt(sigma2/n)
decisao = ifelse((x_barra < x_critico), "Rejeita H0.", "Não rejeita H0.")
cat(
"Estimativa pontual: ", x_barra, "\n",
"Região Crítica: [", -Inf, ";", x_critico, "] \n",
"Decisão: ", decisao,
sep = ""
)
}
## mu0 = 500
rnorm(1000, 500, sqrt(25)) %>% TH_media_q1a(500, 25, 0.05)## Estimativa pontual: 500.0001
## Região Crítica: [-Inf;499.7399]
## Decisão: Não rejeita H0.
(b)
## Amostras a. s. obtidas de uma população normal.
## Variância desconhecida.
## H0: sigma2 = sigma0
## H1: sigma2 > sigma0
TH_sigma2_q1b <- function(x, sigma0, alfa){
amostra = na.omit(x)
n = length(amostra)
s2 = var(amostra)
x = (n-1)*s2 / sigma0
x_critico = qchisq(alfa, n-1, lower.tail = F)
decisao = ifelse(sigma0 > x_critico, "Rejeita H0.", "Não rejeita H0.")
cat(
"Estimativa pontual: ", x, "\n",
"Região Crítica: [", x_critico, ";", +Inf, "] \n",
"Decisão: ", decisao,
sep = ""
)
}
## sigma0 = 25
rnorm(1000, 500, sqrt(25)) %>% TH_sigma2_q1b(25, 0.05)## Estimativa pontual: 929.1633
## Região Crítica: [1073.643;Inf]
## Decisão: Não rejeita H0.
(C)
## Amostras a. s. obtidas de uma população normal.
## H0:
## H1:
TH_prop_q1c <- function(x, p0, alfa){
amostra = na.omit(x)
n = length(amostra)
q = qnorm(1-alfa/2)
k = sqrt( (p0*(1-p0))/n ) * q
LI = p0 - k
LS = p0 + k
decisao = ifelse(( p0<LI | p0>LS ), "Rejeita H0.", "Não rejeita H0.")
cat(
"Estimativa pontual: ", mean(amostra), "\n",
"Região Crítica: [", LI, ";", LS, "] \n",
"Decisão: ", decisao,
sep = ""
)
}
c(1,1,1,1,1,1,0,0,0,0,1,0,0,1) %>% TH_prop_q1c(., sum(./length(.)), 0.05)## Estimativa pontual: 0.5714286
## Região Crítica: [0.3122037;0.8306534]
## Decisão: Não rejeita H0.
(d)
## H0: mu = mu0
## H1: mu < mu0
TH_media_q1d <- function(x, mu0, sigma2, alfa){
amostra = na.omit(x)
n = length(amostra)
x_barra = mean(amostra)
z = (x_barra-mu0) / sqrt(sigma2/n)
q = qnorm(alfa)
decisao = ifelse((z < q), "Rejeita H0.", "Não rejeita H0.")
cat(
"Estimativa pontual: ", x_barra, "\n",
"Estimativa de teste: ", z, "\n",
"Região Crítica: [", -Inf, ";", q, "] \n",
"Decisão: ", decisao,
sep = ""
)
}
rnorm(1000, 500, sqrt(25)) %>% TH_media_q1d(500, 25, 0.05)## Estimativa pontual: 499.9604
## Estimativa de teste: -0.2503271
## Região Crítica: [-Inf;-1.644854]
## Decisão: Não rejeita H0.
(e)
## Erro tipo II: Probabilidade de não rej. H0 dado H0 verdadeiro.
erroII_q1e <- function(n, alfa, sigma2, mu0, mu){
# Região Critica
x_critico = mu0 - sqrt(sigma2/n)*qnorm(1-alfa)
# Padronizando
z = (x_critico - mu) / sqrt(sigma2/n)
return( pnorm(z, lower.tail = F) )
}
erroII_q1e(1000, 0.05, 25, 500, 500)## [1] 0.95
(f)
## O gráfico mostra as probabilidades de se não rejeitar H0 para cada mu diferente.
ggplot(data = data.frame(x = c(0, 60)), aes(x = x)) +
stat_function(fun = erroII_q1e, args = list(n = 20, alfa = 0.05, sigma2 = 25, mu0 = 30)) +
geom_vline(xintercept = 30, linetype = "dashed", col = "red") +
ggtitle("Erro tipo II") + xlab(expression(mu)) + ylab(expression(beta(mu))) (g)
## A medida que o tamanho da amostra aumenta os valores a esquerda de mu0 ficam menos prováveis, fazendo a curva crescer quando está mais próximo de mu0
ggplot(data = data.frame(x = c(0, 60)), aes(x = x)) +
stat_function(fun = erroII_q1e, args = list(n = 20 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "red") +
stat_function(fun = erroII_q1e, args = list(n = 30 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "black") +
stat_function(fun = erroII_q1e, args = list(n = 40 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "purple") +
stat_function(fun = erroII_q1e, args = list(n = 50 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "green") +
stat_function(fun = erroII_q1e, args = list(n = 100, alfa = 0.05, sigma2 = 25, mu0 = 30), color = "blue") +
geom_vline(xintercept = 30, linetype = "dashed", col ="red") +
ggtitle("Erro tipo II") + xlab(expression(mu)) + ylab(expression(beta(mu))) (h)
poder_q1h <- function(n, alfa, sigma2, mu0, mu){
# Região Crítica
q = qnorm(1-alfa/2)
LI = mu0 - sqrt(sigma2/n)*q
LS = mu0 + sqrt(sigma2/n)*q
# Padronizando
z1 = (LI - mu) / sqrt(sigma2/n)
z2 = (LS - mu) / sqrt(sigma2/n)
return(pnorm(z1) + pnorm(z2, lower.tail = F))
}
rnorm(1000, 500, sqrt(25)) %>% length() %>% poder_q1h(0.05, 25, 500, 500)## [1] 0.05
(i)
## O gráfico mostra as probabilidades de se rejeitar H0 para cada mu diferente.
ggplot(data = data.frame(x = c(0, 60)), aes(x = x)) +
stat_function(fun = poder_q1h, args = list(n = 20, alfa = 0.05, sigma2 = 25, mu0 = 30)) +
geom_vline(xintercept = 30, linetype = "dashed", col ="red") +
ggtitle("Função Poder") + xlab(expression(mu)) + ylab(expression(pi(mu))) (j)
## A medida que o tamanho da amostra aumenta maior é o poder do teste, ou seja, a probabilidade de se rejeitar valores diferentes de mu0 aumenta.
ggplot(data = data.frame(x = c(0, 60)), aes(x = x)) +
stat_function(fun = poder_q1h, args = list(n = 20 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "red") +
stat_function(fun = poder_q1h, args = list(n = 30 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "black") +
stat_function(fun = poder_q1h, args = list(n = 40 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "purple") +
stat_function(fun = poder_q1h, args = list(n = 50 , alfa = 0.05, sigma2 = 25, mu0 = 30), color = "green") +
stat_function(fun = poder_q1h, args = list(n = 100, alfa = 0.05, sigma2 = 25, mu0 = 30), color = "blue") +
geom_vline(xintercept = 30, linetype = "dashed", col ="red") +
ggtitle("Função Poder") + xlab(expression(mu)) + ylab(expression(pi(mu))) Questão 2
(a)
## Amostras a. s. obtidas de uma população normal com média mu e variância sigma2 desconhecida.
## Suponha que n é grande.
## H0: mu = mu0
## H1: mu > mu0
TH_media_q2a <- function(x, alfa, mu0){
amostra = na.omit(x)
n = length(amostra)
## x_barra segue distribuição normal pois é combinação linear de distribuições normais.
x_barra = mean(amostra)
s2 = var(amostra)
q = qnorm(alfa, lower.tail = F)
k = sqrt(s2/n) * q
x_critico = mu0 + k
decisao = if_else((x_barra > x_critico), "Rejeita H0", "Não rejeita H0")
cat(
"Estimativa pontual: ", x_barra, "\n",
"Região Crítica: [", x_critico, " ; ", +Inf, "] \n",
"Decisão: ", decisao, " a um nível de significância ", alfa,
sep = ""
)
}
rnorm(1000, 500, sqrt(25)) %>% TH_media_q2a(0.05, 500)## Estimativa pontual: 499.8381
## Região Crítica: [500.2596 ; Inf]
## Decisão: Não rejeita H0 a um nível de significância 0.05
(b)
## Amostras a. s. obtidas de uma população com distribuição normal com média mu e variância desconhecida.
## H0: mu = mu0
## H1: mu > mu0
TH_media_q2b <- function(x, alfa, mu0){
amostra = na.omit(x)
n = length(amostra)
## x_barra segue distribuição normal pois é combinação linear de distribuições normais.
x_barra = mean(amostra)
s2 = var(amostra)
t = (x_barra - mu0) / sqrt(s2/n)
x_critico = qnorm(alfa, lower.tail = F)
decisao = if_else((t > x_critico), "Rejeita H0", "Não rejeita H0")
cat(
"Estatística de teste: ", t, "\n",
"Região Crítica: [", x_critico, " ; ", +Inf, "] \n",
"Decisão: ", decisao, " a um nível de significância ", alfa,
sep = ""
)
}
rnorm(1000, 500, sqrt(25)) %>% TH_media_q2a(0.05, 500)## Estimativa pontual: 500.2115
## Região Crítica: [500.2586 ; Inf]
## Decisão: Não rejeita H0 a um nível de significância 0.05
(c)
erro_tipoII_q2c <- function(n, alfa, s2, mu0, mu){
## Região critica
k = sqrt(s2/n)*qnorm(1-alfa)
x_critico = mu0 + k
## Padronizando e calculando probabilidade
z = (x_critico - mu) / sqrt(s2/n)
return( pnorm(z) )
}
erro_tipoII_q2c(1000, 0.05, 25, 500, 500)## [1] 0.95
(d)
## O gráfico mostra as probabilidades de se não rejeitar H0 para cada mu diferente.
ggplot(data = data.frame(x = c(0, 20)), aes(x = x)) +
stat_function(fun = erro_tipoII_q2c, args = list(n = 20, alfa = 0.05, s2 = 25, mu0 = 10)) +
geom_vline(xintercept = 10, linetype = "dashed", col = "red") +
ggtitle("Erro tipo II") + xlab(expression(mu)) + ylab(expression(beta(mu)))(e)
## Pode-se afirmar que a medida que o tamanho da amostra aumenta os valores a direita de mu0 ficam menos prováveis.
ggplot(data = data.frame(x = c(0, 60)), aes(x = x)) +
stat_function(fun = erro_tipoII_q2c, args = list(n = 20 , alfa = 0.05, s2 = 25, mu0 = 30), color = "red") +
stat_function(fun = erro_tipoII_q2c, args = list(n = 30 , alfa = 0.05, s2 = 25, mu0 = 30), color = "black") +
stat_function(fun = erro_tipoII_q2c, args = list(n = 50 , alfa = 0.05, s2 = 25, mu0 = 30), color = "green") +
stat_function(fun = erro_tipoII_q2c, args = list(n = 100, alfa = 0.05, s2 = 25, mu0 = 30), color = "blue") +
geom_vline(xintercept = 30, linetype = "dashed", col = "red") +
ggtitle("Erro tipo II") + xlab(expression(mu)) + ylab(expression(beta(mu)))(f)
ggplot(data = data.frame(x = c(0, 60)), aes(x = x)) +
stat_function(fun = erro_tipoII_q2c, args = list(n = 20, alfa = 0.01, s2 = 25, mu0 = 30), color = "red") +
stat_function(fun = erro_tipoII_q2c, args = list(n = 20, alfa = 0.05, s2 = 25, mu0 = 30), color = "black") +
stat_function(fun = erro_tipoII_q2c, args = list(n = 20, alfa = 0.07, s2 = 25, mu0 = 30), color = "green") +
stat_function(fun = erro_tipoII_q2c, args = list(n = 20, alfa = 0.10, s2 = 25, mu0 = 30), color = "blue") +
geom_vline(xintercept = 30, linetype = "dashed", col = "red") +
ggtitle("Erro tipo II") + xlab(expression(mu)) + ylab(expression(beta(mu)))(g)
poder_q2 <- function(n, alfa, s2, mu0, mu){
## Região Crítica
k = sqrt(s2/n)*qnorm(1-alfa)
x_critico = mu0 + k
## Padronizando e calculando probabilidade
z = (x_critico - mu) / sqrt(s2/n)
return(pnorm(z, lower.tail = F))
}
poder_q2(1000, 0.05, 25, 500, 500)## [1] 0.05
## Plotando a função
ggplot(data = data.frame(x = c(0,20)), aes(x = x)) +
stat_function(fun = poder_q2, args = list(n = 20, alfa = 0.05, s2 = 25, mu0 = 10)) +
geom_vline(xintercept = 10, linetype = "dashed", col = "red") +
ggtitle("Erro tipo II") + xlab(expression(mu)) + ylab(expression(pi(mu)))Questão 3
base_3 <- readRDS("Lista 05/BaseGenero.rds")(a)
## H0: mu = 70
## H1: mu > 70
## Sim, com base no nível de significância de 5%, há evidências de que o pesquisador está certo.
base_3 %>% filter(Sexo=="Homem") %>% select(Peso) %>%
t.test(alternativa = "greater", mu = 70) ##
## One Sample t-test
##
## data: .
## t = 13.065, df = 24, p-value = 2.107e-12
## alternative hypothesis: true mean is not equal to 70
## 95 percent confidence interval:
## 79.31101 82.80456
## sample estimates:
## mean of x
## 81.05778
(b)
## H0: mu = 30
## H1: mu < 30
## Não, com base no nível de significância de 1% há evidências de que o pesquisador está errado.
TH <- function(x, mu0, alfa){
amostra = na.omit(x)
n = length(amostra)
## Supondo que n é grande o suficiente
s2 = var(amostra)
k = sqrt(s2/n) * qt(alfa, n-1, lower.tail = F)
x_critico = mu0 - k
cat(
"RC = [", -Inf, " ; ", x_critico, "]", sep = ""
)
}
base_3 %>% filter(Sexo=="Homem") %>% select(Idade) %>% pull %>% TH(30, 0.01)## RC = [-Inf ; 27.73446]
(c)
## H0: mu = 20
## H1: mu =/= 20
## Rejeita h0; Sim, com base no nível de significância de 3% há evidências de que o pesquisador está correto.
base_3 %>% filter(Sexo=="Mulher") %>% select(Idade) %>% t.test(conf.level = 0.99, alternativa = "two.sided", mu = 20)##
## One Sample t-test
##
## data: .
## t = 6.5822, df = 19, p-value = 2.667e-06
## alternative hypothesis: true mean is not equal to 20
## 99 percent confidence interval:
## 22.96809 27.53191
## sample estimates:
## mean of x
## 25.25
(d)
## H0: p = 65
## H1: p > 65
## Com base nos dados e adotando um nível de significância de 5%, não rejeitamos H0, ou seja, há evidência de que a proporção de mulheres com peso superior a 70kg não é superior a 65%.
amos <- base_3 %>% filter(Sexo=="Mulher") %>% select(Peso) %>% pull
proporcao = ifelse(amos>70, 1, 0)
prop.test(sum(proporcao), length(proporcao), alternative = "greater", p = 0.65, correct = F)##
## 1-sample proportions test without continuity correction
##
## data: sum(proporcao) out of length(proporcao), null probability 0.65
## X-squared = 14.066, df = 1, p-value = 0.9999
## alternative hypothesis: true p is greater than 0.65
## 95 percent confidence interval:
## 0.1273772 1.0000000
## sample estimates:
## p
## 0.25
Questão 4
(a)
t.test()
(b)
t.test()
(c)
t.test()
(d)
prop.test()
Questão 5
erro_tipoII <- function(n, p0, p, alfa){
## Região Crítica
pzin = sqrt(p0*(1-p0)/n) * qnorm(alfa, lower.tail = F)
p_critico = p0 + pzin
## Probabilidade
return(
1-pnorm(p_critico, p, sqrt(p*(1-p)/n), lower.tail = F )
)
}## Gráfico da função
ggplot(data.frame(x = c(0,1)), aes(x = x)) +
stat_function(fun = erro_tipoII, args = list(n = 20, p0 = 0.65, alfa = 0.05))Questão 6
poder <- function(n, p0, p, alfa){
## Região Crítica
pzin = sqrt(p0*(1-p0)/n) * qnorm(alfa, lower.tail = F)
LI = p0 - pzin
LS = p0 + pzin
## Probabilidade
z1 = (LI - p)/sqrt(p*(1-p)/n)
z2 = (LS - p)/sqrt(p*(1-p)/n)
return(
pnorm(z1) + pnorm(z2, lower.tail = F)
)
}## Gráfico da função
ggplot(data.frame(x = c(0,1)), aes(x = x)) +
stat_function(fun = poder, args = list(n = 20, p0 = 0.65, alfa = 0.05))