Materiais de apoio
Atividades síncronas no google meet (dia & horários no Guia de Estudos)
Exemplo de resolução de exercício com fórmulas no R Markdown:
Exemplo de relatório - para iniciar os trabalhos em R markdown:
Diário de bordo dos encontros síncronos (contém a descrição detalhada de cada aula síncrona): verificar no fórum do AVA (somente alunos da disciplina podem acessar)
Grupo de Whats App link de convite no AVA
#install.packages("tidyverse")
#install.packages("panelr")
#install.packages("corrplot")
#install.packages("DT")
#devtools::install_github("haozhu233/kableExtra") #constrói tabelas, instala o pacote a partir do github de um usuário
library(tidyverse)
library(dplyr)
library(panelr)
library(corrplot)
library(DT)
library(kableExtra)
#pacotes adicionais, se não tiver instalado, deve instalar:
library(reshape2)
library(car)
library(dummies)
library(gridExtra)
library(ggpubr) #pacote adicional de gráficos
library(rstatix) #pacote com função para identificar outliers
#estes pacotes é para numerar as tabelas
library(captioner)
Dicionário de pacotes: (para esta disciplina)
Os dados longitudinais, às vezes chamados de dados de painel, rastreiam a mesma amostra em pontos diferentes no tempo. A amostra pode consistir em indivíduos, famílias, estabelecimentos e assim por diante.
Estudos Transversais: as medições são feitas em um único momento (foto, ou corte transversal) - em que se avaliam o(s) fatore(s) de risco e o(s) desfecho(s) simultaneamente;
Exemplo: Verifica-se em determinado instante as prevalências de câncer nos grupos de fumantes e de não fumantes;
Coorte:
Exemplos Singer, Nobre & Rocha (2018) IME/USP
Exemplo 1 Dados de Pressão arterial sistólica (mm Hg) - Singer & Magalhães (1998)
dados_ex1=read.table("exemplo_1.2.1.txt",sep=";",head=TRUE)
table_nums <- captioner(prefix = "Tabela")
cap <- table_nums("tab1","Dados de Pressão arterial sistólica (mm Hg)")
datatable(dados_ex1,caption=cap,class = 'cell-border order-column compact hover')
Disposição dos dados longitudinais - Exemplo 1
temp = dados_ex1 %>%
pivot_longer(!Paciente, names_to = "sodio", values_to = "valores")
datatable(temp,class = 'cell-border order-column compact hover')
ggboxplot(temp, x = "sodio", y = "valores",
color = "sodio", palette = c("#00AFBB", "#E7B800"),
order = c("baixo_teor_sodio", "alto_teor_sodio"),
ylab = "valores", xlab = "Niveis")
Figura 1: Boxplot exemplo 1
Para os perfis:
#cria variável dummy pra indicar baixo teor/alto teor sódio
temp = dados_ex1 %>%
pivot_longer(!Paciente, names_to = "sodio", values_to = "valores")
temp = temp %>%
mutate(nivel = ifelse(sodio=="alto_teor_sodio",1,0))
datatable(temp,class = 'cell-border order-column compact hover')
ggplot(temp, aes (x = nivel, y = valores, color = as.factor(Paciente))) +
geom_point() +
geom_line() +
theme(legend.position = "none")
Figura 2: Perfis da pressão arterial sistólica (mm Hg) por níveis de sódio
Teste t pareado para o Exemplo 1
Pelos resultados do teste t pareado, rejeita-se a hipótese nula de igualdade de médias;
Adicionalmente, considerando o teste unilateral, também rejeitamos a hipótese nula.
No entando a verificação de normalidade nos traz alguns desvios de normalidade, indicativo de que devemos recorrer ao teste não paramétrico.
saiba mais sobre Teste t pareado ;
Conclusão: Rejeita-se a hipótese de igualdade entre as médias de pressão arterial para os níveis diferentes de sódio;
Adicionalmente: Também rejeita-se a hipótese de igualdade de médias no teste unilateral a direita;
Importante: Verificação de normalidade das diferenças dos valores de pressão arterial (“alto”-“baixo”)
#com o conjunto de dados original
t.test(dados_ex1$alto_teor_sodio,dados_ex1$baixo_teor_sodio,paired = TRUE, alternative = "two.sided")
##
## Paired t-test
##
## data: dados_ex1$alto_teor_sodio and dados_ex1$baixo_teor_sodio
## t = 2.6567, df = 19, p-value = 0.01558
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 1.060828 8.939172
## sample estimates:
## mean of the differences
## 5
t.test(dados_ex1$alto_teor_sodio,dados_ex1$baixo_teor_sodio, paired = TRUE, alternative = "greater")
##
## Paired t-test
##
## data: dados_ex1$alto_teor_sodio and dados_ex1$baixo_teor_sodio
## t = 2.6567, df = 19, p-value = 0.007788
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
## 1.745689 Inf
## sample estimates:
## mean of the differences
## 5
Outro modo: (verifique o código em R, os resultados serão os mesmos)
#com o conjunto de dados transformado
t.test(valores ~ sodio,paired = TRUE, alternative = "two.sided",data=temp)
t.test(valores ~ sodio, paired = TRUE, alternative = "greater",data=temp)
dif = dados_ex1$alto_teor_sodio-dados_ex1$baixo_teor_sodio
shapiro.test(dif)
##
## Shapiro-Wilk normality test
##
## data: dif
## W = 0.90761, p-value = 0.05741
qqnorm(dif) # QQ-plot
qqline(dif)
Figura 3: Gráfico qqplot de verificação de normalidade
Teste não paramétrico - Wilcoxon pareado para o Exemplo 1:
saiba mais sobre Teste Wilcoxon pareado exemplo de aplicação no R (english) artigo sobre testes não paramétricos
#com o conjunto de dados original
wilcox.test(dados_ex1$alto_teor_sodio,dados_ex1$baixo_teor_sodio, paired= TRUE,alternative = "two.sided")
## Warning in wilcox.test.default(dados_ex1$alto_teor_sodio,
## dados_ex1$baixo_teor_sodio, : cannot compute exact p-value with ties
##
## Wilcoxon signed rank test with continuity correction
##
## data: dados_ex1$alto_teor_sodio and dados_ex1$baixo_teor_sodio
## V = 171, p-value = 0.0143
## alternative hypothesis: true location shift is not equal to 0
wilcox.test(dados_ex1$alto_teor_sodio,dados_ex1$baixo_teor_sodio, paired= TRUE,alternative = "greater")
## Warning in wilcox.test.default(dados_ex1$alto_teor_sodio,
## dados_ex1$baixo_teor_sodio, : cannot compute exact p-value with ties
##
## Wilcoxon signed rank test with continuity correction
##
## data: dados_ex1$alto_teor_sodio and dados_ex1$baixo_teor_sodio
## V = 171, p-value = 0.007152
## alternative hypothesis: true location shift is greater than 0
Outro modo: (verifique o código em R, os resultados serão os mesmos)
#com o conjunto de dados transformado
wilcox.test(valores ~ sodio,paired = TRUE, alternative = "two.sided",data=temp)
wilcox.test(valores ~ sodio, paired = TRUE, alternative = "greater",data=temp)
Exemplo 2 Tempo gasto para calçar meia(s) - Elias & Osake (1998)
Local:Laboratório Experimental de Poluição Atmosférica da Faculdade de Medicina da Universidade de São Paulo;
Objetivo:Avaliar os efeitos de agentes oxidantes no sistema respiratório;
Descrição do experimento:
Observações: Estudo longitudinal com planejamento balanceado em relação ao tempo; presença de dados omissos.
temp=dados_ex3
names(temp)=c("Palato","Concentracao","5","10","15","20","25","30","35")
temp = temp %>%
pivot_longer(!Palato:Concentracao, names_to = "tempo", values_to = "valores",values_drop_na = TRUE)
temp$tempo=as.numeric(temp$tempo)
datatable(temp,class = 'cell-border order-column compact hover')
temp %>%
ggplot(aes(x=as.factor(tempo),y=valores)) +
geom_boxplot()+
facet_wrap(vars(Concentracao),nrow=3)
Figura 4: Boxplot do exemplo 3
Identificando outliers
temp %>%
group_by(tempo,Concentracao) %>%
identify_outliers(valores)
## # A tibble: 6 x 6
## Concentracao tempo Palato valores is.outlier is.extreme
## <int> <dbl> <int> <dbl> <lgl> <lgl>
## 1 1 5 10 1.77 TRUE FALSE
## 2 8 10 21 2.36 TRUE FALSE
## 3 32 10 40 1.43 TRUE FALSE
## 4 8 15 21 2.25 TRUE FALSE
## 5 32 30 42 0.9 TRUE FALSE
## 6 32 35 42 1 TRUE FALSE
Próximos passos: Análise de medidas repetidas - Explorando exemplos
Exemplo 4 Dados de pH da placa bacteriana dentária - Grande, Oliveira, Singer, Santos & Nicolau (1998)
Local:Faculdade de Odontologia da Universidade de São Paulo;
Objetivo:Avaliar o uso contínuo de solução para bochecho no pH da placa bacteriana dentária;
Descrição do experimento:
Objetivo:Avaliar a eficácia de um tratamento para infecção urinária;
Descrição do experimento:
Observações: 1 fator intraunidade amostral - avaliação com três níveis: inicial, 14 dias & 21 dias;
dados_1.2.8=read.table("exemplo_1.2.8.txt",sep=";",head=TRUE)
cap <- table_nums("Exemplo 6","Sensibilidade dentinária pré e pós operatória")
colnames(dados_1.2.8) <- c("Material","Dentina","pré-operatória","Ausente","Presente","Total")
dados_1.2.8 %>%
kbl(caption = cap) %>%
kable_classic(full_width = F, html_font = "Cambria") %>%
add_header_above(c("","","Sensibilidade","Sensibilidade pós-operatória"=3)) %>%
kable_styling(bootstrap_options = c("striped","hold_position"),
full_width = F)
Sensibilidade
|
Sensibilidade pós-operatória
|
||||
---|---|---|---|---|---|
Material | Dentina | pré-operatória | Ausente | Presente | Total |
Single | Seca | Ausente | 22 | 1 | 23 |
Single | Seca | Presente | 3 | 6 | 9 |
Single | Seca | Subtotal | 25 | 7 | 32 |
Single | Umida | Ausente | 12 | 10 | 22 |
Single | Umida | Presente | 7 | 4 | 11 |
Single | Umida | Subtotal | 19 | 14 | 33 |
Prime | Seca | Ausente | 10 | 6 | 16 |
Prime | Seca | Presente | 12 | 3 | 15 |
Prime | Seca | Subtotal | 22 | 9 | 31 |
Prime | Umida | Ausente | 5 | 13 | 18 |
Prime | Umida | Presente | 11 | 3 | 14 |
Prime | Umida | Subtotal | 16 | 16 | 32 |
Exemplo 1.2.3 (página 13) Gráficos de dispersão, sem considerar concentração = 0:
Conclusões:
Correlograma considerando concentração = 0
Correlograma considerando concentração=32
Obtendo os cálculos através das fórmulas na página 25: n_trat é o vetor dos n (unidades amostrais) para cada tratamento
dados_ex3 %>%
group_by (Concentracao) %>%
summarise(n_trat=n()) %>%
ungroup() %>% #volta a ser dataframe
select(n_trat)
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 6 x 1
## n_trat
## <int>
## 1 6
## 2 10
## 3 10
## 4 10
## 5 10
## 6 10
Obtendo os vetores y para cada concentração:
con=c(1,8,16,32,64)
y=list() #cada y[[i]] é uma matriz
i=1
while(i<=length(con)){
y[[i]]<- dados_ex3 %>%
select(-Palato) %>%
filter(Concentracao == con[i]) %>%
select(-Concentracao)
i=i+1
}
y
## [[1]]
## Tempo_5 Tempo_10 Tempo_15 Tempo_20 Tempo_25 Tempo_30 Tempo_35
## 1 1.12 1.22 1.14 1.22 1.46 1.76 1.72
## 2 1.07 1.36 1.49 1.49 1.46 1.39 1.46
## 3 0.84 0.75 0.58 0.59 0.52 0.43 0.57
## 4 1.77 1.28 1.32 1.53 1.30 1.32 1.44
## 5 0.92 1.16 1.06 1.28 0.97 1.28 1.24
## 6 1.27 1.42 1.45 1.59 1.55 1.42 1.53
## 7 1.05 1.09 0.98 1.28 0.98 1.30 1.33
## 8 0.88 1.02 0.82 0.74 0.75 0.75 0.71
## 9 1.13 1.24 1.13 1.10 1.17 0.86 1.06
## 10 0.89 0.84 0.93 1.02 0.93 0.89 0.86
##
## [[2]]
## Tempo_5 Tempo_10 Tempo_15 Tempo_20 Tempo_25 Tempo_30 Tempo_35
## 1 0.81 1.18 0.99 1.08 1.00 1.09 1.09
## 2 1.69 1.62 1.36 1.60 2.00 1.60 1.86
## 3 0.89 0.85 0.88 0.82 0.95 1.09 1.18
## 4 1.10 1.57 1.32 1.56 1.83 1.83 1.86
## 5 1.84 2.36 2.25 2.25 2.05 2.08 2.13
## 6 1.25 1.22 0.88 0.73 0.66 0.58 0.57
## 7 0.90 1.05 0.90 0.88 0.86 0.85 0.92
## 8 1.12 1.06 0.99 0.92 0.91 1.01 1.00
## 9 1.43 1.25 1.19 1.12 1.13 1.12 1.18
## 10 1.26 1.24 1.20 1.13 1.03 1.08 1.13
##
## [[3]]
## Tempo_5 Tempo_10 Tempo_15 Tempo_20 Tempo_25 Tempo_30 Tempo_35
## 1 0.88 0.73 0.61 0.58 0.61 0.48 0.52
## 2 0.87 0.69 0.50 0.42 0.38 0.38 0.44
## 3 1.43 0.98 0.70 0.54 0.43 0.41 0.43
## 4 1.30 1.00 0.67 0.68 0.53 0.67 0.62
## 5 0.92 0.86 0.88 0.85 0.79 0.66 0.82
## 6 1.21 1.01 0.75 0.79 0.69 0.70 0.82
## 7 0.68 0.86 0.86 0.59 0.57 0.61 0.66
## 8 0.75 0.74 0.96 0.87 1.00 0.90 1.14
## 9 0.97 0.84 0.71 0.83 0.67 0.73 0.72
## 10 1.08 1.12 0.86 1.02 0.85 0.90 0.89
##
## [[4]]
## Tempo_5 Tempo_10 Tempo_15 Tempo_20 Tempo_25 Tempo_30 Tempo_35
## 1 0.97 0.67 0.49 0.46 0.38 0.35 0.29
## 2 0.60 0.54 0.71 0.33 0.29 0.27 0.36
## 3 1.37 0.83 0.65 0.56 0.41 0.35 0.40
## 4 1.45 1.43 0.99 0.92 0.58 0.51 0.46
## 5 0.92 0.58 0.39 0.24 0.23 0.29 0.23
## 6 1.12 0.96 0.80 0.71 0.80 0.90 1.00
## 7 0.79 0.84 0.75 0.69 0.53 0.53 0.65
## 8 1.02 1.08 0.92 0.79 0.64 0.62 0.57
## 9 0.83 0.66 0.55 0.54 0.48 0.45 0.54
## 10 0.72 0.48 0.63 0.57 0.63 0.53 0.54
##
## [[5]]
## Tempo_5 Tempo_10 Tempo_15 Tempo_20 Tempo_25 Tempo_30 Tempo_35
## 1 0.12 0.09 0.22 0.11 0.16 0.11 0.09
## 2 0.48 0.48 0.48 0.41 0.33 0.39 0.30
## 3 0.20 0.47 0.27 0.34 0.26 0.30 0.44
## 4 0.79 0.74 0.86 0.63 0.67 0.86 0.92
## 5 0.38 0.66 0.94 0.84 0.82 0.88 0.89
## 6 0.94 0.84 0.64 0.53 0.48 0.50 0.50
## 7 0.17 0.54 0.67 0.66 0.66 0.81 0.96
## 8 0.96 1.01 1.23 0.93 0.87 0.81 0.81
## 9 0.62 0.90 0.81 0.86 0.66 0.84 0.78
## 10 0.23 0.40 0.25 0.16 0.27 0.27 0.47
Correlograma considerando amostra combinada (pooled) - Matriz de covariâncias amostrais combinada (pooled) obtida com a eliminação do grupo avaliado sob a concentração 0 µM (em que há observações omissas) é:
M_t <- dados_ex3 %>%
select(-Palato) %>%
filter(Concentracao != 0) %>%
select(-Concentracao)
M_t <- cor(M_t)
corrplot.mixed(M_t,lower = "circle", upper = "number")
Disposição de dados longitudinais
library(knitr)
#devtools::install_github("haozhu233/kableExtra")
library(kableExtra)
tabela <- data.frame(
un = c("1","1","...","1","2","2","...","2","n","n","...","n"),
Resposta = c("$y_{11}$","$y_{12}$","...","$y_{1m_1}$",
"$y_{21}$","$y_{22}$","...","$y_{2m_2}$",
"$y_{n1}$","$y_{n2}$","...","$y_{nm_n}$"),
Tempo = c("$t_{11}$","$t_{12}$","...","$t_{1m_1}$",
"$t_{21}$","$t_{22}$","...","$t_{2m_2}$",
"$t_{n1}$","$t_{n2}$","...","$t_{nm_n}$"),
Covariavel_X = c("$x_1$","$x_1$","...","$x_1$",
"$x_2$","$x_2$","...","$x_2$",
"$x_n$","$x_n$","...","$x_n$"),
Covariavel_W = c("$w_1$","$w_1$","...","$w_1$",
"$w_2$","$w_2$","...","$w_2$",
"$w_n$","$w_n$","...","$w_n$"),
Covariavel_V = c("$v_1$","$v_1$","...","$v_1$",
"$v_2$","$v_2$","...","$v_2$",
"$v_n$","$v_n$","...","$v_n$"),
Covariavel_Z = c("$z_1$","$z_1$","...","$z_1$",
"$z_2$","$z_2$","...","$z_2$",
"$z_n$","$z_n$","...","$z_n$"))
colnames(tabela) <- c("amostral", "Resposta","Tempo","X","W","V","Z")
cap = table_nums("Tabela","Disposição dos dados longitudinais")
tabela %>%
kbl(caption = cap) %>%
kable_classic(full_width = F, html_font = "Cambria") %>%
kable_styling(bootstrap_options = c("striped","hold_position"),
full_width = F)%>%
add_header_above(c("Unidade","","","Covariaveis"=4))
Unidade
|
Covariaveis
|
|||||
---|---|---|---|---|---|---|
amostral | Resposta | Tempo | X | W | V | Z |
1 | \(y_{11}\) | \(t_{11}\) | \(x_1\) | \(w_1\) | \(v_1\) | \(z_1\) |
1 | \(y_{12}\) | \(t_{12}\) | \(x_1\) | \(w_1\) | \(v_1\) | \(z_1\) |
… | … | … | … | … | … | … |
1 | \(y_{1m_1}\) | \(t_{1m_1}\) | \(x_1\) | \(w_1\) | \(v_1\) | \(z_1\) |
2 | \(y_{21}\) | \(t_{21}\) | \(x_2\) | \(w_2\) | \(v_2\) | \(z_2\) |
2 | \(y_{22}\) | \(t_{22}\) | \(x_2\) | \(w_2\) | \(v_2\) | \(z_2\) |
… | … | … | … | … | … | … |
2 | \(y_{2m_2}\) | \(t_{2m_2}\) | \(x_2\) | \(w_2\) | \(v_2\) | \(z_2\) |
n | \(y_{n1}\) | \(t_{n1}\) | \(x_n\) | \(w_n\) | \(v_n\) | \(z_n\) |
n | \(y_{n2}\) | \(t_{n2}\) | \(x_n\) | \(w_n\) | \(v_n\) | \(z_n\) |
… | … | … | … | … | … | … |
n | \(y_{nm_n}\) | \(t_{nm_n}\) | \(x_n\) | \(w_n\) | \(v_n\) | \(z_n\) |
Bibliografia Básica
Bibliografia Complementar
Referências dos dados ao longo do texto