Временные ряды в R

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

Данные, которые у меня есть, имеют следующий формат:

date -> weight  -> body-fat-percentage  -> water-percentage

e.g.

10/08/09 -> 84.30 -> 18.20 -> 55.3

Что я хочу сделать

plot вес и экспоненциальное скользящее среднее в зависимости от времени

Как я могу этого добиться?


person Christian Stade-Schuldt    schedule 10.10.2009    source источник


Ответы (3)


Считайте данные в R, используя x <- read.csv(filename). Убедитесь, что даты указаны как класс символов, а вес — как число.
Затем используйте следующее:

require(zoo)
require(forecast) # Needed for the ses function
x$date <- as.Date(x$date,"%m/%d/%Y") # Guessing you are using the US date format
x$weight <- zoo(x$weight,x$date) # Allows for irregular dates
plot(x$weight, xlab="Date", ylab="Weight") # Produce time plot
ewma <- as.vector(fitted(ses(ts(x$weight)))) # Compute ewma with parameter selected using MLE
lines(zoo(ewma,x$date),col="red") # Add ewma line to plot
person Rob Hyndman    schedule 10.10.2009
comment
Есть проблема, с которой я сталкивался в прошлом. Все учебники, которые я нашел, используют частоту. Данные, которые у меня есть, это даты. Я почти каждый день записывал свой вес. Хотя однажды я забыл об этом. В результате нет четкой частоты, но есть соотношение дата-вес. - person Christian Stade-Schuldt; 11.10.2009
comment
Я изменил свой ответ, чтобы учесть нерегулярные даты и не указанную частоту. - person Rob Hyndman; 11.10.2009
comment
Я попробовал ваше решение, диаграмма работает, но когда дело доходит до сглаживания, я получаю сообщение об ошибке, что объект wt не может быть найден. - person Christian Stade-Schuldt; 13.10.2009

Похоже, вам нужно обрабатывать временные ряды с неравномерным интервалом, поэтому ts не вариант. Используйте одну из других библиотек временных рядов. zoo является наиболее широко используемым, но есть и другие варианты: timeSeries, xts, fts и its. Взгляните на представление CRAN: http://cran.r-project.org/web/views/TimeSeries.html.

Одна проблема, которую я вижу прямо сейчас, — это ваш формат даты. Я предлагаю либо сначала переформатировать дату в ваших данных, либо использовать функцию format() в R, но вам нужно будет преобразовать их в объект Date или POSIX в R, чтобы использовать его с пакетом временных рядов.

Вы можете использовать функцию read.zoo() для чтения в вашем файле временного ряда. Также обратите внимание на виньетку. Что касается EWMA, я считаю, что там тоже есть несколько вариантов. У Rmetrics и TTR есть версии.

Я опубликую пример, когда доберусь до компьютера. Кстати, ресурсов на эту тему много. Взгляните на эту электронную книгу: http://www.rmetrics.org/ebooks/TimeSeriesFAQ.pdf .

person Shane    schedule 11.10.2009

Этим летом вышла действительно хорошая книга о временных рядах в R.

https://rads.stackoverflow.com/amzn/click/com/0387886974

если вы хотите углубиться в тему.

-k

person knguyen    schedule 07.11.2009