Интегрировать непараметрическую кривую в R

#r

#r

Вопрос:

Просто предупреждение, я начал использовать R в день ago…my приношу извинения, если что-то кажется идиотски простым.

Прямо сейчас я пытаюсь заставить R взять .txt-файл с данными acelerometer об ударе и рассчитать для него критерий травмы головы. Тест HIC требует, чтобы кривая из данных была интегрирована с определенным интервалом.

Уравнение находится по ссылке ниже … я попытался вставить его сюда в виде изображения, но это мне не позволило. По-видимому, мне нужно несколько очков репутации, прежде чем это позволит мне это сделать.

уравнение

a (t) — это кривая ускорения.

До сих пор у меня не возникало проблем с созданием подходящей кривой в R для сопоставления данных. Функция Лесса работала довольно хорошо, и это именно то, что я искал … я просто понятия не имею, как ее интегрировать. Насколько я могу судить, loess — это непараметрическая регрессия, поэтому нет способа определить уравнение кривой iteslf. Есть ли способ ее интегрировать?

Если нет, есть ли другой способ выполнить эту задачу, используя другую функцию?

Любая помощь или проницательные комментарии были бы очень признательны.

Заранее спасибо,

Wes

Еще один вопрос, Джеймс, как я могу просто получить число без текста и ошибок при использовании функции integrate()?

Комментарии:

1. Разве вы не можете «интегрировать» путем линейной интерполяции между последующими точками данных и каждый раз вычислять площадь под линиями (трапеция)? Похоже, вам все равно не понадобится точность (поскольку вы готовы принять лесс в качестве аппроксимации функции)?

2. Ну, проблема с использованием самих точек, а не подогнанной линии заключается в том, что датчики, как правило, создают довольно много шума … цель состоит в том, чтобы сгладить это. Я действительно думаю, что использование линии, подобной лессу, в качестве приближения на самом деле будет ближе.

Ответ №1:

Вы можете использовать predict функцию в своей loess модели, чтобы создать функцию для использования integrate .

 # using the inbuilt dataset "pressure"
plot(pressure,type="l")

# create loess object and prediction function
l <- loess(pressure~temperature,pressure)
f <- function(x) predict(l,newdata=x)

# perform integration
integrate(f,0,360)
40176.5 with absolute error < 4.6
  

И извлекать значение в одиночку:

 integrate(f,0,360)$value
[1] 40176.5
  

Комментарии:

1. Еще один вопрос, Джеймс, как я могу просто получить число без текста и ошибок?

2. комментарий @user1003131 Бена верен, я добавлю его к ответу

3. @user1003131 Не стесняйтесь принимать этот ответ как правильный, в качестве благодарности тем, кто вам помог.

4. @Nick Sabbe- Спасибо, что указали на это, я новичок в этом форуме и не знал об этом.