Je recherche une estimation robuste de la moyenne qui a une propriété spécifique. J'ai un ensemble d'éléments pour lesquels je veux calculer cette statistique. Ensuite, j'ajoute de nouveaux éléments un par un, et pour chaque élément supplémentaire, je voudrais recalculer la statistique (également connue sous le nom d'algorithme en ligne). Je voudrais que ce calcul de mise à jour soit rapide, de préférence O (1), c'est-à-dire ne dépend pas de la taille de la liste.
La moyenne habituelle a cette propriété de pouvoir être mise à jour efficacement, mais n'est pas robuste aux valeurs aberrantes. Les estimateurs robustes typiques de la moyenne, comme la moyenne inter-quartile et la moyenne ajustée, ne peuvent pas être mis à jour efficacement (car ils nécessitent de maintenir une liste triée).
J'apprécierais toute suggestion de statistiques solides pouvant être calculées / mises à jour efficacement.
la source
Réponses:
Cette solution met en œuvre une suggestion faite par @Innuo dans un commentaire à la question:
Une fois que nous savons comment maintenir ce sous-ensemble, nous pouvons sélectionner n'importe quelle méthode que nous aimons pour estimer la moyenne d'une population à partir d'un tel échantillon. Il s'agit d'une méthode universelle, ne faisant aucune hypothèse, qui fonctionnera avec n'importe quel flux d'entrée avec une précision qui peut être prédite à l'aide de formules d'échantillonnage statistique standard. (La précision est inversement proportionnelle à la racine carrée de la taille de l'échantillon.)
Cet algorithme accepte en entrée un flux de données une taille d'échantillon , et génère un flux d'échantillons chacun représente la population . Plus précisément, pour , est un simple échantillon aléatoire de taille de (sans remplacement).x(t), t=1,2,…, m s(t) X(t)=(x(1),x(2),…,x(t)) 1≤i≤t m X ( t )s(i) m X(t)
Pour cela, il suffit que chaque sous-ensemble de éléments de ait des chances égales d'être les indices de dans . Cela implique la chance que soit en est égal à condition que .{ 1 , 2 , … , t } x s ( t ) x ( i ) , 1 ≤ i < t , s ( t ) m / t t ≥ mm {1,2,…,t} x s(t) x(i), 1≤i<t, s(t) m/t t≥m
Au début, nous collectons simplement le flux jusqu'à ce que éléments aient été stockés. À ce stade, il n'y a qu'un seul échantillon possible, de sorte que la condition de probabilité est trivialement satisfaite.m
L'algorithme prend le relais lorsque . Supposons par induction que est un simple échantillon aléatoire de pour . Définir provisoirement . Soit une variable aléatoire uniforme (indépendante de toute variable précédente utilisée pour construire ). Si alors remplacez un élément choisi au hasard de par . C'est toute la procédure!t=m+1 s(t) X(t) t>m s(t+1)=s(t) U(t+1) s(t) U(t+1)≤m/(t+1) s x(t+1)
Clairement, a une probabilité d'être en . De plus, par l'hypothèse d'induction, avait une probabilité d'être dans lorsque . Avec une probabilité = elle aura été supprimée de , d'où sa probabilité de rester égalex(t+1) m/(t+1) s(t+1) x(i) m/t s(t) i≤t m/(t+1)×1/m 1/(t+1) s(t+1)
exactement au besoin. Par induction, donc, toutes les probabilités d'inclusion de dans sont correctes et il est clair qu'il n'y a pas de corrélation particulière entre ces inclusions. Cela prouve que l'algorithme est correct.x(i) s(t)
L'efficacité de l'algorithme est car à chaque étape, au plus deux nombres aléatoires sont calculés et au plus un élément d'un tableau de valeurs est remplacé. Le besoin de stockage est de .O(1) m O(m)
La structure de données de cet algorithme se compose de l'échantillon ainsi que de l'indice de la population qu'il échantillonne. Initialement, nous prenons et procédons à l'algorithme pour Voici une implémentation à mettre à jour avec une valeur à produire . (L'argument joue le rôle de et est . L'index sera maintenu par l'appelant.)s t X(t) s=X(m) t=m+1,m+2,…. (s,t) x (s,t+1) t m t
R
n
sample.size
Pour illustrer et tester cela, j'utiliserai l'estimateur habituel (non robuste) de la moyenne et comparerai la moyenne estimée de à la moyenne réelle de (l'ensemble cumulatif de données vues à chaque étape ). J'ai choisi un flux d'entrée quelque peu difficile qui change assez facilement mais subit périodiquement des sauts spectaculaires. La taille de l'échantillon de est assez petite, ce qui nous permet de voir les fluctuations d'échantillonnage dans ces parcelles.X ( t ) m = 50s(t) X(t) m=50
À ce stade,50
online
est la séquence d'estimations moyennes produites en maintenant cet échantillon de valeurs, tandis que la séquence d'estimations moyennes est produite à partir de toutes les données disponibles à chaque instant. Le graphique montre les données (en gris), (en noir) et deux applications indépendantes de cette procédure d'échantillonnage (en couleurs). L'accord correspond à l'erreur d'échantillonnage attendue:actual
actual
Pour des estimateurs robustes de la moyenne, veuillez rechercher sur notre site les valeurs aberrantes et les termes connexes. Parmi les possibilités qui méritent d'être étudiées figurent les moyennes winsorisées et les estimateurs M.
la source
summary
par une variante robuste.Vous pourriez penser à relier votre problème à celui de la carte de contrôle récursive. Une telle carte de contrôle évaluera si une nouvelle observation est en contrôle. Si tel est le cas, cette observation est incluse dans la nouvelle estimation de la moyenne et de la variance (nécessaire pour déterminer les limites de contrôle).
Vous trouverez ici des informations sur les cartes de contrôle robustes, récursives et univariées . L'un des textes classiques sur le contrôle de la qualité et les cartes de contrôle semble être disponible en ligne ici .
Intuitivement, en utilisant la moyenne a, et une variance comme entrées, vous pouvez déterminer si une nouvelle observation au temps est une valeur aberrante par un certain nombre d'approches. L'une serait de déclarer une valeur aberrante si elle est en dehors d'un certain nombre d'écarts-types de (étant donné , mais cela peut poser des problèmes si les données non conforme à certaines hypothèses de répartition. Si vous voulez emprunter cette voie, supposons que vous ayez déterminé si un nouveau point n'est pas une valeur aberrante et que vous souhaitez l'inclure dans votre estimation moyenne sans taux spécial d'oubli. Alors vous ne pouvez pas faire mieux que: σ 2 t - 1 t x t μ t - 1 σ 2 t - 1 )μt−1 σ2t−1 t xt μt−1 σ2t−1)
De même, vous devrez mettre à jour la variance récursivement:
Cependant, vous voudrez peut-être essayer des cartes de contrôle plus conventionnelles. D'autres cartes de contrôle qui sont plus robustes à la distribution des données et peuvent toujours gérer la non-stationnarité (comme le de votre processus qui monte lentement) sont l'EWMA ou le CUSUM sont recommandés (voir le manuel lié ci-dessus pour plus de détails sur les graphiques et leurs limites de contrôle). Ces méthodes seront généralement moins exigeantes en termes de calcul qu'une méthode robuste, car elles ont l'avantage de simplement devoir comparer une seule nouvelle observation à des informations dérivées d'observations non aberrantes. Vous pouvez affiner vos estimations du processus à long terme et utilisé dans les calculs de limite de contrôle de ces méthodes avec les formules de mise à jour indiquées ci-dessus si vous le souhaitez.μ σ 2μ σ2
En ce qui concerne un graphique comme l'EWMA, qui oublie les anciennes observations et donne plus de poids aux nouvelles, si vous pensez que vos données sont stationnaires (ce qui signifie que les paramètres de la distribution génératrice ne changent pas), il n'est pas nécessaire d'oublier de manière exponentielle les observations plus anciennes. Vous pouvez définir le facteur d'oubli en conséquence. Cependant, si vous pensez qu'il s'agit d'une non-stationnarité, vous devrez sélectionner une bonne valeur pour le facteur d'oubli (voir à nouveau le manuel pour savoir comment le faire).
Je dois également mentionner qu'avant de commencer la surveillance et l'ajout de nouvelles observations en ligne, vous devrez obtenir des estimations de et (les valeurs de paramètres initiales basées sur un ensemble de données d'apprentissage) qui ne sont pas influencées par les valeurs aberrantes. Si vous pensez qu'il y a des valeurs aberrantes dans vos données d'entraînement, vous pouvez payer le coût ponctuel de l'utilisation d'une méthode robuste pour les estimer.σ 2 0μ0 σ20
Je pense qu'une approche dans ce sens conduira à la mise à jour la plus rapide de votre problème.
la source