J'ai un problème avec le paramètre d'estimation pour Zipf. Ma situation est la suivante:
J'ai un jeu d'échantillons (mesuré à partir d'une expérience qui génère des appels qui devraient suivre une distribution Zipf). Je dois démontrer que ce générateur génère vraiment des appels avec la distribution zipf. J'ai déjà lu ce Q&R Comment calculer le coefficient de loi de Zipf à partir d'un ensemble de fréquences supérieures? mais j'atteins de mauvais résultats car j'utilise une distribution tronquée. Par exemple, si je règle la valeur "s" sur "0,9" pour le processus de génération, si j'essaie d'estimer la valeur "s" comme écrit dans le Q&R rapporté, j'obtiens "s" égal à 0,2 ca. Je pense que cela est dû au fait que j'utilise une distribution TRONCÉE (je dois limiter le zipf avec un point de troncature, il est tronqué à droite).
Comment estimer les paramètres avec une distribution zipf tronquée?
Réponses:
Mise à jour : 7 avril 2011 Cette réponse devient assez longue et couvre plusieurs aspects du problème à résoudre. Cependant, j'ai résisté, jusqu'à présent, à le diviser en réponses distinctes.
J'ai ajouté tout en bas une discussion sur les performances du de Pearson pour cet exemple.χ2
Bruce M. Hill est peut-être l'auteur de l'article «fondateur» sur l'estimation dans un contexte de type Zipf. Il a écrit plusieurs articles au milieu des années 70 sur le sujet. Cependant, «l'estimateur de Hill» (comme il s'appelle maintenant) s'appuie essentiellement sur les statistiques d'ordre maximal de l'échantillon et ainsi, selon le type de troncature présent, cela pourrait vous causer des ennuis.
Le document principal est:
BM Hill, Une approche générale simple de l'inférence sur la queue d'une distribution , Ann. Stat. , 1975.
Si vos données sont vraiment initialement Zipf et sont ensuite tronquées, une belle correspondance entre la distribution des degrés et le tracé Zipf peut être exploitée à votre avantage.
Plus précisément, la distribution des degrés est simplement la distribution empirique du nombre de fois que chaque réponse entière est vue,
Si nous traçons ceci contre sur un tracé log-log, nous obtiendrons une tendance linéaire avec une pente correspondant au coefficient d'échelle.i
D'un autre côté, si nous traçons le tracé Zipf , où nous trions l'échantillon du plus grand au plus petit, puis traçons les valeurs en fonction de leurs rangs, nous obtenons une tendance linéaire différente avec une pente différente . Cependant les pentes sont liées.
Si est le coefficient de loi d'échelle pour la distribution Zipf, alors la pente dans le premier tracé est et la pente dans le deuxième tracé est . Vous trouverez ci-dessous un exemple de tracé pour et . Le volet de gauche est la distribution des degrés et la pente de la ligne rouge est . Le côté droit est le tracé Zipf, avec la ligne rouge superposée ayant une pente de .- α - 1 / ( α - 1 ) α = 2 n = 10 6 - 2 - 1 / ( 2 - 1 ) = - 1α −α −1/(α−1) α=2 n=106 −2 −1/(2−1)=−1
Donc, si vos données ont été tronquées de sorte que vous ne voyez aucune valeur supérieure à un certain seuil , mais que les données sont autrement distribuées par Zipf et que est raisonnablement grande, alors vous pouvez estimer partir de la distribution des degrés . Une approche très simple consiste à ajuster une ligne au tracé log-log et à utiliser le coefficient correspondant.τ ατ τ α
Si vos données sont tronquées de sorte que vous ne voyez pas de petites valeurs (par exemple, la façon dont le filtrage est effectué pour les grands ensembles de données Web), vous pouvez utiliser le tracé Zipf pour estimer la pente sur une échelle log-log puis " reculer "l'exposant de mise à l'échelle. Supposons que votre estimation de la pente à partir du tracé Zipf soit . Ensuite, une simple estimation du coefficient de la loi d'échelle est alpha =une-uneβ^
@csgillespie a donné un article récent co-écrit par Mark Newman au Michigan sur ce sujet. Il semble publier beaucoup d'articles similaires à ce sujet. Ci-dessous est un autre avec quelques autres références qui pourraient être intéressantes. Newman ne fait parfois pas la chose la plus sensée statistiquement, alors soyez prudent.
MEJ Newman, Power lois, distributions de Pareto et loi de Zipf , Contemporary Physics 46, 2005, pp. 323-351.
M. Mitzenmacher, A Brief History of Generative Models for Power Law and Lognormal Distributions , Internet Math. , vol. 1, non. 2, 2003, p. 226-251.
K. Knight, Une simple modification de l'estimateur de Hill avec des applications à la robustesse et à la réduction du biais , 2010.
Addendum :
Voici une simulation simple dans pour démontrer ce à quoi vous pourriez vous attendre si vous preniez un échantillon de taille dans votre distribution (comme décrit dans votre commentaire ci-dessous votre question d'origine).10 5R 105
Le tracé résultant est
De l'intrigue, nous pouvons voir que l'erreur relative de la distribution des degrés pour (ou ainsi) est très bonne. Vous pouvez faire un test chi carré formel, mais cela ne vous dit pas strictement que les données suivent la distribution prédéfinie. Il vous indique seulement que vous n'avez aucune preuve pour conclure que non .i≤30
Pourtant, d'un point de vue pratique, une telle intrigue devrait être relativement convaincante.
Addendum 2 : Considérons l'exemple que Maurizio utilise dans ses commentaires ci-dessous. Nous supposerons que et , avec une distribution Zipf tronquée ayant une valeur maximale .n = 300α=2 x m a x = 500n=300000 xmax=500
Nous allons calculer la statistique Pearson de deux manières. La méthode standard est via la statistique où est le nombre observé de la valeur dans l'échantillon et .X 2 = 500 ∑ i = 1 ( O i - E i ) 2χ2 OiiEi=npi=ni-α/∑ 500 j = 1 j-α
Nous calculerons également une deuxième statistique formée en regroupant d'abord les nombres dans des bacs de taille 40, comme indiqué dans la feuille de calcul de Maurizio (le dernier bac ne contient que la somme de vingt valeurs de résultat distinctes.
Tirons 5000 échantillons distincts de taille de cette distribution et calculons les valeurs utilisant ces deux statistiques différentes.pn p
Les histogrammes des valeurs sont ci-dessous et sont considérés comme assez uniformes. Les taux d'erreur empiriques de type I sont respectivement de 0,0716 (méthode standard non combinée) et 0,0502 (méthode combinée) et aucun n'est statistiquement significativement différent de la valeur cible de 0,05 pour la taille d'échantillon de 5000 que nous avons choisie.p
Voici le codeR
la source
Le papier
Clauset, A et al , Power-law Distributions in Empirical Data . 2009
contient une très bonne description de la marche à suivre pour ajuster des modèles de loi de puissance. La page Web associée contient des exemples de code. Malheureusement, il ne donne pas de code pour les distributions tronquées, mais il peut vous donner un pointeur.
Soit dit en passant, l'article discute du fait que de nombreux "ensembles de données de loi de puissance" peuvent être modélisés aussi bien (et dans certains cas mieux) avec les distributions log normales ou exponentielles!
la source
Suite à la réponse détaillée du cardinal utilisateur, j'ai effectué le test du chi carré sur ma distribution présumée zipf tronquée. Les résultats du test du chi carré sont rapportés dans le tableau suivant:
Où StartInterval et EndInterval représentent par exemple la gamme d'appels et Observed est le nombre d'appels générant de 0 à 19 appels, et ainsi de suite. Le test du khi carré est bon jusqu'à ce que les dernières colonnes soient atteintes, elles augmentent la finale calcul, sinon jusqu'à ce point, la valeur "partielle" du chi carré était acceptable!
Avec d'autres tests, le résultat est le même, la dernière colonne (ou les 2 dernières colonnes) augmente toujours la valeur finale et je ne sais pas pourquoi et je ne sais pas si (et comment) utiliser un autre test de validation.
PS: pour être complet, pour calculer les valeurs attendues ( attendues ), je suis la suggestion du cardinal de cette manière:
où les X_i sont utilisés pour calculer :,
x <- (1:n)^-S
les P_i à calculerp <- x / sum(x)
et enfin le E_i (nr attendu d'utilisateurs pour chaque nr d'appels) est obtenu parP_i * Total_Caller_Observed
et avec un degré de liberté = 13, la bonté du chi carré rejette toujours l'hypothèse selon laquelle le jeu d'échantillons suit la distribution Zipf parce que les statistiques de test (64, 14 dans ce cas) sont plus grandes que celles rapportées dans les tableaux du chi carré, "démérite" pour la dernière colonne. Le résultat graphique est rapporté ici:
bien que le point de troncature soit fixé à 500, la valeur maximale obtenue est 294. Je pense que la "dispersion" finale est la cause de l'échec du test du chi carré.
METTRE À JOUR!!
J'essaie d'effectuer le test du chi carré sur un échantillon de données zipf présumé généré avec le code R signalé dans la réponse ci-dessus.
Le tracé associé est le suivant:
Les résultats du test du chi carré sont présentés dans la figure suivante:
et la statistique du test du chi carré (44,57) est trop élevée pour la validation avec le degré de liberté choisi. Dans ce cas également, la "dispersion" finale des données est la cause de la valeur élevée du chi carré. Mais il existe une procédure pour valider cette distribution zipf (quel que soit mon "mauvais" générateur, je veux me concentrer sur l'échantillon de données R) ???
la source