2015-11-19 4 views
0

Это может быть основной вопрос, но я искал множество списков, чтобы найти то, что я ищу. В принципе, позвольте мне описать набор данных. У меня есть набор данных из системы продажи билетов, которая представляет разрешенные билеты. Я смотрю на время разрешения билетов со временем, чтобы узнать, растет ли время моего разрешения, снижается или выравнивается. Есть много билетов каждый день (где-то около 200 или около того). Я вытаскиваю все данные каждый день и вычисляю время в считанные дни, чтобы билет был разрешен. Я делаю это с R, так что я в конечном итоге с кадром данных, который выглядит как:Скользящие средние против совокупных средних или?

1/1/2015 INC00001 1.23 
1/1/2015 INC00002 .089 

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

Диаграмма Я хотел бы видеть, будет напоминать что-то вроде этого:

Chart1 [

Но гладкой, вроде как биржевых сводок, так что я вроде знаю, что общее среднее ведет вверх на текущий день. Может ли кто-нибудь указать мне в направлении того, что это будет вызвано, и как можно было бы сделать это в R? Спасибо!!

+0

Также рассмотрим линию «лесс». – Gregor

ответ

1

Это можно сделать быстро и легко с помощью dplyr. Вот некоторые примеры данных:

library(dplyr) 

x <- 1:3000 
y <- 10 + 1:3000/300 + 2 * sin(pi * x/150) + rnorm(3000, sd = 0.1) 

df <- data.frame(x = x, y = y) 

Вот plot of the data. А вот как вы можете использовать dplyr создать скользящее среднее и совокупное среднее:

df.avgs <- 
    df %>% 
    mutate(
     roll.avg = (y + lag(y, 1) + lag(y, 2) + lag(y, 3) + 
         lag(y, 4) + lag(y, 5) + lag(y, 6) + lag(y, 7) + 
         lag(y, 8) + lag(y, 9))/10, 
     cum.avg = cummean(y) 
    ) 

Вот plot of the rolling average. К сожалению, у меня недостаточно репутации, чтобы добавить третью ссылку на график совокупного среднего. Обратите внимание, что этот метод расчета скользящего среднего не является толерантным к значениям NA. Один из NA в исходных данных будет создавать десять значений NA в данных скользящего среднего. Вы можете обойти это, заменив сначала значения NA с помощью интерполированных значений.

+0

clbiegankek - Спасибо за ответ. Я считаю, что это именно то, что я ищу. Не превращать это в математическое поражение, но в чем разница между скользящим средним и суммарным средним. Кроме того, у меня всего около 56 тыс. Инцидентов - около 200 человек создаются в день. Как вы предлагаете мне обрабатывать группировки по этим данным при расчете скользящего/кумулятивного среднего значения, так что средние значения выходят примерно в день? Благодаря! – azdatasci

+0

Также - на основе формата фрейма данных, который я помещал в исходное сообщение, как я мог бы передать это в ваш пример, скажем, если имя столбца - это dataframe $ resolutiontime? Благодаря! – azdatasci

+0

Скажите, что вы находитесь в строке 1010 в вашем фрейме данных. Скользящее среднее, как вычислено выше, дает среднее время разрешения для строк от 1001 до 1010. Совокупное среднее дает среднее время разрешения строк от 1 до 1010. Другими словами, совокупное среднее всегда дает вам среднее значение всех строк до текущей строки. Попробуйте ввести 'cummean (1:10)' в ваш интерпретатор (если вы загрузили 'dplyr'). – clbieganek