Seite 1 von 1

Korrelation zweier zeitlicher Messreihen unterschiedlicher Taktung

Verfasst: Sa Feb 02, 2019 6:53 pm
von DisasterArea
Hallo,

ich habe als Datenbasis eine Umweltmessung, welche über einen Zeitraum Messungen am selben Ort zu einem physikalischen Parameter, z.B. Temperatur, mittels zweier Messsensoren aufgezeichnet hat. Es geht mir darum zu prüfen, in wieweit die beiden Sensoren zum selben Messergebnis kommen, wieweit ihre Messwerte also miteinander korrelieren.

Das Problem ist, dass beide Sensoren asynchron laufen und auch ihre Messungen in unterschiedlichen Frequenzen durchführen. Angenommen, die zeitliche Auflösung sei eine Sekunde, so sieht die Messreihe in etwa so aus (T=Zeitpunkt, S1 = Messwert Sensor 1, S2 = Messwert Sensor 2):

T , S1 , S2
T01, 22.3, 22.2
T02, - , -
T03, 22.4, -
T04, - , 22.3
T05, 22.4, -
T06, - , -
T07, 22.3, -
T08, - , 22.2

Im konkreten Fall gehe ich davon aus, dass mir zu dem einen Sensor in etwa ein Takt von 60 Sek. vorliegt, der andere Sensor mit 180 Sek., wobei hier Schwankungen um mehrere Sekunden möglich sind (180 +/- 10).
Ich bin nun kein Statistik Guru und müsste zunächst in dicken Wälzern zu angewandter Statistik blättern, aber vielleicht geht es hier ja schneller.

Also: Gibt es eine statistische Lösung für die Auswertung und wenn ja, wie ist diese mit R! zu machen? Ein paar Stichworte, unter denen ich dazu etwas finden könnte oder auch eine Lösung in R! wären wunderbar.

Gruß

DisasterArea

Re: Korrelation zweier zeitlicher Messreihen unterschiedlicher Taktung

Verfasst: Do Mär 28, 2019 1:42 pm
von Tilmann
Hallo DisasterArea,

falls die Temperaturen sich innerhalb 180 Sekunden nicht schnell ändern, gibt es die Möglichkeit den vorhergehenden Wert zu kopieren.
Das geht mit zoo::na.locf() (Last Observation carried forward), dazu müssen die Daten in einem data.frame vorliegen. Alternativ tidyvers::fill().

Eine andere Möglichkeit wäre, die Zeilen mit nur einem Temperaturwert zu unterdrücken.

Gruß
Tilmann

Re: Korrelation zweier zeitlicher Messreihen unterschiedlicher Taktung

Verfasst: Di Apr 02, 2019 9:24 pm
von consuli
Mein Vorschlag wäre:

- Einen zweiten gröberen Zeitindex "Tgrob" erzeugen, z.B. Tag und Stunden
- Dann S1 und S2 über Tgrob mit merge( ... , all= TRUE) redundant aufjoinen
- neue Variable "Tdiff" erzeugen, die die Zeitdifferenz des originären Zeitindex T enthält
- neue Variable "S1undS2vorhanden" erzeugen
- Redundanten Datensatz nach Tneu, S1undS2vorhanden, Tdiff aufsteigend sortieren
- Dubletten mit der Funktion unique() entfernen


Auf diese Weise erhältst Du jeweils einen Datenzeile pro Zeitindex "Tgrob" für die es beide Sensordaten gibt.