Seite 1 von 1

Lineare Regression mit Gewichten für ein Datum

Verfasst: Fr Okt 12, 2018 9:24 am
von Regression
Hallo Zusammen,

in der Linearen Regression möchte ich ein Datum vorhersagen, wo ein bestimmtes Wert erreicht wird, dabei sollen die aktuellen Werte (der letzte drittel) mehr gewicht erhalten, als die übrigen. Sei hierzu also der folgende Datensatz gegeben:

Code: Alles auswählen

DT<-data.table(Date=c("2018-02-26", "2018-02-27", "2018-02-28", "2018-03-01", "2018-03-02", "2018-03-05", "2018-03-06", "2018-03-08",
                       "2018-03-09", "2018-03-12", "2018-03-13", "2018-03-14", "2018-03-15", "2018-03-19", "2018-03-20" ,"2018-03-22",
                       "2018-03-24", "2018-03-26", "2018-03-27", "2018-03-28", "2018-03-29" ,"2018-03-30", "2018-04-03", "2018-04-04",
                       "2018-04-05", "2018-04-06", "2018-04-09", "2018-04-10", "2018-04-11" ,"2018-04-12", "2018-04-13", "2018-04-16",
                       "2018-04-17", "2018-04-18", "2018-04-19", "2018-04-20", "2018-04-23" ,"2018-04-24", "2018-04-25" ,"2018-04-26",
                       "2018-04-27", "2018-04-28", "2018-04-29", "2018-04-30", "2018-05-02" ,"2018-05-03", "2018-05-07", "2018-05-09",
                       "2018-05-14", "2018-05-15", "2018-05-16", "2018-05-18", "2018-05-22", "2018-05-23", "2018-05-25", "2018-05-31",
                      "2018-06-04" ,"2018-06-05" ,"2018-06-06" ,"2018-06-08" ,"2018-06-12" ,"2018-06-13" ,"2018-06-14" ,"2018-06-15",
                      "2018-06-16" ,"2018-06-18" ,"2018-06-20" ,"2018-06-21" ,"2018-06-25" ,"2018-06-27" ,"2018-07-02" ,"2018-07-03",
                       "2018-07-05" ,"2018-07-09" ,"2018-07-10", "2018-07-11", "2018-07-13" ,"2018-07-16", "2018-07-19", "2018-07-23"), Value=floor(jitter(100:21,5)))
DT[,Date:=as.Date(Date)]
Mein Ansatz bislang war:

Code: Alles auswählen

DT[,N:=rleidv(DT)]
DT[,weight:=ifelse(N> floor(.N*0.6), 2/3, 1/3)]
lm(Date ~ Value, data=DT, weights = weight)
Doch leider bekomme ich folgende Fehlermeldung:
Error in Ops.Date(y, wts) : * not defined for "Date" objects ]

Es muss doch eine Lösung geben das man auch das Datum gewichten kann :?:

Besten Dank im Voraus!
LG
Regression

Re: Lineare Regression mit Gewichten für ein Datum

Verfasst: Fr Okt 12, 2018 11:45 am
von jogo
Hallo Regression,

Code: Alles auswählen

library("data.table")

DT<-data.table(Date=c("2018-02-26", "2018-02-27", "2018-02-28", "2018-03-01", "2018-03-02", "2018-03-05", "2018-03-06", "2018-03-08",
                      "2018-03-09", "2018-03-12", "2018-03-13", "2018-03-14", "2018-03-15", "2018-03-19", "2018-03-20" ,"2018-03-22",
                      "2018-03-24", "2018-03-26", "2018-03-27", "2018-03-28", "2018-03-29" ,"2018-03-30", "2018-04-03", "2018-04-04",
                      "2018-04-05", "2018-04-06", "2018-04-09", "2018-04-10", "2018-04-11" ,"2018-04-12", "2018-04-13", "2018-04-16",
                      "2018-04-17", "2018-04-18", "2018-04-19", "2018-04-20", "2018-04-23" ,"2018-04-24", "2018-04-25" ,"2018-04-26",
                      "2018-04-27", "2018-04-28", "2018-04-29", "2018-04-30", "2018-05-02" ,"2018-05-03", "2018-05-07", "2018-05-09",
                      "2018-05-14", "2018-05-15", "2018-05-16", "2018-05-18", "2018-05-22", "2018-05-23", "2018-05-25", "2018-05-31",
                      "2018-06-04" ,"2018-06-05" ,"2018-06-06" ,"2018-06-08" ,"2018-06-12" ,"2018-06-13" ,"2018-06-14" ,"2018-06-15",
                      "2018-06-16" ,"2018-06-18" ,"2018-06-20" ,"2018-06-21" ,"2018-06-25" ,"2018-06-27" ,"2018-07-02" ,"2018-07-03",
                      "2018-07-05" ,"2018-07-09" ,"2018-07-10", "2018-07-11", "2018-07-13" ,"2018-07-16", "2018-07-19", "2018-07-23"), Value=floor(jitter(100:21,5)))
DT[, Date:=as.Date(Date)]

DT[, weight:=1]
DT[(1+floor(.N*0.6)):(.N), weight:=2]
lm(as.integer(Date) ~ Value, data=DT, weights = weight)
Gruß, Jörg

Re: Lineare Regression mit Gewichten für ein Datum

Verfasst: Fr Okt 12, 2018 1:44 pm
von Regression
TOP :!:
Danke