Как рассчитать площадь под сглаженной линией

Недавно я задал вопрос о том, как рассчитать площадь под кривой здесь:

Как рассчитать площадь под каждым концом синусоиды

И я получил несколько хороших ответов, все из которых касались функции прогнозирования, используемой в модели линейной регрессии. Теперь я хотел бы рассчитать аналогичную площадь под кривой, но линия, формирующая кривую, представляет собой простую сглаженную подгонку (не основанную на каком-либо регрессионном анализе).

Итак, учитывая набор данных:

y<-c(-13,16,35,40,28,36,43,33,40,33,22,-5,-27,-31,-29,-25,-26,-31,-26,-24,-25,-29,-23,4)
t<-1:24

Я хотел бы подогнать сглаженную линию к своим данным (среднее значение 2 точек выше и ниже), например:

Smooth<-as.vector(filter(y,filter=rep(1,4))/4)

#I don't want to loose my first and last data points, so I cheat and add them back in.
Check<-data.frame(y,Smooth)
Smooth2<-ifelse(is.na(Check$Smooth),y, Check$Smooth)


plot(t,y)
abline(h=0,lty=2)
lines(t,Smooth2)

Далее я хочу рассчитать площадь под положительной кривой, а также площадь под отрицательной кривой. Я предполагаю, что это будет включать в себя поиск 3 корней (где линия проходит через ноль), чтобы определить, где начинается и заканчивается положительная кривая, а также начинается и заканчивается отрицательная кривая.


person Vinterwoo    schedule 24.02.2016    source источник
comment
Просто используйте что-то вроде approxfun, а не predict, чтобы получить функцию, предсказывающую y значений для каждого x: f<-approxfun(t,Smooth2). Этот вопрос ничем не отличается   -  person MrFlick    schedule 25.02.2016
comment
Согласитесь с @MrFlick: в этой функции сглаживания нет ничего особенного. Вы можете просто запустить: library(MESS) ; auc(t, pmax(Smooth2, 0)) для положительной области и auc(t, pmin(Smooth2,0)) для отрицательной.   -  person ekstroem    schedule 25.02.2016