Estou ajustando um modelo de efeitos aleatórios glmer
a alguns dados comerciais. O objetivo é analisar o desempenho de vendas por distribuidor, levando em consideração a variação regional. Eu tenho as seguintes variáveis:
distcode
: ID do distribuidor, com cerca de 800 níveisregion
: ID geográfico de nível superior (norte, sul, leste, oeste)zone
: geografia de nível médio aninhada dentroregion
, cerca de 30 níveis em todosterritory
: geografia de baixo nível aninhada dentrozone
, cerca de 150 níveis
Cada distribuidor opera em apenas um território. A parte complicada é que esses são dados resumidos, com um ponto de dados por distribuidor. Então, eu tenho 800 pontos de dados e estou tentando ajustar (pelo menos) 800 parâmetros, embora de maneira regularizada.
Eu instalei um modelo da seguinte maneira:
glmer(ninv ~ 1 + (1|region/zone/territory) + (1|distcode), family=poisson)
Isso é executado sem problemas, embora imprima uma nota:
O número de níveis de um fator de agrupamento para os efeitos aleatórios é igual a n, o número de observações
Isso é uma coisa sensata a se fazer? Recebo estimativas finitas de todos os coeficientes, e a AIC também não é irracional. Se eu tentar um GLMM poisson com o link de identidade, o AIC é muito pior, portanto o link de log é pelo menos um bom ponto de partida.
Se plotar os valores ajustados versus a resposta, obtenho o que é essencialmente um ajuste perfeito, o que acho que é porque tenho um ponto de dados por distribuidor. Isso é razoável ou estou fazendo algo completamente bobo?
Isso está usando dados por um mês. Posso obter dados por vários meses e obter alguma replicação dessa maneira, mas precisaria adicionar novos termos para variação mês a mês e possíveis interações, correto?
ETA: Eu executei o modelo acima novamente, mas sem family
argumentos (portanto, apenas um LMM gaussiano ao invés de um GLMM). Agora lmer
me deu o seguinte erro:
Erro em (função (fr, FL, start, REML, detalhado): o número de níveis de um fator de agrupamento para os efeitos aleatórios deve ser menor que o número de observações
Então, acho que não estou fazendo algo sensato, pois mudar a família não deve ter efeito. Mas a questão agora é: por que funcionou em primeiro lugar?
fonte
glmer
qualquer maneira (apesar de não estar muito feliz com isso).Um nível por observação pode ser muito útil se você tiver dados de contagem super-dispersos como sua variável de resposta. É equivalente a dizer que você espera que seus dados de contagem venham de uma distribuição Poisson-normal do log, ou seja, que o parâmetro lambda da sua distribuição Poisson não seja totalmente determinado pelas variáveis preditoras do seu modelo e que as possibilidades sejam distribuídas normalmente do log.
Ben Bolker, um dos desenvolvedores do lme4, fez dois exemplos de tutorial com isso. O primeiro, com dados sintéticos, entra em detalhes um pouco mais. Você pode encontrar um pdf aqui . Ele também passou por uma análise exploratória de dados com dados reais envolvendo corujas (código PDF e R disponível aqui ).
fonte
glmer
uma maneira conceitual.distributor
é um efeito de interesse: quero ver como os distribuidores executam um em relação ao outro ao permitir outras variáveis. Portanto, é mais comparável a um modelo misto linear convencional, onde o excesso de ajustes é uma preocupação genuína.