Zeitberechnung im lm- model
Verfasst: Do Feb 01, 2018 8:38 am
Liebes Forum ich habe folgendes Anliegen:
Gegeben sei folgender Datensatz:
zu einem gewissen Zeitpunkt gibt es ein entsprechendes Wert x, dieser kann die Werte zwischen 0:100 annehmen.
Dieser Datensatz ist nicht vollständig. Mich interessiert nun die "Lebensdauer" (in Tagen) von x.
Der Format von Datum ist Date, und von Wert x num.
Um die Start- und End-Werte zu bekommen verwende ich die lineare Regression:
Das model.lm liefert mir die Koeffizienten mit denen ich den Start- und Endwert berechnen kann:
Da model.lm y=Intercept+(x*beta) liefert, und ich an x interessiert bin, muss ich noch in (y-Intercept)/beta=x umformen.
Der Wert in dieser Formel soll 100 für Start und 0 für Ende annehmen.
Das Problem bei mir ist nun, dass natürlich ein numerischer Wert aus dieser Formel rauskommt.
Nun möchte ich berechnen, was selbstverständlich wieder ein numerischer Wert ist.
Hier weiß ich leider nicht, wie ich diesen Wert in "Tage" umwandeln kann.
Für den Endwert bekommen ich end=69076.27 und für den Startwert start=69477.26
Nun habe ich mitversucht, da ich gelesen hab, das R ab diesem Datum rechnet.
Als Ergenbis erhalte ich "2089-02-14" was überhaupt nicht hinkommen kann.
(Meine Hoffnung war, dass ich anschließend mit difftime, das Gewünschte Ergebnis erlange)
Also eventuell meine Frage ganz allgemein:
Wie geht man mit Datum-Variable in lm um.
Ich hätte erwartet, dass es ein absolut Standard Problem ist, bin aber mit Google nicht wirklich weiter gekommen.
Bin wirklich am verzweifeln.
Ich bedanke mich für eure Antworten im Voraus.
Gegeben sei folgender Datensatz:
Code: Alles auswählen
"1";"2016-09-29";83
"2";"2016-09-30";80
"3";"2016-10-01";78
"4";"2016-10-03";77
"5";"2016-10-04";75
"6";"2016-10-05";73
"7";"2016-10-06";69
"8";"2016-10-07";62
"9";"2016-10-08";60
"10";"2016-10-10";58
"11";"2016-10-11";56
"12";"2016-10-12";55
"13";"2016-10-13";53
"14";"2016-10-14";49
"15";"2016-10-15";48
"16";"2016-10-17";46
"17";"2016-10-18";44
"18";"2016-10-19";43
"19";"2016-10-20";41
"20";"2016-10-21";38
"21";"2016-10-22";36
"22";"2016-10-24";34
"23";"2016-10-25";33
"24";"2016-10-26";32
"25";"2016-10-27";30
"26";"2016-10-28";27
"27";"2016-10-29";26
"28";"2016-11-01";24
"29";"2016-11-02";22
"30";"2016-11-03";19
"31";"2016-11-04";16
"32";"2016-11-05";14
"33";"2016-11-07";12
"34";"2016-11-08";10
Dieser Datensatz ist nicht vollständig. Mich interessiert nun die "Lebensdauer" (in Tagen) von x.
Der Format von Datum ist Date, und von Wert x num.
Um die Start- und End-Werte zu bekommen verwende ich die lineare Regression:
Code: Alles auswählen
model.lm<-lm(TestData$x~TestData$Datum)
Da model.lm y=Intercept+(x*beta) liefert, und ich an x interessiert bin, muss ich noch in (y-Intercept)/beta=x umformen.
Code: Alles auswählen
(Wert-(model.lm$coefficients[1]))/model.lm$coefficients[2]
Das Problem bei mir ist nun, dass natürlich ein numerischer Wert aus dieser Formel rauskommt.
Nun möchte ich
Code: Alles auswählen
Ende-Start
Hier weiß ich leider nicht, wie ich diesen Wert in "Tage" umwandeln kann.
Für den Endwert bekommen ich end=69076.27 und für den Startwert start=69477.26
Nun habe ich mit
Code: Alles auswählen
as.Date(end, origin="1900-01-01")
Als Ergenbis erhalte ich "2089-02-14" was überhaupt nicht hinkommen kann.
(Meine Hoffnung war, dass ich anschließend mit difftime, das Gewünschte Ergebnis erlange)
Also eventuell meine Frage ganz allgemein:
Wie geht man mit Datum-Variable in lm um.
Ich hätte erwartet, dass es ein absolut Standard Problem ist, bin aber mit Google nicht wirklich weiter gekommen.
Bin wirklich am verzweifeln.
Ich bedanke mich für eure Antworten im Voraus.