2016-11-11 7 views
-1

Я хотел бы рассчитать площадь под кривой для временного ряда для нескольких выборок. временные переменные типа данных POSIXltR AUC нескольких образцов во временных рядах

мои данные созданы как этот

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 

Я хотел бы рассчитать AUC для каждого дня серии. У меня большой набор данных с данными дней. времена в последовательном порядке уже (это непрерывное измерение в течение майских дней)

в идеале я хотел бы выход быть:

day AUC 
1 x 
2 x   
etc.... 

любая помощь очень ценится.

+0

Пожалуйста, 'dput()' ваши данные. Наведите указатель мыши на тег 'r' для получения дополнительной информации. –

+0

@ Hack-R хорошо спасибо. это должен быть воспроизводимый пример. – MLyall

+0

Неясно, нужна ли вам область под временными рядами (например, суммарная сумма или определенная интеграция) или область под кривой работы приемника (ROC). В настоящее время у вас есть ответ для обоих, очень разные альтернативы. – vincentmajor

ответ

1

Возникли прогнозы и результаты ? Я привел пример, предполагающий, что вам не хватает этих столбцов.

# 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

Я не знаю, если вы хотите, чтобы вычислить среднее за день, или сумма ... но вы можете изменить этот код для собственных нужд:

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

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

Спасибо за ваш ответ, его площадь под кривой за каждый день, который мне нужен. – MLyall

Смежные вопросы