Mesurer la qualité de l'ajustement dans un modèle qui combine deux distributions

9

J'ai des données avec un double pic que j'essaie de modéliser, et il y a suffisamment de chevauchement entre les pics que je ne peux pas les traiter indépendamment. Un histogramme des données pourrait ressembler à ceci:

texte alternatif

J'ai créé deux modèles pour cela: l'un utilise deux distributions de Poisson, et l'autre utilise deux distributions binomiales négatives (pour tenir compte de la surdispersion). Quelle est la meilleure façon de savoir quel modèle correspond le mieux aux données?

Ma pensée initiale est que je pourrais utiliser un test de Kolmogorov-Smirnov pour comparer chaque modèle aux données, puis faire un test de rapport de vraisemblance pour voir si l'un est bien mieux adapté. Est-ce que ça a du sens? Si oui, je ne sais pas exactement comment effectuer le test du rapport de vraisemblance. Le chi carré est-il approprié et combien de degrés de liberté ai-je?

Si cela aide, un code R (très simplifié) pour les modèles pourrait ressembler à ceci:

## inital data points
a <- read.table("data")

#create model data
model.pois = c(rpois(1000000,200),rpois(500000,250))
model.nb = c(rnbinom(1000000,200,0.5),rnbinom(500000,275,0.5)

#Kolmogorov-Smirnov test
#use ks.boot, since it's count data that may contain duplicate values
kpois = ks.boot(model.pois,a)
knb = ks.boot(model.nb,a)

#here's where I'd do some sort of likelihood ratio test
# . . .

Edit: Voici une image qui peut expliquer les données et les distributions que je ajuste mieux. Il est totalement clair à partir de la visualisation que le deuxième modèle (utilisant la dist binomiale négative pour tenir compte de la surdispersion) est un meilleur ajustement. J'aimerais montrer cela quantitativement, cependant. texte alternatif

(rouge - données, vert - modèle)

chrisamiller
la source
connaissez-vous la distribution de probabilité des valeurs dans chaque bac ? L'étiquette de l'axe y me fait penser que cela pourrait être poissonien ou multinomial? (en supposant qu'un modèle vous donne la moyenne dans chaque casier)
Andre Holzner
Les données sont essentiellement tirées de deux processus de Poisson, mais il y a des variables cachées que je ne peux pas corriger, conduisant à une surdispersion. Ainsi, un binôme négatif est certainement un meilleur modèle. (voir la nouvelle image / texte que j'ai ajouté ci-dessus). Je dois montrer que mon modèle nb s'adapte mieux quantitativement.
chrisamiller
1
Que diriez-vous d'une métrique comme l'erreur quadratique moyenne entre les valeurs réelles et les valeurs prévues?
hrmm - J'aime cette idée, Srikant. C'est beaucoup plus simple que ce que je pensais, mais reste logique. Ajoutez une réponse ci-dessous afin que je puisse la créditer et envoyer un représentant à votre guise. Je suis toujours intéressé à entendre d'autres méthodes, mais cela peut fonctionner pour l'instant.
chrisamiller

Réponses:

4

Vous pouvez utiliser une métrique telle que l' erreur quadratique moyenne entre les valeurs réelles et les valeurs prévues pour comparer les deux modèles.


la source
1
C'était la bonne réponse à ma situation particulière, même si la réponse de Glen_b m'a aidé à en savoir plus. Donc plus de votes positifs pour lui, réponse acceptée pour Srikant. Tout le monde gagne - merci à tous.
chrisamiller
8

Vous ne pouvez pas les comparer directement car le binôme négatif a plus de paramètres. En effet, le Poisson est "imbriqué" dans le binôme négatif en ce sens qu'il s'agit d'un cas limite, de sorte que le NegBin s'adaptera toujours mieux que le Poisson. Cependant, cela permet d'envisager quelque chose comme un test de rapport de vraisemblance, mais le fait que le Poisson soit à la limite de l'espace des paramètres pour le binôme négatif peut affecter la distribution de la statistique de test.

Dans tous les cas, même si la différence de nombre de paramètres n'était pas un problème, vous ne pouvez pas faire de tests KS directement car vous avez des paramètres estimés , et KS est spécifiquement pour le cas où tous les paramètres sont spécifiés. Votre idée d'utiliser le bootstrap traite de ce problème, mais pas du premier (différence de nombre de paramètres)

J'envisagerais également des tests de qualité de l'ajustement en douceur (par exemple, voir le livre de Rayner et Best), qui, par exemple, peuvent conduire à une partition du test de qualité d'ajustement du chi carré en composants d'intérêt (mesure des écarts par rapport au modèle de Poisson dans ce cas) - pris pour dire quatrième ou sixième ordre, cela devrait conduire à un test avec une bonne puissance pour l'alternative NegBin.

(Edit: vous pouvez comparer vos ajustements de poisson et de négbin via un test du chi carré, mais il aura une faible puissance. .)

Glen_b -Reinstate Monica
la source
Merci. Cela clarifie un tas de choses et ouvre toute une série de nouvelles questions sur lesquelles je devrai faire des recherches. Je suppose que ma question principale est la suivante: est-ce que ce que vous dites signifie que quelque chose de plus simple, comme simplement prendre une erreur quadratique moyenne, n'est pas un moyen valable d'aborder ce problème? Je reconnais que ce n'est probablement pas aussi robuste et ne me donnera pas de valeur p, mais c'est quelque chose que je pourrais faire rapidement pendant que j'essaie de retrouver une copie du livre que vous référencez. Toute réflexion sera apprécié.
chrisamiller
2
imaginez que vous aviez un ensemble de points (x, y) et que vous vous demandiez si vous pourriez adapter une ligne droite ou un quadratique. Si vous comparez le RMSE, le quadratique battrait toujours la ligne droite , car la ligne est un quadratique avec un paramètre défini sur zéro: si l'estimation des moindres carrés du paramètre est exactement zéro (qui a une probabilité nulle de réponse continue), c'est une cravate, et dans tous les autres cas, la ligne perd. C'est la même chose avec le Poisson vs le binôme négatif - un Binôme négatif libre peut toujours s'adapter au moins aussi bien qu'un Poisson libre.
Glen_b -Reinstate Monica
Belle explication - je comprends ce que vous dites maintenant. Je pense que mon cas est un peu différent, car je ne fais pas de régression pour obtenir un ajustement, mais plutôt, je fonde le paramètre NB supplémentaire sur des informations externes (je m'attends à ce que le rapport var / mean soit N). Puisque Poisson est le cas spécial où N = 1, ce que je compare vraiment, c'est le choix de N.Je conviens que si je faisais une régression, le NB serait toujours en mesure de trouver un meilleur ajustement, car il est moins contraint. Dans mon cas, où je choisis une valeur pour N à l'avance, il serait certainement possible de choisir une valeur folle de N qui aggrave l'ajustement.
chrisamiller
Je vais certainement lire sur les tests de qualité de l'ajustement que vous avez suggérés. Merci pour les réponses informatives.
chrisamiller
Désolé de ne pas vous rendre compte que les données ne sont pas entrées dans le choix du paramètre de surdispersion. Il peut y avoir des arguments pour le faire à votre façon, mais si l'estimation externe est susceptible de refléter ce que vous observez réellement, le NB peut toujours avoir un certain avantage selon les circonstances.
Glen_b -Reinstate Monica