У меня есть этот фрейм данных, и я рассчитал среднее значение для каждой группы.
> new
group date count mean
1 1 2012-07-01 2.867133 2.442939
2 1 2012-08-01 2.018745 2.442939
3 2 2012-09-01 5.237515 6.779004
4 2 2012-10-01 8.320493 6.779004
5 3 2012-11-01 4.119850 3.884249
6 3 2012-12-01 3.648649 3.884249
7 4 2013-01-01 3.172867 3.618954
8 4 2013-02-01 4.065041 3.618954
9 5 2013-03-01 2.914798 3.825241
10 5 2013-04-01 4.735683 3.825241
11 6 2013-05-01 3.775411 3.800564
12 6 2013-06-01 3.825717 3.800564
13 7 2013-07-01 3.273427 2.994948
14 7 2013-08-01 2.716469 2.994948
15 8 2013-09-01 2.687296 3.180709
16 8 2013-10-01 3.674121 3.180709
17 9 2013-11-01 3.325942 2.924990
18 9 2013-12-01 2.524038 2.924990
Затем я составил средние значения для каждой группы в виде вертикальной линии (красная).
seq <- seq(2, nrow(new), by=2) # make vertical lines every 2nd point
ggplot() +
geom_line(data=new, aes(date, count, group=1)) + # plot line of data points
geom_vline(xintercept = as.numeric(new$date[seq])) + # plot vertical lines
geom_segment(data=new[seq,], aes(x=as.numeric(date)-2, # plot horizontal lines (segments)
xend=as.numeric(date),
y=average,
yend=average), col="red") +
scale_x_discrete(breaks = new$date[seq], labels = new$date[seq]) # adjust x axis labels
ЧтоТеперь я хочу сравнить средние значения (красные линии) и определить правило, например: взять первые три средних, если средние значения не далеко друг от друга, тогда сделатьничего .Если эти три значения находятся далеко друг от друга (имеют большое отклонение), отметьте первую и последнюю точку нового $ count.
В качестве примера:
Первые три значения усреднения:
2.442939
6.779004
3.884249
Рассчитать стандартное отклонение:
> sd(c(2.442939,6.779004,3.884249))
[1] 2.208259
Если это высокое отклонение (например: sd <1), мой выходной вектор будет иметьзначения: </p>
2.018745 # 2nd value of group 1 (new$count)
3.648649 # 2nd value of group 3 (new$count)
И то же самое для остальных моих значений, поэтому у меня есть выходной вектор, с помощью которого я могу построить свои новые вертикальные линии (2.018745
, 3.648649
, ...)как интервалы ... если есть какое-то лучшее решение, я буду рад здесь об этом!