J'adapte un modèle d'effets aléatoires glmer
à certaines données d'entreprise. L'objectif est d'analyser la performance commerciale par distributeur en tenant compte des variations régionales. J'ai les variables suivantes:
distcode
: ID distributeur, avec environ 800 niveauxregion
: ID géographique de haut niveau (nord, sud, est, ouest)zone
: géographie de niveau intermédiaire imbriquée à l'intérieurregion
, environ 30 niveaux en toutterritory
: géographie de bas niveau imbriquée à l'intérieurzone
, environ 150 niveaux
Chaque distributeur opère sur un seul territoire. La partie délicate est qu'il s'agit de données résumées, avec un point de données par distributeur. J'ai donc 800 points de données et j'essaie d'adapter (au moins) 800 paramètres, mais de manière régulière.
J'ai monté un modèle comme suit:
glmer(ninv ~ 1 + (1|region/zone/territory) + (1|distcode), family=poisson)
Cela fonctionne sans problème, bien qu'il imprime une note:
Le nombre de niveaux d'un facteur de regroupement pour les effets aléatoires est égal à n, le nombre d'observations
Est-ce une chose sensée à faire? J'obtiens des estimations finies de tous les coefficients, et l'AIC n'est pas non plus déraisonnable. Si j'essaie un GLMM poisson avec le lien d'identité, l'AIC est bien pire, donc le lien du journal est au moins un bon point de départ.
Si je trace les valeurs ajustées par rapport à la réponse, j'obtiens ce qui est essentiellement un ajustement parfait, ce qui, je suppose, est parce que j'ai un point de données par distributeur. Est-ce raisonnable ou est-ce que je fais quelque chose de complètement idiot?
Cela utilise des données pendant un mois. Je peux obtenir des données pendant plusieurs mois et obtenir une certaine réplication de cette façon, mais je devrais ajouter de nouveaux termes pour la variation d'un mois à l'autre et les interactions possibles, n'est-ce pas?
ETA: J'ai de nouveau exécuté le modèle ci-dessus, mais sans family
argument (donc juste un LMM gaussien plutôt qu'un GLMM). Maintenant lmer
, m'a donné l'erreur suivante:
Erreur dans (fonction (fr, FL, start, REML, verbose): le nombre de niveaux d'un facteur de regroupement pour les effets aléatoires doit être inférieur au nombre d'observations
Je suppose donc que je ne fais rien de sensé, car changer de famille ne devrait pas avoir d'effet. Mais la question est maintenant, pourquoi cela a-t-il fonctionné en premier lieu?
la source
glmer
toute façon (bien que je n'en sois pas trop satisfait).Un niveau par observation peut être très utile si vous avez des données de comptage sur-dispersées comme variable de réponse. Cela revient à dire que vous vous attendez à ce que vos données de comptage proviennent d'une distribution Poisson-lognormale, c'est-à-dire que le paramètre lambda de votre distribution Poisson n'est pas entièrement déterminé par les variables prédictives de votre modèle et que les possibilités sont distribuées lognormalement.
Ben Bolker, l'un des développeurs de lme4, a fait deux exemples de tutoriel avec cela. Le premier, avec des données synthétiques, va un peu plus en détail. Vous pouvez trouver un pdf ici . Il a également parcouru une analyse exploratoire des données avec des données réelles impliquant des hiboux (code pdf et R disponible ici ).
la source
glmer
manière conceptuelle.distributor
c'est un effet intéressant: je veux voir comment les distributeurs fonctionnent les uns par rapport aux autres en tenant compte d'autres variables. Il est donc plus comparable à un modèle mixte linéaire conventionnel, où le sur-ajustement est une véritable préoccupation.