Introdução
Tenho participantes que tocam repetidamente superfícies contaminadas com E. coli em duas condições ( A = usando luvas, B = sem luvas). Quero saber se há uma diferença entre a quantidade de bactérias na ponta dos dedos com e sem luvas, mas também entre o número de contatos. Ambos os fatores são participantes.
Método experimental:
Os participantes (n = 35) tocam em cada quadrado uma vez com o mesmo dedo para um máximo de 8 contatos (veja a figura a).
Em seguida, esfrego o dedo do participante e meço as bactérias na ponta do dedo após cada contato. Eles então usam um novo dedo para tocar em um número diferente de superfícies e assim por diante de 1 a 8 contatos (consulte a figura b).
Aqui estão os dados reais : dados reais
Os dados não são normais, portanto veja a distribuição marginal de bactérias | NumberContacts abaixo. x = bactérias. Cada faceta é um número diferente de contatos.
MODELO
Tentando em lme4 :: glmer com base nas sugestões da ameba usando Gamma (link = "log") e polinômio para NumberContacts:
cfug<-glmer(CFU ~ Gloves + poly(NumberContacts,2) + (-1+NumberContacts|Participant),
data=(K,CFU<4E5),
family=Gamma(link="log")
)
plot(cfug)
NB Gamma (link = "inverso") não será executado dizendo que a etapa PIRLS não conseguiu reduzir o desvio.
Resultados:
Ajustado vs resíduos para cfug
qqp (resid (cfug))
Questão:
Meu modelo de glmer está definido adequadamente para incorporar os efeitos aleatórios de cada participante e o fato de que todo mundo faz o experimento A seguido pelo experimento B ?
Adição:
A autocorrelação parece existir entre os participantes. Provavelmente, porque não foram testados no mesmo dia e o frasco de bactérias cresce e diminui com o tempo. Isso importa?
acf (UFC, lag = 35) mostra uma correlação significativa entre um participante e o próximo.
NumberContacts
como um fator numérico e incluir termos polinomiais quadráticos / cúbicos. Ou consulte Modelos mistos aditivos generalizados.CFU ~ Gloves * poly(NumberContacts,2) + (Gloves * poly(NumberContacts,2) | Participant)
ou algo assim.CFU ~ Gloves * poly(NumberContacts,2) + (Gloves + poly(NumberContacts,2) | Participant)
, ou talvez remover as luvas de láCFU ~ Gloves * poly(NumberContacts,2) + (poly(NumberContacts,2) | Participant)
...Gloves * poly(NumberContacts,2) + (poly(NumberContacts,2) | Participant)
é um modelo bastante decente.Respostas:
Alguns gráficos para explorar os dados
Abaixo estão oito, um para cada número de contatos de superfície, gráficos xy mostrando luvas versus sem luvas.
Cada indivíduo é plotado com um ponto. A média e variância e covariância são indicadas com um ponto vermelho e a elipse (distância de Mahalanobis correspondente a 97,5% da população).
Você pode ver que os efeitos são apenas pequenos em comparação com a expansão da população. A média é mais alta para 'sem luvas' e a média muda um pouco mais para obter mais contatos de superfície (que podem ser significativos). Mas o efeito é apenas de tamanho pequeno ( redução geral de um ), e há muitos indivíduos para quem há realmente uma contagem mais alta de bactérias com as luvas.14
A pequena correlação mostra que há realmente um efeito aleatório dos indivíduos (se não houve um efeito da pessoa, não deve haver correlação entre as luvas emparelhadas e as sem luvas). Mas é apenas um efeito pequeno e um indivíduo pode ter efeitos aleatórios diferentes para 'luvas' e 'sem luvas' (por exemplo, para todos os diferentes pontos de contato, o indivíduo pode ter contagens sempre mais altas / baixas de 'luvas' do que 'sem luvas') .
A plotagem abaixo contém plotagens separadas para cada um dos 35 indivíduos. A idéia desse gráfico é verificar se o comportamento é homogêneo e também ver que tipo de função parece adequada.
Observe que o 'sem luvas' está em vermelho. Na maioria dos casos, a linha vermelha é mais alta, mais bactérias para os casos 'sem luvas'.
Eu acredito que um gráfico linear deve ser suficiente para capturar as tendências aqui. A desvantagem do gráfico quadrático é que os coeficientes serão mais difíceis de interpretar (você não verá diretamente se a inclinação é positiva ou negativa porque o termo linear e o termo quadrático influenciam isso).
Mais importante, porém, você vê que as tendências diferem muito entre os diferentes indivíduos e, portanto, pode ser útil adicionar um efeito aleatório não apenas para a interceptação, mas também para a inclinação do indivíduo.
Modelo
Com o modelo abaixo
.
Isto dá
código para obter parcelas
quimiometria :: função drawMahal
Plotagem 5 x 7
Plotagem 2 x 4
fonte
Quanto a usar
MASS:glmmPQL
oulme4:glmer
para o seu modelo, meu entendimento é que essas duas funções se encaixam no mesmo modelo (desde que você defina a equação do modelo, a distribuição e a função de link da mesma forma), mas usam métodos de estimativa diferentes para encontrar o ajuste. Eu poderia estar enganado, mas meu entendimento na documentação é queglmmPQL
usa quase-probabilidade penalizada, conforme descrito em Wolfinger e O'Connell (1993) , enquantoglmer
usa quadratura de Gauss-Hermite. Se você estiver preocupado com isso, poderá ajustar seu modelo com ambos os métodos e verificar se eles fornecem as mesmas estimativas de coeficiente e, dessa forma, você terá maior confiança de que o algoritmo de ajuste convergiu para os verdadeiros MLEs dos coeficientes.Essa variável possui uma ordem natural que aparece nos seus gráficos para ter um relacionamento suave com a variável de resposta, para que você possa tratá-la razoavelmente como uma variável numérica. Se você incluir
factor(NumberContacts)
, não restringirá sua forma e não perderá muitos graus de liberdade. Você pode até usar a interaçãoGloves*factor(NumberContacts)
sem perder muitos graus de liberdade. No entanto, vale a pena considerar se o uso de uma variável fator envolveria um ajuste excessivo dos dados. Dado que existe uma relação bastante suave em seu gráfico, uma função linear simples ou quadrática obteria bons resultados sem ajuste excessivo.Você já colocou sua variável de resposta em uma escala de log usando uma função de link logarítmico, portanto, um efeito de interceptação para
Participant
está dando um efeito multiplicativo na resposta. Se você der a isso uma inclinação aleatória interagindo comNumberContacts
ela, isso terá um efeito baseado em energia na resposta. Se você quiser isso, poderá obtê-lo com o(~ -1 + NumberContacts|Participant)
que removerá a interceptação, mas adicionará uma inclinação com base no número de contatos.Comece examinando seu gráfico residual para ver se há evidências de heterocedasticidade. Com base nas plotagens que você já incluiu, parece-me que isso não é um problema; portanto, você não precisa adicionar pesos para a variação. Em caso de dúvida, você pode adicionar pesos usando uma função linear simples e, em seguida, executar um teste estatístico para verificar se a inclinação da ponderação é plana. Isso equivaleria a um teste formal de heterocedasticidade, que daria a você algum backup para sua escolha.
Se você já incluiu um termo de efeito aleatório para o participante, provavelmente seria uma má idéia adicionar um termo de correlação automática ao número de contatos. Sua experiência usa um dedo diferente para diferentes números de contatos, para que você não espere a autocorrelação para o caso em que já contabilizou o participante. Adicionar um termo de autocorrelação além do efeito do participante significaria que você acha que existe uma dependência condicional entre o resultado de diferentes dedos, com base no número de contatos, mesmo para um determinado participante.
fonte
De fato, é razoável argumentar que as medidas tiradas de um participante não são independentes daquelas tiradas de outro participante. Por exemplo, algumas pessoas tendem a pressionar o dedo com mais (ou menos) força, o que afetaria todas as suas medições em cada número de contatos.
Portanto, a ANOVA de medidas repetidas de duas vias seria um modelo aceitável para aplicar neste caso.
Como alternativa, também se poderia aplicar um modelo de efeitos mistos
participant
como fator aleatório. Essa é uma solução mais avançada e sofisticada.fonte