Come misurare l'accordo tra le curve?


11

Ho valori (tracciati di seguito) dei valori RSSI previsti nel tempo che vorrei confrontare con i miei valori RSSI misurati. Quello che stavo cercando era un modo per quantificarlo in modo da poter modificare i parametri ed essere in grado di confrontare / confrontare diversi approcci.

È un problema difficile nella mia mente perché non so come confrontare i segnali e tuttavia prendere in considerazione la grande scala (forma complessiva) e piccola scala (fluttuazioni individuali) del segnale.

Ad esempio, ecco un diagramma di un insieme di segnali: RSSI vs Time

Nell'immagine vedo che il segnale di misura rosso segue approssimativamente il modello, ma fa anche un lavoro OK nel simulare alcune delle qualità sinusoidali del modello (in alcuni punti). qualche idea?

<> In risposta ai commenti di Pichenettes (che sembrano ragionevoli), ho preso una diff dei due valori e ho tracciato gli abs (fft (diff)) e ho ottenuto questo: FFT

Non sono sicuro di cosa pensare. Dato che non disponiamo di freq effettivi, non sono sicuro di come ridimensionare l'asse e, se lo facessi, quale metrica useresti?


2
Che dire di calcolare qualcosa come l'errore quadrato in diverse gamme di frequenza (o suddividere le diverse in diverse bande di frequenza)? Nella gamma di frequenza inferiore misurerà le capacità di tracciamento complessive, indipendentemente da dossi veloci. Con una frequenza più alta, misurerà la capacità di tracciare i cambiamenti improvvisi indipendentemente da errori DC più grandi.
Pichenettes,

OK, ho aggiunto una nuova trama al post originale (come una modifica) per mostrare la fft (real (diff)), ma non sono sicuro di cosa farne.
toozie21

2
Prima li lisciavo entrambi; allora ottieni un ottimo accordo (supponendo che sia il risultato che desideri). PS Consiglio sempre di condividere i dati che hai utilizzato per creare i tuoi grafici in modo che possiamo aiutarti più facilmente.
Emre,

Quanto ti importa di abbinare la fase a frequenze più alte? Ho la sensazione che potresti voler confrontare direttamente il segnale nel dominio del tempo (dopo un filtro passa-basso), quindi confrontare il dominio della frequenza per frequenze più alte, probabilmente guardando solo la grandezza e ignorando la fase.
Dan Bryant,

@ toozie21 conosci già le posizioni temporali in cui cambiano le proprietà del segnale? ad es. 8 ms, 17ms .. ecc.
user13107

Risposte:


1

Se i segnali non sono allineati, ma hai la più pallida idea che "significano" più o meno la stessa cosa, o fanno riferimento a dati simili, puoi usare l'algoritmo di dinamizzazione del tempo dinamico (DTW) per ottenere una migliore corrispondenza (quindi semplicemente prendendo il valore nella stessa posizione). Puoi misurare RMS, MSE o qualunque cosa ti piaccia, usando quelle corrispondenze. Per DTW, potresti voler controllare: http://en.wikipedia.org/wiki/Dynamic_time_warping

Un buon modo per elaborare questa idea è utilizzato in Earth Mover Distance (EMD), che calcola il minimo sforzo per portare i segnali all'allineamento, come misura della distanza. EMD è presentato qui: http://ai.stanford.edu/~rubner/emd/default.htm

EMD ti fornisce una distanza diretta, che potresti utilizzare per ulteriori analisi.


0

Sto usando RMS del vettore dell'errore come misura. Dato che ho a che fare con schemi di modulazione complessi, utilizzo anche EVM come misura.


0

Probabilmente combinerei alcuni approcci. Prima di tutto vorrei lisciare entrambe le forme d'onda o fare un'interpolazione spline per rimuovere le variazioni su larga scala. Potresti voler combinare un altro passo dopo quello di una correlazione incrociata per allinearli, supponendo che il bias del tempo non abbia importanza per te. Una volta ottenuto il picco di correlazione incrociata, è possibile anche interpolare quel picco su una forma di parabola e quindi ricampionare una forma d'onda in modo che corrisponda all'altra. A quel punto calcolerei l'RMSE tra le due forme d'onda e produrrei una metrica che indica il delta che varia lentamente.

Dopodiché avrei sottratto il valore interpolato dall'originale in modo da normalizzare le deviazioni su scale temporali ridotte. Da lì potresti provare a farli rMSE l'uno contro l'altro o anche solo calcolare una varianza di ciascuno, per avere un'idea di quanto "rumore" hai sulla forma d'onda che varia lentamente, a seconda di cosa hai bisogno e cosa stai effettivamente provando misurare.

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.