Qualité d'ajustement pour les très grands échantillons


12

Je collecte chaque jour de très grands échantillons (> 1 000 000) de données catégoriques et je souhaite que les données soient "significativement" différentes d'un jour à l'autre pour détecter les erreurs de collecte de données.

Je pensais que l'utilisation d'un test de bon ajustement (en particulier, un test G) serait un bon ajustement (jeu de mots) pour cela. La distribution attendue est donnée par la distribution de la veille.

Mais, parce que mes échantillons sont si grands, le test a une puissance très élevée et dégage de nombreux faux positifs. C'est-à-dire que même une fluctuation quotidienne très mineure donnera une valeur de p proche de zéro.

J'ai fini par multiplier ma statistique de test par une constante (0,001), ce qui a la bonne interprétation d'échantillonner les données à ce rythme. Cet article semble d'accord avec cette approche. Ils disent ça:

Le chi carré est le plus fiable avec des échantillons d'environ 100 à 2500 personnes

Je recherche des commentaires plus fiables à ce sujet. Ou peut-être des solutions alternatives aux faux positifs lors de l'exécution de tests statistiques sur de grands ensembles de données.


3
C'est une bonne question. Il n'y a cependant aucune base objectivement supportable pour votre approche ad hoc . Cela ne signifie pas qu'il fonctionnera mal - mais cela suggère fortement qu'il existe de meilleures procédures. Pour les trouver, il serait utile de modifier cette question pour expliquer les types d'erreurs que vous essayez d'identifier, y compris leur ampleur, leur nombre et les conséquences de (a) l'échec de identifier certaines des erreurs et (b) signaler les données correctes comme des erreurs.
whuber

2
D'un point de vue mathématique, un test d'adéquation avec un très grand est parfaitement bien - c'est juste que l'hypothèse nulle correspondante n'est pas très intéressante: pourquoi voudriez-vous poser une question "oui / non" quand vous le pouvez obtenir une réponse «combien»? Dans votre cas, sur une base quotidienne, vous pouvez estimer le changement de proportion pour chaque catégorie, ajouter un intervalle de confiance chacune et voir si elles n'atteignent pas une région de tolérance prédéfinie autour de 0.n
Michael M

Votre utilisation de termes tels que «significatif» et «faux positif» semble être en contradiction avec la signification statistique de ces termes, surtout si vous faites le bon test *. Je vous suggère d'éviter ces termes sauf si vous les utilisez strictement au sens technique. Votre problème de base consiste à utiliser des tests d'hypothèse dans des situations où cela peut être peu logique; en anglais simple et non technique, quelle est votre véritable question d'intérêt?* (en particulier, utiliser la veille comme `` population '' n'est pas correct, si vous ne tenez pas compte de sa variabilité - généralement c'est aussi variable qu'aujourd'hui)
Glen_b -Reinstate Monica

Réponses:


4

Le test renvoie le résultat correct. Les distributions ne sont pas les mêmes au jour le jour. Bien sûr, cela ne vous est d'aucune utilité. Le problème auquel vous êtes confronté est connu depuis longtemps. Voir: Karl Pearson et RA Fisher sur les tests statistiques: un échange de 1935 avec la nature

Au lieu de cela, vous pouvez regarder les données précédentes (les vôtres ou ailleurs) et obtenir la distribution des changements quotidiens pour chaque catégorie. Ensuite, vous vérifiez si le changement actuel est susceptible de s'être produit compte tenu de cette distribution. Il est difficile de répondre plus précisément sans connaître les données et les types d'erreurs, mais cette approche semble plus adaptée à votre problème.


4

Allons de l'avant et tuons la vache sacrée de 5%.

Vous avez (à juste titre) souligné que le problème est celui de la puissance exubérante du test. Vous voudrez peut-être le recalibrer vers une puissance plus pertinente, comme disons une valeur plus traditionnelle de 80%:

  1. Décidez de la taille de l'effet que vous souhaitez détecter (par exemple, décalage de 0,2%)
  2. Décidez de la puissance qui vous convient le mieux pour qu'elle ne soit pas trop puissante (par exemple, 1β=80%)
  3. Revenez à la théorie existante du test de Pearson pour déterminer le niveau qui rendrait votre test pratique.

p1=p2=p3=p4=p5=0.2p+δ/n=(0.198,0.202,0.2,0.2,0.2)n=106k = λ = j δ 2 j / p j = 4 / 0,2 + 4 / 0,2 = 40 λ N ( μ = λ + k = 44 , σ 2 = 2 ( k + 2 λ ) = 168δ=(2,+2,0,0,0)k=

λ=jδj2/pj=4/0.2+4/0.2=40
λ44 + 13 Φ - 1 ( 0,8 ) = 44 + 13 0,84 = 54,91 χ 2 4 P r o b [ χ 2 4 > 54,91 ] = 3,3 10 - 11N(μ=λ+k=44,σ2=2(k+2λ)=168)44+13Φ1(0.8)=44+130.84=54.91. Par conséquent, votre niveau de test souhaitable est le fichier cdf de queue inverse de partir de 54,91: Ce serait donc le niveau que vous devriez pensez à tester vos données à afin qu'elles aient la puissance de 80% pour détecter les différences de 0,2%.χ42
Prob[χ42>54.91]=3.31011

(Veuillez vérifier mes calculs, c'est un niveau ridicule de test, mais c'est ce que vous vouliez avec vos Big Data, n'est-ce pas? D'un autre côté, si vous voyez régulièrement Pearson dans la plage d'un couple cent, cela peut être une valeur critique tout à fait significative à divertir.)χ2

Gardez à l'esprit que les approximations, à la fois pour le nul et pour l'alternative, peuvent mal fonctionner dans les queues, voir cette discussion .


2

Dans ces cas, mon professeur a suggéré de calculer le V de Cramér qui est une mesure d'association basée sur la statistique du chi carré. Cela devrait vous donner la force et vous aider à décider si le test est hypersensible. Mais, je ne sais pas si vous pouvez utiliser le V avec le type de statistique que les tests G2 renvoient.

Cela devrait être la formule pour V:

ϕc=χ2n(k1)

où est le grand total des observations et est le nombre de lignes ou le nombre de colonnes, le plus petit des deux. Ou pour les tests d'adéquation, le est apparemment le non. de rangées.k knkk


0

Une approche consisterait à donner plus de sens aux tests d'adéquation en les effectuant sur des blocs de données plus petits.

Vous pouvez diviser vos données d'un jour donné en, par exemple, 1000 blocs de 1000 échantillons chacun, et exécuter un test de qualité d'ajustement individuel pour chaque bloc, avec la distribution attendue donnée par l'ensemble de données complet du jour précédent. Gardez le niveau de signification pour chaque test individuel au niveau que vous utilisiez (par exemple ). Recherchez ensuite des écarts significatifs entre le nombre total de tests positifs et le nombre attendu de faux positifs (sous l'hypothèse nulle qu'il n'y a pas de différence dans les distributions, le nombre total de tests positifs est binomialement distribué, avec le paramètre ).αα=0.05α

Vous pouvez trouver une bonne taille de bloc à utiliser en prenant des ensembles de données de deux jours où vous pouvez supposer que la distribution est la même, et en voyant quelle taille de bloc donne une fréquence de tests positifs qui est à peu près égale à (c'est-à-dire quelle taille de bloc s'arrête votre test de signalement de différences parasites).α


Pourriez-vous, s'il vous plaît, préciser dans quel sens cette approche serait "plus significative"?
whuber

C'est la signification statistique par rapport à la signification réelle. En utilisant 10 ^ 3 au lieu de 10 ^ 6 échantillons, la puissance d'un seul test est délibérément réduite, donc les rejets de l'hypothèse nulle auront tendance à correspondre à un grand manque d'ajustement. Cela rend le résultat d'un seul test plus significatif car le PO ne se soucie pas des "fluctuations quotidiennes mineures". Pour 10 ^ 6 échantillons, le test peut toujours rejeter H0 en raison de différences mineures, il n'est donc pas clair si un résultat de test représente une information significative.
CJ Stoneking

1
Merci: votre commentaire soulève des questions intéressantes et importantes qui commencent à porter sur ce que je pense être la vraie question sous-jacente; à savoir, comment mesurer les différences entre les données afin de détecter les erreurs et quelle serait l'ampleur de la préoccupation? Bien que votre réponse puisse être appropriée dans certaines circonstances, il semble peu probable qu'elle détecte efficacement de nombreux types d'erreurs qui pourraient survenir dans les données et laisse également ouverte la question (naturelle) de la taille des blocs de données à utiliser.
whuber

@whuber, le problème peut-il être redéfini de telle sorte que le zéro et son écart soient invariants en termes de taille des données mais recherchent une représentation qualitative?
Vass
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.