Tutorial produzido com base nas aulas da disciplina “Estatística Aplicada a Psicobiologia II - 2023”, ministrada pelo Professor Altay Lino de Souza e oferecida pelo Departamento de Psicobiologia da UNIFESP.
As aulas são gravadas e disponibilizadas gratuitamente por meio de lives no canal Cientística & Podcast Naruhodo do YouTube. Destacando aqui o agradecimento mais do que especial para a Maria Lucia Oliveira De Souza Formigoni, por tornar possível a disciplina.
Este tutorial tem como objetivo oferecer uma introdução prática à análise estatística de dados no R, utilizando o conjunto de dados “new drug respiratory&pulse” como exemplo. O público-alvo abrange estudantes de Estatística Aplicada a Psicobiologia II, pesquisadores e profissionais de estatística, psicobiologia ou áreas relacionadas que buscam aprimorar suas habilidades em análise de dados. É recomendado ter conhecimento básico em estatística, particularmente Estatística Aplicada a Psicobiologia I, e alguma familiaridade com o ambiente R para acompanhar este tutorial. Ao longo do tutorial, abordaremos a transformação de dados, testes de esfericidade, modelos lineares de medidas repetidas (GLE e LE), Generalized Estimating Equations (GEE) e Generalized Mixed Models (GMM), fornecendo uma compreensão completa dos princípios estatísticos subjacentes.
Você vai precisar do R e do Rstudio!
Download do
R
Download do Rstudio
Depois de tudo instalado e sem mais delongas, vamos resolver os exercícios da Lista 1!
Criar um projeto separado para cada projeto no R é uma prática recomendada porque mantém o ambiente organizado, evita conflitos entre projetos, facilita a colaboração, e torna a reprodução e compartilhamento de trabalho mais eficientes.
Para criar um novo projeto no R, siga estes passos simples:
Abra o RStudio ou o ambiente R de sua preferência.
Vá até a guia “File” (Arquivo) e selecione “New Project” (Novo Projeto).
Escolha um diretório para o seu projeto, onde todas as pastas e arquivos relacionados a ele serão armazenados. Isso ajudará na organização.
Clique em “Create Project” (Criar Projeto).
Agora, você terá um novo projeto configurado. Qualquer arquivo que você deseje usar para o tutorial deve ser colocado dentro da pasta desse projeto. Isso garantirá que todos os caminhos e referências aos arquivos sejam relativos ao diretório do projeto, facilitando a portabilidade e compartilhamento do tutorial.
Com esses passos, você terá um ambiente de projeto limpo e organizado para trabalhar com seus arquivos e conduzir seu tutorial no R.
Faça o download do arquivo compactado abaixo.
Download lista1_parcial.zipLembre-se de descompactar os três arquivos na mesma pasta do projeto que você acabou de criar!
O arquivo compactado contém:
bd_New drug_respiratory&pulse.sav: Este é o
arquivo de banco de dados que será usado ao longo do tutorial. Ele
contém os dados que serão analisados e explorados durante os
exercícios.
lista1_parcial.R: Este arquivo .R contém o script
parcialmente preenchido, projetado para ajudá-lo a praticar e estudar os
códigos abordados no tutorial. Você pode usar este script como um guia
interativo para aprender e executar análises estatísticas no R.
A "Lista de Exercícios 1" é parte do tutorial e
prática relacionados ao conjunto de dados “new drug
respiratory&pulse”. O objetivo principal desta lista de exercícios é
proporcionar uma compreensão prática de como realizar testes
estatísticos no software R. Esta lista contém três exercícios
distintos:
Verificar o efeito do tempo e do grupo (new drug x placebo) sobre os níveis respiratório e de pulso dos pacientes usando um GLM de medidas repetidas e documentar apenas as tabelas mais relevantes da análise.
Verificar o efeito do tempo e do grupo (new drug x placebo) sobre os níveis respiratório e de pulso dos pacientes usando Generalized Estimating Equations (GEE) e documentar apenas as tabelas mais relevantes da análise. Também é necessário realizar a transposição do banco de dados (Data, Restructure).
Verificar o efeito do tempo e do grupo (new drug x placebo) sobre os níveis respiratório e de pulso dos pacientes usando General Mixed Models (GMM) e documentar apenas as tabelas mais relevantes da análise. Também é necessário realizar a transposição do banco de dados (Data, Restructure).
Vamos começar carregando o conjunto de dados original e realizando algumas transformações para tornar possível nossas análises.
# Carregando os dados originais
original_wide = read.spss("bd_New drug_respiratory&pulse.sav", to.data.frame=TRUE)
## re-encoding from CP1252
head(original_wide)
## drug resp1 resp2 resp3 pulse1 pulse2 pulse3
## 1 New Drug 3.4 3.3 3.3 2.2 2.1 2.1
## 2 New Drug 3.4 3.4 3.3 2.2 2.1 2.2
## 3 New Drug 3.3 3.4 3.4 2.3 2.4 2.3
## 4 New Drug 3.4 3.4 3.4 2.3 2.4 2.3
## 5 New Drug 3.3 3.4 3.3 2.2 2.2 2.4
## 6 New Drug 3.3 3.3 3.3 2.0 2.1 2.4
O código fornecido tem como objetivo carregar um conjunto de dados a partir de um arquivo SPSS chamado “bd_New drug_respiratory&pulse.sav” e exibir as primeiras linhas desse conjunto de dados.
original_wide = read.spss("bd_New drug_respiratory&pulse.sav", to.data.frame=TRUE):
Esta linha de código utiliza a função read.spss para ler o
arquivo SPSS “bd_New drug_respiratory&pulse.sav” e convertê-lo em um
objeto de data frame do R. A opção to.data.frame=TRUE
especifica que queremos que os dados sejam armazenados em um data
frame.
head(original_wide): Após a leitura do conjunto de
dados, esta linha de código utiliza a função head para
mostrar as primeiras linhas do data frame original_wide.
Isso ajuda a visualizar rapidamente os dados e verificar sua
estrutura.
Para tornar possível algumas análises, precisamos transformar o banco de dados de formato “wide” para “long”. Isso nos permitirá realizar análises de medidas repetidas.
# Renomeando colunas
bd <- original_wide %>%
rename_with(~gsub("(resp|pulse)(\\d+)", "\\1_\\2", .), -drug) %>%
mutate(ID = row_number()) %>%
dplyr::select(ID, everything())
head(bd)
## ID drug resp_1 resp_2 resp_3 pulse_1 pulse_2 pulse_3
## 1 1 New Drug 3.4 3.3 3.3 2.2 2.1 2.1
## 2 2 New Drug 3.4 3.4 3.3 2.2 2.1 2.2
## 3 3 New Drug 3.3 3.4 3.4 2.3 2.4 2.3
## 4 4 New Drug 3.4 3.4 3.4 2.3 2.4 2.3
## 5 5 New Drug 3.3 3.4 3.3 2.2 2.2 2.4
## 6 6 New Drug 3.3 3.3 3.3 2.0 2.1 2.4
Os códigos fornecidos têm como objetivo renomear colunas e transformar um conjunto de dados de formato “wide” para “long”, onde uma expressão regular está sendo utilizada para facilitar esse processo.
Uma expressão regular, ou regex, é uma sequência de caracteres que define um padrão de busca em texto, permitindo operações avançadas de busca e manipulação. Elas são amplamente usadas na programação para validação, extração e transformação de dados em texto.
No primeiro trecho de código, estamos renomeando as colunas do
conjunto de dados original_wide. Aqui, a expressão regular
(resp|pulse)(\\d+) está sendo usada na função
gsub. Vamos explicar essa expressão regular:
(resp|pulse): Isso corresponde à palavra “resp” OU
“pulse”. O operador | atua como uma escolha, permitindo que
corresponda a uma das duas palavras.
(\\d+): Isso corresponde a um ou mais dígitos
numéricos. O \\d+ é usado para extrair os números que
seguem “resp” ou “pulse”.
A expressão regular (resp|pulse)(\\d+) funciona para
identificar colunas com nomes como “resp1”, “resp2”, “pulse1”, “pulse2”
etc. A função gsub substitui esses nomes de colunas por um
novo formato, onde mantém “resp” ou “pulse” e adiciona o número
correspondente. Por exemplo, “resp1” será renomeado para “resp_1”,
“pulse2” será renomeado para “pulse_2” e assim por diante.
Isso é útil para o próximo passo porque torna mais fácil identificar e separar os dados de resp e pulse em diferentes colunas. Além disso, os números extraídos da expressão regular serão usados para criar a variável “Tempo”, que indicará as medidas repetidas ao longo do tempo.
# Transformando em formato long
bd_long = pivot_longer(
bd,
cols = resp_1:pulse_3,
names_to = c(".value", "Tempo"),
names_pattern = "(.+)_(.+)")
head(bd_long)
## # A tibble: 6 × 5
## ID drug Tempo resp pulse
## <int> <fct> <chr> <dbl> <dbl>
## 1 1 New Drug 1 3.4 2.2
## 2 1 New Drug 2 3.3 2.1
## 3 1 New Drug 3 3.3 2.1
## 4 2 New Drug 1 3.4 2.2
## 5 2 New Drug 2 3.4 2.1
## 6 2 New Drug 3 3.3 2.2
No segundo trecho de código, estamos usando a função
pivot_longer para transformar o conjunto de dados
bd de formato “wide” para “long”. A opção
names_pattern usa a expressão regular (.)_(.)
para dividir os nomes das colunas em duas partes:
(.+): Isso corresponde a qualquer sequência de
caracteres, representando os nomes originais das colunas.
_(.+): Isso corresponde ao caractere sublinhado “_”
seguido de qualquer sequência de caracteres. Essa parte será usada para
identificar os valores correspondentes nas colunas no formato
“long”.
Portanto, a expressão regular (.)_(.) ajuda a extrair
informações dos nomes das colunas originais e organizá-las adequadamente
no formato “long” do conjunto de dados bd_long, onde a
primeira parte é armazenada na coluna "Tempo" e a segunda
parte é usada para identificar os valores correspondentes na coluna
"valor" (geralmente representada como .value
no R).
# Suponha que sua variável "Tempo" esteja em um dataframe chamado "seu_data_frame"
bd_long$Tempo <- factor(bd_long$Tempo)
O código assume que a variável "Tempo" está no dataframe
chamado "bd_long". Ele usa a função factor()
para converter a variável “Tempo” em uma variável categórica. A
conversão para uma variável categórica é útil quando você deseja tratar
“Tempo” como uma variável de fator com níveis distintos em vez de uma
variável numérica contínua. Essa transformação pode ser útil em análises
estatísticas que envolvam categorias ou grupos de tempo, como em modelos
de medidas repetidas.
Vamos verificar a esfericidade da variável “pulse” usando o teste de Mauchly.
pulse_mauchly = anova_test(data = bd_long, dv = pulse, wid = ID, within = Tempo)
pulse_mauchly
## ANOVA Table (type III tests)
##
## $ANOVA
## Effect DFn DFd F p p<.05 ges
## 1 Tempo 2 22 3.48 0.049 * 0.024
##
## $`Mauchly's Test for Sphericity`
## Effect W p p<.05
## 1 Tempo 0.781 0.29
##
## $`Sphericity Corrections`
## Effect GGe DF[GG] p[GG] p[GG]<.05 HFe DF[HF] p[HF] p[HF]<.05
## 1 Tempo 0.82 1.64, 18.04 0.061 0.945 1.89, 20.78 0.052
Os códigos fornecidos têm como objetivo realizar um teste de Mauchly
para verificar a esfericidade da variável “pulse” em um conjunto de
dados no formato longo (bd_long). Vamos explicar o que cada
linha de código faz:
pulse_mauchly = anova_test(data = bd_long, dv = pulse, wid = ID, within = Tempo):
Esta linha de código executa o teste de Mauchly para verificar a
esfericidade da variável “pulse”. A função anova_test é
usada para realizar esse teste. Os argumentos passados para a função
são:
data: O conjunto de dados no formato longo
(bd_long), onde os dados estão organizados em formato
apropriado para análises de medidas repetidas.
dv: A variável dependente sendo analisada, que neste
caso é “pulse”.
wid: A variável de identificação única
(ID), que indica quais observações pertencem ao mesmo
sujeito.
within: A variável categórica que representa o fator
dentro dos sujeitos, neste caso, “Tempo”.
pulse_mauchly: Esta linha de código armazena os
resultados do teste de Mauchly na variável pulse_mauchly.
Os resultados incluem estatísticas relacionadas à esfericidade e os
valores associados (valor-p).
O teste de Mauchly é comumente usado para verificar se a suposição de esfericidade das variâncias das diferenças entre todas as combinações de condições relacionadas (ou níveis de grupo) é atendida. O valor-p resultante do teste de Mauchly indica se a esfericidade é satisfeita. Se o valor-p for maior que um nível de significância escolhido (geralmente 0,05), a esfericidade é considerada como cumprida, o que significa que não é necessário realizar correções nos resultados das análises de medidas repetidas. No entanto, se o valor-p for menor que o nível de significância, a esfericidade é violada, e correções, como a correção de Greenhouse-Geisser ou Huynh-Feldt, podem ser aplicadas para lidar com a violação da esfericidade.
Da mesma forma, vamos verificar a esfericidade da variável “resp” usando o teste de Mauchly.
resp_mauchly = anova_test(data = bd_long, dv = resp, wid = ID, within = Tempo)
resp_mauchly
## ANOVA Table (type III tests)
##
## $ANOVA
## Effect DFn DFd F p p<.05 ges
## 1 Tempo 2 22 0.344 0.713 0.01
##
## $`Mauchly's Test for Sphericity`
## Effect W p p<.05
## 1 Tempo 0.501 0.032 *
##
## $`Sphericity Corrections`
## Effect GGe DF[GG] p[GG] p[GG]<.05 HFe DF[HF] p[HF] p[HF]<.05
## 1 Tempo 0.667 1.33, 14.68 0.629 0.725 1.45, 15.94 0.646
Falta realizar a correção greenhouse e explicar
Descrição do General Linear Model (GLM) para Medidas
Repetidas:
O GLM para medidas repetidas é uma técnica estatística que permite
analisar dados em que as mesmas unidades (sujeitos ou grupos) são
medidas em várias ocasiões ou sob diferentes condições. Ele é usado para
investigar como as mudanças nas variáveis dependentes são afetadas por
fatores independentes, levando em consideração a estrutura repetida dos
dados.
Pressupostos do GLM para Medidas Repetidas:
Os pressupostos comuns do GLM para medidas repetidas incluem:
Esfericidade: Assume-se que a matriz de variância-covariância das diferenças entre os níveis de um fator (ou condição) seja aproximadamente igual, o que é chamado de “esfericidade.” A falta de esfericidade pode afetar os resultados.
Normalidade dos resíduos: Como em muitas análises estatísticas, assume-se que os resíduos seguem uma distribuição normal.
Linearidade: A relação entre as variáveis independentes e dependentes deve ser linear.
Vantagens do GLM para Medidas Repetidas:
Leva em consideração a estrutura repetida dos dados: Esse modelo é especialmente útil quando você tem medidas repetidas dentro dos mesmos sujeitos ou grupos.
Permite investigar efeitos ao longo do tempo ou condições: É adequado para estudar como as mudanças em uma variável dependente são afetadas por fatores independentes em várias ocasiões ou condições.
Pode incluir fatores interativos: É possível analisar interações entre fatores em um design experimental de medidas repetidas.
Desvantagens do GLM para Medidas Repetidas:
Sensibilidade à violação da sphericity: A falta de sphericity pode levar a resultados imprecisos, e correções como a correção de Greenhouse-Geisser podem ser necessárias.
Complexidade da interpretação: Em designs com muitos níveis de fatores ou interações, a interpretação dos resultados pode se tornar complexa.
Requer planejamento cuidadoso: A coleta de dados em um design de medidas repetidas requer planejamento cuidadoso e consideração dos efeitos de confusão.
Situações em que usar o GLM para Medidas Repetidas:
Experimentos com medidas repetidas: É apropriado para análise de experimentos onde as mesmas unidades são medidas em várias ocasiões ou sob diferentes condições.
Estudos longitudinais: É útil para analisar dados longitudinais em que as mesmas medidas são coletadas em intervalos de tempo diferentes.
Avaliação de tratamentos ou intervenções ao longo do tempo: Permite avaliar como um tratamento ou intervenção afeta as mudanças nas variáveis dependentes ao longo do tempo.
O GLM para medidas repetidas é uma ferramenta poderosa para análise de dados com estrutura repetida, mas requer atenção aos pressupostos e planejamento adequado para a coleta de dados. É amplamente utilizado em pesquisas nas áreas de psicologia, medicina, ciências sociais e outras disciplinas onde medidas repetidas são comuns.
Modelagem flexível: O GLM permite modelar e analisar experimentos com medidas repetidas de forma mais flexível. Você pode incluir múltiplos fatores independentes (variáveis independentes) em um único modelo e estudar suas interações, o que é especialmente útil em experimentos complexos.
Tratamento de dados desequilibrados: O GLM pode lidar eficazmente com desequilíbrio nas amostras ou tamanhos diferentes de grupos, o que é comum em experimentos do mundo real. A ANOVA tradicional é mais sensível a desequilíbrio.
Modelagem de covariáveis: O GLM permite incorporar covariáveis (variáveis de controle) em sua análise para controlar o efeito de variáveis que não são o foco principal do estudo. Isso melhora a precisão das estimativas dos efeitos de interesse.
Correções para violações de pressupostos: Quando os pressupostos da ANOVA, como a homogeneidade de variâncias ou normalidade dos resíduos, são violados, o GLM oferece opções para corrigir ou lidar com essas violações, tornando os resultados mais robustos.
Modelagem de medidas contínuas e categóricas: O GLM pode acomodar variáveis dependentes contínuas e categóricas (nominais ou ordinais), o que é útil em situações em que a variável dependente é de natureza diferente.
Maior poder estatístico: O GLM pode ser mais poderoso do que a ANOVA em situações em que as medidas repetidas têm alta correlação entre si, permitindo detectar diferenças significativas mesmo com tamanhos de amostra menores.
Análise de interações complexas: O GLM é especialmente eficaz na análise de interações complexas entre fatores independentes em designs experimentais com medidas repetidas, o que é difícil de realizar com a ANOVA.
Vamos ajustar o seguinte modelo de medidas repetidas para a variável dependente “resp”:
\[ resp = \beta_0 + \beta_1drug + \beta_2Tempo + \beta_3drug*Tempo + \varepsilon \]
# Ajustando o modelo
modelo1_resp = lm(resp ~ drug + Tempo + drug*Tempo, data = bd_long)
summary(modelo1_resp)
##
## Call:
## lm(formula = resp ~ drug + Tempo + drug * Tempo, data = bd_long)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.15000 -0.05000 -0.03333 0.05000 0.15000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.350e+00 2.635e-02 127.124 < 2e-16 ***
## drugPlacebo -1.167e-01 3.727e-02 -3.130 0.00387 **
## Tempo2 1.667e-02 3.727e-02 0.447 0.65793
## Tempo3 -1.667e-02 3.727e-02 -0.447 0.65793
## drugPlacebo:Tempo2 1.904e-15 5.270e-02 0.000 1.00000
## drugPlacebo:Tempo3 3.333e-02 5.270e-02 0.632 0.53188
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.06455 on 30 degrees of freedom
## Multiple R-squared: 0.4559, Adjusted R-squared: 0.3652
## F-statistic: 5.027 on 5 and 30 DF, p-value: 0.001836
Como houve diferença apenas entre os grupos que receberam a droga e o placebo, não vamos realizar o post hoc
Agora vamos fazer um plot do histograma dos resíduos do modelo
visualize(modelo1_resp, plot = "residuals")
O código visualize(modelo1_resp, plot = "residuals")
utiliza a função visualize do pacote flexplot
para criar um gráfico de visualização dos resíduos do modelo estatístico
denominado modelo1_resp. Esse gráfico permite avaliar a
distribuição e padrões dos resíduos, ajudando na verificação das
suposições do modelo, como homogeneidade de variância e normalidade dos
resíduos, o que é fundamental na análise estatística.
Agora vamos fazer um plot do modelo.
visualize(modelo1_resp, plot = "model")
O código visualize(modelo1_resp, plot = "model") usa a
função visualize do pacote flexplot para criar
um gráfico que visualiza o modelo estatístico denominado
modelo1_resp. Este gráfico é uma representação visual do
modelo, ajudando a compreender a relação entre as variáveis
independentes e a variável dependente no contexto da análise estatística
em questão. Isso pode ser útil para a interpretação e compreensão do
modelo estatístico.
Agora, ajustaremos o mesmo modelo para a variável dependente “pulse”:
\[ pulse= \beta_0 + \beta_1drug + \beta_2Tempo + \beta_3drug*Tempo + \varepsilon \]
# Ajustando o modelo
modelo1_pulse = glm(pulse ~ drug + Tempo + drug*Tempo, data = bd_long)
summary(modelo1_pulse)
##
## Call:
## glm(formula = pulse ~ drug + Tempo + drug * Tempo, data = bd_long)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.20000 0.04389 50.131 < 2e-16 ***
## drugPlacebo 0.46667 0.06206 7.519 2.21e-08 ***
## Tempo2 0.01667 0.06206 0.269 0.790
## Tempo3 0.08333 0.06206 1.343 0.189
## drugPlacebo:Tempo2 0.13333 0.08777 1.519 0.139
## drugPlacebo:Tempo3 0.03333 0.08777 0.380 0.707
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.01155556)
##
## Null deviance: 2.89889 on 35 degrees of freedom
## Residual deviance: 0.34667 on 30 degrees of freedom
## AIC: -50.981
##
## Number of Fisher Scoring iterations: 2
Descrição dos resultados
Agora vamos fazer um plot do histograma dos resíduos do modelo
visualize(modelo1_pulse, plot = "residuals")
Agora vamos fazer um plot do modelo.
visualize(modelo1_pulse, plot = "model")
Descrever resultados
Realizaremos uma análise usando Generalized Estimating Equations (GEE) para a variável “resp”.
# Ajustando o modelo GEE para "resp"
modelo_gee_resp <- geeglm(resp ~ drug + Tempo + drug*Tempo,
data = bd_long,
id = ID,
family = gaussian,
corstr = "unstructured")
summary(modelo_gee_resp)
##
## Call:
## geeglm(formula = resp ~ drug + Tempo + drug * Tempo, family = gaussian,
## data = bd_long, id = ID, corstr = "unstructured")
##
## Coefficients:
## Estimate Std.err Wald Pr(>|W|)
## (Intercept) 3.350e+00 2.041e-02 26934.000 < 2e-16 ***
## drugPlacebo -1.167e-01 2.805e-02 17.294 3.2e-05 ***
## Tempo2 1.667e-02 2.805e-02 0.353 0.552
## Tempo3 -1.667e-02 2.805e-02 0.353 0.552
## drugPlacebo:Tempo2 4.022e-18 3.967e-02 0.000 1.000
## drugPlacebo:Tempo3 3.333e-02 5.693e-02 0.343 0.558
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation structure = unstructured
## Estimated Scale Parameters:
##
## Estimate Std.err
## (Intercept) 0.003472 0.0007618
## Link = identity
##
## Estimated Correlation Parameters:
## Estimate Std.err
## alpha.1:2 -9.252e-18 0.19596
## alpha.1:3 -2.400e-01 0.27321
## alpha.2:3 7.600e-01 0.09074
## Number of clusters: 12 Maximum cluster size: 3
Agora vamos fazer um plot do histograma dos resíduos do modelo
#visualize(modelo_gee_resp, plot = "residuals")
Agora vamos fazer um plot do modelo.
visualize(modelo_gee_resp, plot = "model")
Descrever resultados
Agora, realizaremos uma análise GEE para a variável “pulse”.
# Ajustando o modelo GEE para "pulse"
modelo_gee_pulse <- geeglm(pulse ~ drug + Tempo + drug*Tempo,
data = bd_long,
id = ID,
family = gaussian,
corstr = "unstructured")
summary(modelo_gee_pulse)
##
## Call:
## geeglm(formula = pulse ~ drug + Tempo + drug * Tempo, family = gaussian,
## data = bd_long, id = ID, corstr = "unstructured")
##
## Coefficients:
## Estimate Std.err Wald Pr(>|W|)
## (Intercept) 2.2000 0.0408 2904.00 <2e-16 ***
## drugPlacebo 0.4667 0.0509 84.00 <2e-16 ***
## Tempo2 0.0167 0.0366 0.21 0.6492
## Tempo3 0.0833 0.0684 1.49 0.2230
## drugPlacebo:Tempo2 0.1333 0.0419 10.11 0.0015 **
## drugPlacebo:Tempo3 0.0333 0.0877 0.14 0.7038
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation structure = unstructured
## Estimated Scale Parameters:
##
## Estimate Std.err
## (Intercept) 0.00963 0.00168
## Link = identity
##
## Estimated Correlation Parameters:
## Estimate Std.err
## alpha.1:2 0.721 0.169
## alpha.1:3 -0.288 0.208
## alpha.2:3 0.115 0.267
## Number of clusters: 12 Maximum cluster size: 3
Agora vamos fazer um plot do histograma dos resíduos do modelo
#visualize(modelo_gee_pulse, plot = "residuals")
Agora vamos fazer um plot do modelo.
visualize(modelo_gee_pulse, plot = "model")
Descrever resultados
Agora, realizaremos uma análise usando Generalized Mixed Models (GMM) para a variável “resp”.
# Ajustando o modelo GMM para "resp"
modelo_gmm_resp = lme(
fixed = resp ~ drug + Tempo + drug * Tempo,
random = ~1|ID,
data = bd_long
)
summary(modelo_gmm_resp)
## Linear mixed-effects model fit by REML
## Data: bd_long
## AIC BIC logLik
## -53.4 -42.2 34.7
##
## Random effects:
## Formula: ~1 | ID
## (Intercept) Residual
## StdDev: 0.0269 0.0587
##
## Fixed effects: resp ~ drug + Tempo + drug * Tempo
## Value Std.Error DF t-value p-value
## (Intercept) 3.35 0.0264 20 127.1 0.0000
## drugPlacebo -0.12 0.0373 10 -3.1 0.0107
## Tempo2 0.02 0.0339 20 0.5 0.6282
## Tempo3 -0.02 0.0339 20 -0.5 0.6282
## drugPlacebo:Tempo2 0.00 0.0479 20 0.0 1.0000
## drugPlacebo:Tempo3 0.03 0.0479 20 0.7 0.4947
## Correlation:
## (Intr) drgPlc Tempo2 Tempo3 drP:T2
## drugPlacebo -0.707
## Tempo2 -0.643 0.455
## Tempo3 -0.643 0.455 0.500
## drugPlacebo:Tempo2 0.455 -0.643 -0.707 -0.354
## drugPlacebo:Tempo3 0.455 -0.643 -0.354 -0.707 0.500
##
## Standardized Within-Group Residuals:
## Min Q1 Med Q3 Max
## -2.263 -0.560 -0.257 0.685 2.190
##
## Number of Observations: 36
## Number of Groups: 12
Agora vamos fazer um plot do histograma dos resíduos do modelo
# visualize(modelo_gmm_resp, plot = "residuals")`
Agora vamos fazer um plot do modelo.
#visualize(modelo_gmm_resp_visu, plot = "model")
Descrever resultados
Agora, realizaremos uma análise GMM para a variável “pulse”.
# Ajustando o modelo GMM para "pulse"
modelo_gmm_pulse = lme(
fixed = pulse ~ drug + Tempo + drug * Tempo,
random = ~1|ID,
data = bd_long
)
summary(modelo_gmm_pulse)
## Linear mixed-effects model fit by REML
## Data: bd_long
## AIC BIC logLik
## -22.9 -11.6 19.4
##
## Random effects:
## Formula: ~1 | ID
## (Intercept) Residual
## StdDev: 0.0459 0.0972
##
## Fixed effects: pulse ~ drug + Tempo + drug * Tempo
## Value Std.Error DF t-value p-value
## (Intercept) 2.200 0.0439 20 50.1 0.000
## drugPlacebo 0.467 0.0621 10 7.5 0.000
## Tempo2 0.017 0.0561 20 0.3 0.769
## Tempo3 0.083 0.0561 20 1.5 0.153
## drugPlacebo:Tempo2 0.133 0.0793 20 1.7 0.108
## drugPlacebo:Tempo3 0.033 0.0793 20 0.4 0.679
## Correlation:
## (Intr) drgPlc Tempo2 Tempo3 drP:T2
## drugPlacebo -0.707
## Tempo2 -0.639 0.452
## Tempo3 -0.639 0.452 0.500
## drugPlacebo:Tempo2 0.452 -0.639 -0.707 -0.354
## drugPlacebo:Tempo3 0.452 -0.639 -0.354 -0.707 0.500
##
## Standardized Within-Group Residuals:
## Min Q1 Med Q3 Max
## -1.783 -0.629 -0.178 0.630 1.476
##
## Number of Observations: 36
## Number of Groups: 12
Agora vamos fazer um plot do histograma dos resíduos do modelo
#visualize(modelo_gmm_pulse, plot = "residuals")`
Agora vamos fazer um plot do modelo.
#visualize(modelo_gmm_pulse, plot = "model")
Descrever resultados
Neste tutorial, exploramos como conduzir análises estatísticas no R utilizando diferentes abordagens, incluindo modelos de medidas repetidas, Generalized Estimating Equations (GEE) e Generalized Mixed Models (GMM). Essas técnicas nos permitem entender melhor o efeito do tempo e do grupo sobre as variáveis “resp” e “pulse” em nosso conjunto de dados.
Lembre-se de que as tabelas e resultados aqui apresentados são apenas parte da análise completa. Você pode aprofundar sua compreensão e realizar análises mais detalhadas conforme necessário.
Este tutorial abordou uma parte da análise de dados estatísticos. Você pode expandir seu conhecimento explorando mais recursos e técnicas estatísticas disponíveis no R.