In che modo una media mobile dovrebbe gestire i punti dati mancanti?


10

Sto scrivendo un programma che fa la media del peso dell'utente in giorni diversi. Sto pensando di utilizzare una media mobile di 5 punti (giorno corrente, due prima e due dopo). A volte, manca un punto dati per 1-2 giorni. Come vengono generalmente gestiti questi casi?

(se c'è un filtro passa-basso migliore che potrei usare, mi piacerebbe suggerimenti)


la prima cosa che mi viene in mente è di interpolare i punti prima di usare il filtro a media
mobile

3
Davvero più una domanda statistica che una domanda di elaborazione del segnale, almeno in assenza di più contesto. Ma puoi semplicemente saltare di nuovo il calcolo della media, utilizzare la media corrente come valore di sostituzione o attendere successive misurazioni e tentare l'interpolazione, lineare o in altro modo.
Daniel R Hicks,

Come notato dagli altri, questa sarà in genere una decisione specifica dell'applicazione basata sulla considerazione di come si desidera che si comporti l'output filtrato. La maggior parte della teoria dell'elaborazione del segnale si basa su campioni distribuiti uniformemente, quindi non otterrai qualcosa che può essere oggettivamente definita la "risposta giusta".
Jason R,

@JasonR I filtro per dare una stima più ragionevole del peso dell'utente a quel punto. I dati vengono campionati in modo uniforme (frequenza di campionamento = 1 / giorno), ad eccezione di alcuni punti dati mancanti.
Anna,

@Anna: giusto, capisco perché stai filtrando i dati. Tuttavia, i dati non vengono campionati in modo uniforme poiché mancano punti dati. Pertanto, come ho notato, è improbabile che tu possa trovare una risposta teorica soddisfacente al tuo problema. Una soluzione ad hoc che ritieni "sensata" per la tua specifica applicazione sarà probabilmente la risposta.
Jason R,

Risposte:


4

Come impressione generale, la regressione funzionerebbe meglio adattando automaticamente i punti mancanti piuttosto che un filtro della media mobile che hai scelto.

Se si utilizza un filtro AR (filtro regressivo automatico) o ARMA, è possibile avere un valore previsto di un output di esempio in base agli input passati.

X^[i]=ωkx[i1k]+η

Dove è il valore previsto.X^[i]

In particolare nel tuo caso, supponi di sapere che il peso della persona ha un intervallo specifico . Ora se non hai il valore - applica due sostituzioni diverse - una con Min e una con Max e in base al modello disponibile avrai due risultati di casi estremi per e puoi scegli qualcosa tra loro. x [ i - 1 ] X [ i ]Xmax,Xminx[i1]X^[i]

Esistono varie altre alternative: puoi mantenerle

X^[i]=X[i1]
o
X^[i]=Long term sample average of X 

Essenzialmente è un gioco di predizione di quel valore e continua a usarlo come segnale. Ovviamente, la previsione non sarà la stessa di un campione originale ma non è il prezzo da pagare per non avere dati.


2
Perché dici che la regressione funzionerebbe meglio nell'adattamento? Grazie
Spacey il

3

Un metodo semplice e generale per compilare i dati mancanti, se si dispone di serie di dati completi, è utilizzare la
regressione lineare . Supponi di avere 1000 esecuzioni di 5 di fila e nessuna mancante.
Imposta il vettore y 1000 x 1 e la matrice X 1000 x 4:

y       X
wt[0]   wt[-2] wt[-1] wt[1] wt[2]
---------------------------------
68      67     70     70    68
...

La regressione ti darà 4 numeri abcd che danno la migliore corrispondenza

wt[0] ~= a * wt[-2]  + b * wt[-1]  + c * wt[1]  + d * wt[2]

per le tue 1000 file di dati - dati diversi, abc diversi d.
Quindi si utilizzano questi abcd per stimare (prevedere, interpolare) il peso mancante [0].
(Per i pesi umani, mi aspetto che circa un 1/4 circa).

In python, vedi numpy.linalg.lstsq .

(Ci sono miliardi di libri e documenti sulla regressione, a tutti i livelli. Per la connessione con l'interpolazione, tuttavia, non conosco una buona introduzione; qualcuno?)


1

[a,b,c,?,e]

a+b+c+e4

1

penso che il modo più semplice sarebbe quello di "prevedere" la data per il "tutto" nelle serie temporali usando i dati precedenti. quindi è possibile utilizzare questa serie temporale per la stima dei parametri. (è quindi possibile procedere e riproprimere i valori mancanti utilizzando i parametri stimati dall'intero (completato) multiproprietà e ripeterlo fino a quando non convergono). dovresti derivare i limiti di confidenza dal numero di punti dati reali che hai, tuttavia, e non dalla lunghezza dei dataseries completati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.