Я пытаюсь вычислить площадь между двумя графиками, используя функцию R. У меня есть два прогноза кривые, которые я могу разместить на том же участке, а также тень в области между двумя кривыми, для визуализации:Ошибка вычисления области между двумя строками с помощью «integrate»
x1 = seq(1,200,1)
y1 = # 200 numbers from 0.02 - 1.000
y2 = # 200 numbers from 0.00 - 0.95
plot(x1,y1,type="l",bty="L",xlab="Forecast Days",ylab="Curve Actuals")
points(x1,y2,type="l",col="red")
polygon(c(x1,rev(x1)),c(y2,rev(y1)),col="skyblue")
После примера здесь https://stat.ethz.ch/pipermail/r-help/2010-September/251756.html я пытался выполнить то же самое код для моих данных для расчета между двумя кривыми. Как указано в примере «область между двумя кривыми такая же, как интеграл от разности между этими двумя кривыми (соответственно абсолютных значений.)»:
f1 = approxfun(x1, y1-y2) # piecewise linear function
f2 = function(x) abs(f1(x)) # take the positive value
integrate(f2, 1, 200)
Однако я получаю следующую ошибку:
Error in integrate(f2, 1, 200) : maximum number of subdivisions reached
Оцените любую ясность, которую можно пролить на это. Благодаря!
Вы можете увеличить количество «подразделений», но тогда вы, скорее всего, получите ошибку округления. Вместо этого я предлагаю вычислить интеграл без приближений. Это не так сложно, используя некоторую геометрию. – Roland