2013-12-23 4 views
1

Источник этих данных - показатели производительности сервера. У меня есть среднее (os_cpu) и стандартное отклонение (os_cpu_sd). Среднее ясно не говорит всей истории, поэтому я хочу добавить стандартное отклонение. Я начал путь geom_errorbar, но я считаю, что это стандартная ошибка. Каким будет приемлемый способ построения этих показателей? Ниже воспроизводимый пример:Среднее и стандартное отклонение графика

DF_CPU <- structure(list(end = structure(c(1387315140, 1387316340, 1387317540, 
    1387318740, 1387319940, 1387321140, 1387322340, 1387323540, 1387324740, 
    1387325940, 1387327140, 1387328340, 1387329540, 1387330740, 1387331940, 
    1387333140, 1387334340, 1387335540, 1387336740, 1387337940, 1387339140, 
    1387340340, 1387341540, 1387342740, 1387343940, 1387345140, 1387346340, 
    1387347540, 1387348740, 1387349940), class = c("POSIXct", "POSIXt" 
    ), tzone = "UTC"), os_cpu = c(14.8, 15.5, 17.4, 15.6, 14.9, 14.6, 
    15, 15.2, 14.6, 15.2, 15, 14.5, 14.8, 15, 14.6, 14.9, 14.9, 14.4, 
    14.8, 14.9, 14.5, 15, 14.6, 14.5, 15.3, 14.6, 14.6, 15.2, 14.5, 
    14.5), os_cpu_sd = c(1.3, 2.1, 3.2, 3.3, 0.9, 0.4, 1.4, 1.5, 
     0.4, 1.6, 1, 0.4, 1.4, 1.4, 0.4, 1.3, 0.9, 0.4, 1.4, 1.3, 0.4, 
     1.7, 0.4, 0.4, 1.7, 0.4, 0.4, 1.7, 0.5, 0.4)), .Names = c("end", 
      "os_cpu", "os_cpu_sd"), class = "data.frame", row.names = c(1L, 
       5L, 9L, 13L, 17L, 21L, 25L, 29L, 33L, 37L, 41L, 45L, 49L, 53L, 
       57L, 61L, 65L, 69L, 73L, 77L, 81L, 85L, 89L, 93L, 97L, 101L, 
        105L, 109L, 113L, 117L)) 

head(DF_CPU) 
        end os_cpu os_cpu_sd 
1 2013-12-17 21:19:00 14.8  1.3 
5 2013-12-17 21:39:00 15.5  2.1 
9 2013-12-17 21:59:00 17.4  3.2 
13 2013-12-17 22:19:00 15.6  3.3 
17 2013-12-17 22:39:00 14.9  0.9 

ggplot(data=DF_CPU, aes(x=end, y=os_cpu)) + 
    geom_line()+ 
    geom_errorbar(aes(ymin=os_cpu-os_cpu_sd,ymax=os_cpu+os_cpu_sd), alpha=0.2,color="red") 

enter image description here

Per @ ари-б-Friedman предложение, вот как это выглядит с geom_ribbon(): enter image description here

+5

Я думаю, что вы можете использовать 'geom_errorbar' просто отлично здесь, но так как они связаны, вы считаете' geom_ribbon'? http://docs.ggplot2.org/current/geom_ribbon.html –

+2

Вы можете использовать 'geom_errorbar' для построения графика: стандартная ошибка, стандартное отклонение, доверительный интервал, мин/макс ... Вот почему цифры нужны подписи, которые указывают такие вещи. – Roland

+0

@ AriB.Friedman спасибо, я добавил ваш пример. Хорошее предложение. –

ответ

4

Ваш вопрос в основном об эстетике, и поэтому мнения будут отличаться. Сказав, что существуют некоторые рекомендации:

  1. Подчеркните важное.
  2. Предоставьте систему отсчета, если это вообще возможно.
  3. Избегайте вводить в заблуждение весы или графику.
  4. Избегайте ненужной графики.

Так этот код:

ggplot(data=DF_CPU, aes(x=end, y=os_cpu)) + 
    geom_point(size=3, shape=1)+ 
    geom_line(linetype=2, colour="grey")+ 
    geom_linerange(aes(ymin=os_cpu-1.96*os_cpu_sd,ymax=os_cpu+1.96*os_cpu_sd), alpha=0.5,color="blue")+ 
    ylim(0,max(DF_CPU$os_cpu+1.96*DF_CPU$os_cpu_sd))+ 
    stat_smooth(formula=y~1,se=TRUE,method="lm",linetype=2,size=1)+ 
    theme_bw() 

Производит это:

Графические подчеркивает, что использование процессора (??) в течение 20 мин с интервалом существенно не отклоняется от среднего значения для 9 часовой период. Эталонная линия - среднее использование. Полосы ошибок были заменены на geom_linerange(...), потому что горизонтальные полосы в geom_errorbar(...) ничего не добавляют и отвлекают. Кроме того, ваш оригинальный сюжет показывает, что ошибка очень велика по сравнению с фактическим использованием, чего нет. Я изменил диапазон до +/- 1.96*sd, потому что это более близко приближается к 95% CL. Наконец, метки x и y-оси нужно заменить чем-то описательным, но у меня недостаточно информации для этого.

+0

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

+0

... «слишком мало», и мы на самом деле не решили их проблемы. Таким образом, это не тот случай, когда я считаю, что мы можем разработать модель для каждого клиента. Я сосредоточился на описательной статистике, а фактические данные занимают 8+ дней. В этом случае наше среднее значение составляет около 15% загрузки процессора, при этом максимальная SD составляет около 23%. Калибровка в среднем будет немного низкой, поэтому я бы выбрал значение, равное 23%, чтобы покрыть пики. Тесты SPECint говорят нам о сравнительных скоростях чипов, поэтому 23% из 12 Intel Xeon Westmere Cores = n Intel Sandybridge Cores. Надеюсь, что это поможет установить некоторый контекст вокруг моего вопроса. –

2

Там в поговорке дизайнера, что «форма следует функция ", и это должно относиться к графике. Что вы пытаетесь сделать с вашими сюжетами? На какой вопрос вы пытаетесь ответить?

Если это «использование процессора значительно уменьшается со временем?» то этот сюжет, вероятно, сделает и даст ответ «нет». Если это «вероятность того, что с течением времени будет изменяться более 10 секунд?» то вам нужно взять модель для ваших данных (например, что-то простое, как Normal (os_cpu, os_cpu_sd)), а затем вероятности превышения длины (хвост).

В любом случае, только средства для создания и конверты, как вы это делали, всегда являются честным началом и, по крайней мере, отвечают на вопросы «каковы мои данные?» и «что-то явно не так?»

+0

Вы задали аналогичный контекстуальный вопрос jlhoward. Я добавил некоторый контекст в ответе на его комментарий.Для статистиков это, вероятно, похоже на любительский час. Сожалею. –

Смежные вопросы