Sólo para asegurarse de que no es una respuesta aceptable, pero resumiendo, principalmente de otras personas sugerencias:
'Matemáticamente', lo que quiere es el área bajo la curva abs(blue - grey)
.
Estos valores (es decir, las diferencias absolutas) se obtienen fácilmente, y una vez que los tiene, puede usar cualquier método de integración (como la regla de Simpson o lo que se sugiere en el artículo al que enlaza) para obtener la superficie.
Como alternativa, y algo así como sugirió @Saurabh, puede utilizar el hecho de que la línea azul es una función de paso (¿o no?) Y la otra es una línea recta. Para esto, suma todos los valores x para los cuales se cruzan las líneas azul y gris, o se presenta un nuevo valor (se toma un 'paso') en la línea azul. Dividir el área de esta manera solo conducirá a triángulos y trapecios, y simplemente puede tomar el valor absoluto antes de resumirlos todos.
Incluso si la línea azul no es una función simple paso, pero todavía compuesta de líneas rectas, esto debería funcionar, aunque ahora tiene que dar cuenta de algunos casos adicionales ...
me falta algo aquí: ¿extrañaste las explicaciones de tu enlace? Si su azul [j] y gris [j] son datos, simplemente calcule 'sum (azul [j] -gray [j])' (no código R real), ajustado por la distancia entre los valores (su diff (x [id ])). Si el azul [j] es información y el gris es una función, simplemente calcule gris en los valores x en azul. –
La línea gris es la diagonal. Entonces debería ser algo como z <-abs (y-x); id <- order (x); AUC <- sum (diff (x [id]) * rollmean (z [id], 2)); – ECII
Debe indicar (después de pensarlo un segundo) si desea que el área cuente positivamente tanto cuando la línea azul está arriba como debajo de la línea gris. –