J'écris un programme qui fait la moyenne du poids de l'utilisateur sur différents jours. Je prévois d'utiliser une moyenne mobile à 5 points (jour en cours, deux avant et deux après). Parfois, un point de données manque pendant 1-2 jours. Comment ces cas sont-ils généralement traités?
(s'il y a un meilleur filtre passe-bas que je pourrais utiliser, j'adorerais les suggestions)
Réponses:
Comme impression générale, la régression fonctionnerait mieux en ajustant automatiquement les points manquants plutôt qu'un filtre de moyenne mobile que vous avez choisi.
Si vous utilisez un filtre AR (filtre auto-régressif) ou ARMA - vous pouvez avoir une valeur prédite d'un échantillon de sortie basée sur les entrées passées.
Lorsque X [ i ] est la valeur prédite.X^[ i ]
Plus précisément dans votre cas, disons que vous savez que le poids de la personne a une plage spécifique . Maintenant , si vous n'avez pas x [ i - 1 ] valeur - appliquer deux substitutions différentes - l' un avec min et une avec Max et basé sur le modèle disponible , vous aurez deux résultats de cas extrême pour X [ i ] et vous pouvez choisir quelque chose entre eux.Xm a x, Xm i n x [ i - 1 ] X^[ i ]
Il existe diverses autres alternatives - vous pouvez garder
Il s'agit essentiellement d'un jeu de prédiction de cette valeur et de continuer à l'utiliser comme signal. Bien sûr, la prédiction ne sera pas la même qu'un échantillon original mais ce n'est pas le prix à payer pour ne pas avoir de données.
la source
Une méthode simple et générale pour remplir les données manquantes, si vous avez des séries de données complètes, consiste à utiliser la
régression linéaire . Supposons que vous ayez 1000 séries de 5 d'affilée sans qu'aucune ne manque.
Configurez le vecteur 1000 x 1 y et la matrice 1000 x 4 X:
La régression vous donnera 4 chiffres abcd qui donnent une meilleure correspondance
pour vos 1000 lignes de données - différentes données, différents abc d.
Ensuite, vous utilisez ces abcd pour estimer (prédire, interpoler) le poids manquant [0].
(Pour les poids humains, je m'attends à ce que abcd soit d'environ 1/4.)
En python, voir numpy.linalg.lstsq .
(Il y a des millions de livres et d'articles sur la régression, à tous les niveaux. Pour le lien avec l'interpolation, cependant, je ne connais pas de bonne introduction; quelqu'un?)
la source
la source
Je pense que la manière la plus simple serait de "prédire" la date du "tout" dans la série chronologique en utilisant les données précédentes. alors vous pouvez utiliser cette série temporelle pour l'estimation des paramètres. (vous pouvez ensuite continuer et reprédire les valeurs manquantes à l'aide de vos paramètres estimés de l'ensemble des séries temporelles (terminées) et répéter jusqu'à ce qu'elles convergent). vous devez cependant déduire les limites de confiance du nombre de points de données réels dont vous disposez, et non de la longueur des séries de données terminées.
la source