2016-11-11 4 views
-1

Ich möchte die Fläche unter der Kurve für eine Zeitreihe für mehrere Proben berechnen. die Zeitvariablen des Datentyps POSIXltR AUC mehrerer Proben in Zeitreihe

meine Daten wie diese

eingerichtet ist
day = c(rep(1, 4), rep(2,4)) 
time = c("2016-11-10 11:40:42", 
    "2016-11-10 11:45:42", 
    "2016-11-10 11:50:42", 
    "2016-11-10 11:55:42", 
    "2016-11-11 11:40:42", 
    "2016-11-11 11:45:42", 
    "2016-11-11 11:50:42", 
    "2016-11-11 11:55:42") 
time = as.POSIXlt(time) 
value = runif(8, min=4, max=20) 
combined = data.frame(day, time, value) 

    day    time  value 
1 1 2016-11-10 11:40:42 10.726758 
2 1 2016-11-10 11:45:42 14.123989 
3 1 2016-11-10 11:50:42 12.145620 
4 1 2016-11-10 11:55:42 7.254183 
5 2 2016-11-11 11:40:42 8.385879 
6 2 2016-11-11 11:45:42 16.411480 
7 2 2016-11-11 11:50:42 4.640858 
8 2 2016-11-11 11:55:42 17.300498 

würde Ich mag die AUC für jeden einzelnen Tag die Serie berechnen. Ich habe einen großen Datensatz mit einigen Tagen Daten. die Zeiten sind in der angegebenen Reihenfolge bereits (es ist eine kontinuierliche Messung über Maitagen)

Idealerweise würde ich die Ausgabe sein mag:

day AUC 
1 x 
2 x   
etc.... 

jede Hilfe sehr geschätzt.

+0

Bitte 'dput()' Ihre Daten. Bewegen Sie den Mauszeiger über das 'r'-Tag, um weitere Informationen zu erhalten. –

+0

@ Hack-R ok danke. das sollte jetzt ein reproduzierbares Beispiel sein – MLyall

+0

Es ist mir nicht klar, ob Sie den Bereich unter der Zeitreihe (wie eine kumulative Summe oder eine bestimmte Integration) oder den Bereich unter der Receiver-Betriebskurve (ROC) wollen. Gegenwärtig haben Sie eine Antwort für beide, sehr unterschiedliche Alternativen. – vincentmajor

Antwort

1

Haben Sie Vorhersagen und Ergebnisse ? Ich habe ein Beispiel erstellt, vorausgesetzt, dass Sie diese Spalten vermisst haben

# install.packages("ModelMetrics") 
library(ModelMetrics) 
library(dplyr) 

day = c(rep(1, 4), rep(2,4),) 
time = c("2016-11-10 11:40:42", 
    "2016-11-10 11:45:42", 
    "2016-11-10 11:50:42", 
    "2016-11-10 11:55:42", 
    "2016-11-11 11:40:42", 
    "2016-11-11 11:45:42", 
    "2016-11-11 11:50:42", 
    "2016-11-11 11:55:42") 
time = as.POSIXlt(time) 
outcome = as.numeric(runif(8, min=0, max=1) > .5) 
predictions = runif(8, min=0, max=1) 
combined = data.frame(day, time, outcome, predictions) 

combined %>% 
    group_by(day) %>% 
    summarise(
    Predictions = n() 
    ,AUCs = auc(outcome, predictions) 
) 
0

Ich weiß nicht, ob Sie den Mittelwert des Tages berechnet werden soll, oder die Summe ... aber Sie können diesen Code auf Ihre eigenen Bedürfnisse ändern:

df$day <- as.Date(df$day) 

df %>% 
    group_by(day) %>% 
    summarise(AUC = mean(value)) 
+0

danke für Ihre Antwort, es ist die Fläche unter der Kurve für jeden Tag, den ich brauche. – MLyall