2017-04-07 2 views
1

Ich bin Anfänger Programmierer auf der Suche nach Hilfe mit Simple Moving Average SMA. Ich arbeite mit Spaltendateien, wobei die erste mit der Zeit und die zweite mit dem Wert verbunden ist. Die Zeitintervalle sind zufällig und auch der Wert. Normalerweise sind die Dateien nicht groß, aber der Prozess sammelt Daten für lange Zeit. Am Ende sehen die Dateien ähnlich aus:Einfacher gleitender Durchschnitt für zufällig in Beziehung stehende Zeitwerte

+-----------+-------+ 
| Time | Value | 
+-----------+-------+ 
| 10  |  3 | 
| 1345  | 50 | 
| 1390  |  4 | 
| 2902  | 10 | 
| 34057  | 13 | 
| (...)  |  | 
| 898975456 | 10 | 
+-----------+-------+ 

Nach dem ganzen Prozess ist die Anzahl der Zeilen um 60k-100k.

Dann versuche ich, Daten mit einigen Zeitfenster zu "glätten". Zu diesem Zweck benutze ich SMA. [AWK_method]

awk 'BEGIN{size=$timewindow} {mod=NR%size; if(NR<=size){count++}else{sum-=array[mod]};sum+=$1;array[mod]=$1;print sum/count}' file.dat 

mit $timewindow vordefinierten ordnungsgemäßem Betrieb von SMA achive i mit Nullen gefüllt lineares Inkrement erstellen. Als nächstes führe ich ein Skript mit verschiedenen $timewindow und ich beobachte die Ergebnisse.

 
+-----------+-------+ 
| Time | Value | 
+-----------+-------+ 
| 1   |  0 | 
| 2   |  0 | 
| 3   |  0 | 
| (...)  |  | 
| 10  |  3 | 
| 11  |  0 | 
| 12  |  0 | 
| (...)  |  | 
| 1343  |  0 | 
| (...)  |  | 
| 898975456 | 10 | 
+-----------+-------+ 

Für kleine Daten war es relativ bequem, aber jetzt ist es ziemlich zeitverschlingenden und erstellte Dateien zu groß zu sein, zu starten. Ich bin auch vertraut mit Gnuplot aber SMA dort die Hölle ...

hier So sind meine Fragen:

  • Ist es möglich, die awk-Lösung zu ändern Füllen Daten mit Nullen zu umgehen?
  • Empfehlen Sie irgendeine andere Lösung mit Bash?
  • Ich habe auch darüber nachgedacht, Python zu lernen, weil ich nach 6 Monaten des Lernens Bash seine Begrenzung kennen gelernt habe. Kann ich das in Python lösen, ohne große Daten zu erstellen?

Ich werde mich mit jeder Form von Hilfe oder Ratschläge freuen.

Mit freundlichen Grüßen!

[AWK_method] http://www.commandlinefu.com/commands/view/2319/awk-perform-a-rolling-average-on-a-column-of-data

+0

Was ist te erwartete Ausgabe für diese Probe Zufallsdaten? –

Antwort

0

Sie enthalten ein Python-Tag Besuche Spuren:

http://traces.readthedocs.io/en/latest/

Hier sind einige andere Erkenntnisse:

Moving average for time series with not-equal intervls

http://www.eckner.com/research.html

https://stats.stackexchange.com/questions/28528/moving-average-of-irregular-time-series-data-using-r

https://en.wikipedia.org/wiki/Unevenly_spaced_time_series

Schlüsselbegriff in bold für weitere Forschung:

In Statistiken, Signalverarbeitung und econometrics ein ungleichmäßig (oder ungleichmßig oder unregelmßig) beabstandeten Zeitreihe ist eine Folge von Beobachtungszeit und Wertpaaren (tn, Xn) mit streng steigenden Beobachtungszeiten. Im Gegensatz zu gleich beabstandeten Zeitreihen ist der Abstand der Beobachtungszeiten nicht konstant.

0
awk '{Q=$2-last;if(Q>0){while(Q>1){print "| "++i"  |  0 |";Q--};print;last=$2;next};last=$2;print}' Input_file 
Verwandte Themen