jogo hat geschrieben: ↑Mo Mär 05, 2018 11:41 am
Dies habe ich noch nicht ganz verstanden:
Regression hat geschrieben: ↑Fr Mär 02, 2018 3:38 pm
Im Prinzip soll das Datum für den Datensatz ab der letzten Flanke vorausgesagt werden, wann der Level 10 erreicht wird. Wenn es noch keine gibt dann eben aus dem aktuellen Datensatz, darauf wird geachtet, dass eben die Flanke groß genug ist also ab Level 60, und genügend Abmessungen vorhanden sind.
Gruß, Jörg
Es soll die "Lebensdauer" eines Devices (V1) bestimmt werden und vorausgesagt werden wann die Lebensdauer nur noch 10 (Prozent) beträgt (also Level= 10).
Der Lebenszyklus ist periodisch von ~100 bis ~0 Prozent.
Mich interessiert (in diesem Fall) lediglich der letzte Lebenszyklus, also ab der letzten Flanke (last_flanc), falls noch keine Flanke vorhanden, so betrachte ich den kompletten Datenbestand für die aktuelle Gruppe
Dazu berechne ich die Differenz von Level. An der Stelle wo es eine positive Differenz auftritt, beginnt ein neuer Lebenszyklus.
Weitere Restrektion: Der Lebenszyklus muss mind. ab 60% bedinnen.
Weiter prüfe ich, ob ausreichend Messdaten vorhanden ist (also mehr als 10) mit:
ich hoffe es ist etwas klarer geworden.
Hier ist nun meine aktuelle Funktion, die ebenfalls das richtige Datum Format ausgibt:
Code: Alles auswählen
test_date_forecast<-function(Main.Data,Level_alert=10){
setDT(Main.Data)
Main.Data[,Difference:=c(0,diff(Level))]
zeilen<-Main.Data[,which(Difference>60)]
if(length(zeilen)>0){
last_flanc<-Main.Data[last(zeilen):length(Main.Data$V1),]
if(length(last_flanc$V1)>=10){
lm1.model<- lm(last_flanc$Date~last_flanc$Level)
Level_al<-lm1.model$coefficients[1]+(Level_alert*lm1.model$coefficients[2])
forecast_alert<-as.Date(Level_al,origin = "1970-01-01")
}else{forecast_alert<-"insufficient Data"}
}
else{
if(length(Main.Data$Level)>=10){
lm1.model<- lm(Main.Data$Date~Main.Data$Level)
Level_al<-lm1.model$coefficients[1]+(Level_alert*lm1.model$coefficients[2])
forecast_alert<-as.Date(Level_al,origin = "1970-01-01")
}
else{forecast_alert<-"insufficient Data"}
}
forecast_alert<-as.character(forecast_alert)
return(forecast_alert)
}
Nachtrag:
läuft immer noch nicht
es kommt folgende Fehlermeldung:
`[.data.table`(Main.Data, , `:=`(Difference, c(0, diff(Level)))) :
.SD is locked. Using := in .SD's j is reserved for possible future use; a tortuously flexible way to modify by group. Use := in j directly to modify by group by reference.
NACHTRAG:
ES LÄUFT!!!!
Kleiner Fix hats getan:
Noch mal Besten Dank für den Support!!!!