A origem da notação no estilo Wilkinson como (1 | id) para efeitos aleatórios em fórmulas de modelos mistos em R

16

Fórmulas de modelo em R, como

y ~ x + a*b + c:d

são baseados na chamada notação de Wilkinson : Wilkinson e Rogers 1973, Descrição Simbólica de Modelos Fatoriais para Análise de Variância .

Este artigo não discutiu notações para modelos mistos (que talvez não existissem na época). Então, onde as fórmulas de modelo misto usadas nos lme4pacotes relacionados em R, como

y ~ x + a*b + c:d + (1|school) + (a*b||town)

vem de onde? Quem os apresentou pela primeira vez e quando? Existe algum termo acordado como "notação Wilkinson" para eles? Refiro-me especificamente aos termos como

(model formula |  grouping variable)
(model formula || grouping variable)
ameba diz Restabelecer Monica
fonte

Respostas:

11

A notação |existe nos nlmedocumentos desde a versão 3.1-1 e provavelmente no final de 1999; podemos facilmente verificar isso no arquivo de códigos CRAN nlme . nlmeusa essa notação, por exemplo, try library(nlme); formula(Orthodont); o |surgimento - então os anos 2000 estão desligados. Então vamos cavar .... " Métodos Gráficos para Dados com Níveis Múltiplos de Aninhamento " Pinheiro & Bates (1997) onde o groupedDataconstrutor é introduzido. E eles dizem: " A fórmula em um objeto de dados agrupados tem o mesmo padrão que a fórmula usada em uma chamada para uma função gráfica Trellis no S-PLUS, como o xyplot ", o que ... faz sentido, como a P&B está trabalhando. .. Bell Labs (RIP), que desenvolveu o sistema gráfico Trellis que realmente utilizava o operador|já para indicar grupos. O que provavelmente significa ... " O design visual e o controle da exibição de treliça ", de Becker et al. (1996) tem algo a ver com isso. A notação não é introduzida neste artigo, mas é a primeira referência eletrônica de exibição da Trellis que posso encontrar.

Essencialmente, precisamos desenterrar a literatura de visualização neste momento. Provavelmente eu verificaria o livro de Cleveland Visualizing Data (1993) e os primeiros trabalhos de Deepayan Sarkar (que se desenvolveu lattice). Observe que o operador real | (e ||) são verdadeiros operadores primitivos, pois estão associados a ORoperadores; portanto, era apenas uma questão de tempo até que alguém os sobrecarregasse. Embora não seja uma resposta completa, suspeito fortemente que a P&B tenha verificado o sistema de visualização legal de seus colegas (os gráficos naquele artigo de 1996 são muito bons para os padrões do final de 2010) e percebi que alguém (Becker, Cleveland e Shyu) já havia trabalhado nisso (talvez até discutiu isso com eles na época) e apenas acompanhou o que já estava lá. Ou seja, o|O operador se origina na notação gráfica. Trellis quase certamente o usou; os possíveis antecessores da Trellis também podem ter feito isso, mas sua pegada eletrônica é muito difícil de rastrear.

Em geral, acho que você pode querer esta página em NLME: Software para modelos de efeitos mistos da Bell Labs para obter informações mais históricas sobre nlme.

usεr11852 diz Reinstate Monic
fonte
1
Muito obrigado! É verdade que nlmeusa, |mas eu não acho que ele use ()para denotar efeitos aleatórios, certo? Efeitos aleatórios são listados como um argumento separado para a chamada de função. Foi isso lme4introduzido (x|id)como parte da mesma fórmula?
Ameba diz Reinstate Monica
2
Eu acho que você está lendo um pouco demais a presença dos parênteses; Eu suspeito fortemente que eles existem para fins de análise, pois lme4usa uma sintaxe unificada para todos os termos. Por exemplo, fm1 <- lmer(Reaction ~ Days | Subject, sleepstudy)funciona bem sem parênteses.
usεr11852 diz Reinstate Monic
Oh. De fato. Nunca pensei nisso dessa maneira :)
ameba diz Reinstate Monica
Bates apenas confirmou que a parte aleatória foi introduzido pelos autores nlme (de que é um): twitter.com/BatesDmbates/status/1111283948615802881
Jonas Lindeløv
@ JonasLindeløv: Legal! Obrigado por compartilhar, farei um link para a resposta amanhã à noite.
usεr11852 diz Reinstate Monic