Efeito da linha de base na mudança ao longo do tempo em modelos mistos?

7

Fiquei me perguntando se e como é possível modelar, em alguma amostra, a mudança de resultado ao longo do tempo, que depende do valor da linha de base desse resultado, usando um modelo misto?

Imagine, por exemplo, uma situação em que o mesmo teste de conhecimento seja administrado 5 vezes ao mesmo grupo de pessoas. Como as perguntas são sempre as mesmas, os alunos aprenderão as respostas corretas ao longo do tempo e terão notas mais altas em cada administração. No entanto, naqueles que pontuaram alto em primeiro lugar, haverá menos mudanças do que naqueles que pontuaram mal. Portanto, é bem aparente que a taxa de variação depende do valor da linha de base.

Eu sei que em modelos mistos, eu poderia incluir uma inclinação aleatória para o tempo, além de uma interceptação aleatória, para explicar o fato de que em alguns estudantes haverá mais mudanças do que em outros. No entanto, estou certo em assumir que não é possível ou significativo incluir o valor da primeira medição como covariável de linha de base (e sua interação com o tempo)? De qualquer forma, não "parece" certo para mim. Mas, por outro lado, me surpreende que não seja possível modelar explicitamente o efeito do valor da linha de base usando um efeito fixo. Devo admitir que estou um pouco confuso com isso. Qualquer ajuda seria muito apreciada.

h_bauer
fonte
Por que não seria possível? Um dos modelos de medidas repetidas mais padrão tem o resultado (valor absoluto ou alteração da linha de base) como variável dependente e um fator para o tempo de avaliação, uma covariável para a linha de base e uma linha de base pela interação da avaliação (geralmente com matriz de covariância não estruturada e graus de denominador liberdade calculada usando o método Kenward-Rogers).
Björn
@ Björn Minhas reservas vieram do fato de que parte dos dados do resultado também seria usada como uma variável independente, que, em um sentido intuitivo, me pareceu problemática (por exemplo, no que diz respeito à estimativa ou interpretação dos efeitos). Ou o modelo a que você está se referindo excluiria as observações da linha de base dos dados do resultado?
h_bauer
11
@ AndyY Eu já li parcialmente este tópico antes e, francamente, não consegui realmente conectar-me a modelos mistos, possivelmente porque me falta alguma experiência. Vou dar outra chance
h_bauer
Ao incluí-lo no modelo, certamente também não seria modelado como resultado.
Björn

Respostas:

7

Este parece ser um cenário de modelo de crescimento. Suponha que tivéssemos as seguintes variáveis:

  • occasion: Tomando valores 1, 2, 3, 4, 5para refletir a ocasião que teste foi tomada, 1sendo o primeiro, ou linha de base.
  • ID: o identificador de cada participante.
  • score: a pontuação do teste para este participante nesta ocasião do teste.

As interceptações aleatórias IDcuidarão das diferentes linhas de base (sujeitas a ter participantes suficientes.

Portanto, um modelo linear simples de efeitos mistos para esses dados é (usando a lme4sintaxe):

score ~ occasion + (1|ID)

ou

score ~ occasion + (occasion|ID)

onde o último permite que a inclinação linear da ocasião varie entre os participantes

No entanto, para o exemplo específico no OP, temos o problema adicional de que a scorevariável é delimitada acima pela pontuação máxima no teste. Para permitir isso, precisamos atender ao crescimento não linear. Isso pode ser alcançado de várias maneiras, sendo a mais simples a adição de termos quadráticos e possivelmente cúbicos ao modelo:

score ~ occasion + I(occasion^2) + I(occasion^3) + (1|ID)

Vejamos um exemplo de brinquedo:

require(lme4)
require(ggplot2)

dt2 <- structure(list(occasion = c(0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4), score = c(55.5, 74.5, 92.5, 97.5, 98.5, 54.5, 81.5, 94.5, 97.5, 98.5, 47.5, 68.5, 86.5, 96.5, 98.5, 56.5, 86.5, 91.5, 97.5, 98.5, 60.5, 84.5, 95.5, 97.5, 99.5, 73.5, 87.5, 96.5, 98.5, 99.5), ID = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L), .Label = c("1", "2", "3", "4", "5", "6"), class = "factor")), .Names = c("occasion", "score", "ID"), row.names = c(25L, 26L, 27L, 28L, 29L, 31L, 32L, 33L, 34L, 35L, 37L, 38L, 39L, 40L, 41L, 43L, 44L, 45L, 46L, 47L, 49L, 50L, 51L, 52L, 53L, 55L, 56L, 57L, 58L, 59L), class = "data.frame")

m1 <- lmer(score~occasion+(1|ID),data=dt2)

fun1 <- function(x) fixef(m1)[1] + fixef(m1)[2]*x

ggplot(dt2,aes(x=occasion,y=score, color=ID)) + geom_line(size=0.65) + geom_point() +
 stat_function(fun=fun1, geom="line", size=1, colour="black")

insira a descrição da imagem aqui

Aqui, temos gráficos para 6 participantes, medidos em 5 ocasiões sucessivas, e plotamos os efeitos fixos com a linha preta sólida. Claramente, esse não é um bom modelo para esses dados; portanto, introduzimos um termo quadrático e depois um termo cúbico, depois de centralizar os dados para reduzir a colinearidade:

dt2$occasion <- dt2$occasion - mean(dt2$occasion)

m2 <- lmer(score~occasion + I(occasion^2) + (1|ID),data=dt2)
fun2 <- function(x) fixef(m2)[1] + fixef(m2)[2]*x + fixef(m2)[3]*(x^2)

m3 <- lmer(score~occasion + I(occasion^2) + I(occasion^3) + (1|ID),data=dt2)
fun3 <- function(x) fixef(m3)[1] + fixef(m3)[2]*x + fixef(m3)[3]*(x^2) + fixef(m3)[4]*(x^3)


p2 <- ggplot(dt2,aes(x=occasion,y=score, color=ID)) + geom_line(size=0.5) + geom_point()

p2 + stat_function(fun=fun2, geom="line", size=1, colour="black")

insira a descrição da imagem aqui

Aqui vemos que o modelo quadrático é uma melhoria óbvia em relação ao modelo linear, mas não é ideal porque subestima as pontuações da medição final e superestima a da anterior.

O modelo cúbico, por outro lado, parece funcionar muito bem:

p2 + stat_function(fun=fun3, geom="line", size=1, colour="black")

insira a descrição da imagem aqui

Uma abordagem um pouco mais sofisticada é reconhecer a explicidade do limite superior e usar (por exemplo) um modelo de curva de crescimento logístico. Uma maneira de conseguir isso é transformar o resultado em uma proporção (do limite superior), digamos e modelar o logit dessa proporção, como o resultado de um modelo linear de efeitos mistos . Além de reconhecer o limite superior, isso tem a vantagem adicional de modelar a heteroscasticidade nos resíduos dos dados não transformados, uma vez que parece provável que em testes sucessivos (assumindo que os resultados melhorem) haverá menos variação.ππ/(1π)

Colocando isso em prática, como esperado, isso também modela muito bem a tendência geral dos dados:

pi <- dt2$score/100
dt2$logitpi <- log(pi/(1-pi))

m0 <- lmer(logitpi~occasion+(1|ID),data=dt2)
funlogis <- function(x) 100*exp(fixef(m0)[1] + fixef(m0)[2]*x)/(1+exp(fixef(m0)[1] + fixef(m0)[2]*x))
p2 + stat_function(fun=funlogis, geom="line", size=0.5, colour="black")

insira a descrição da imagem aqui

A seguir, mostramos o modo cúbico e os modelos de crescimento logístico plotados juntos, e vemos muito pouca diferença entre eles, embora, como mencionado acima, possamos preferir o modelo de crescimento logístico devido ao problema da heterocedasticidade:

p2 +  stat_function(fun=fun3, geom="line", size=1, colour="black")  +
stat_function(fun=funlogis, geom="line", size=1, colour="blue")

UMA

Uma abordagem mais sofisticada ainda seria o uso de um modelo não linear de efeitos mistos, em que a curva de crescimento logístico é modelada explicitamente, permitindo variações aleatórias nos parâmetros da própria função logística.

Robert Long
fonte
Muito obrigado pelo exemplo detalhado! Especialmente o ponto sobre a transformação de logit da porcentagem da escala é um bom ponto que eu não havia considerado. Embora uma inclinação aleatória absorva a variação nas curvas de crescimento, ela não aborda explicitamente o fato de que a taxa de crescimento é determinada pela pontuação da linha de base. Nos modelos que você esboçou, você acha que é possível incluir algum tipo de interação "pontuação da linha de base * tempo"? Ou isso é sensato?
h_bauer