Finding first max, min and second max along the time series data

I am new to timeseries data analysis using R. I would like to find the two maximum and one minimum values along the time series data. The lines look like waves as follow:
GVosc
I would like to find the first max on the line just before the depression (let's say, around 764 on x-axis), the second max on the line after the depression, and minimum value in between these two maximum values. For each period, the depression varies a long the timeseries. Therefore, I think I need to find out the depression (minimum) at first, and then find the two maximum on the left and right sides of that depression.

Here is the sample dataset. I tried to make reprex, but I found error like:

#> Error in head(Dataset): object 'Dataset' not found

So let me copy and paste data as follow:

Mydata <- tibble::tribble(
            ~X_axis, ~`10:00-10:30`, ~`10:30-11:00`, ~`11:00-11:30`, ~`11:30-12:00`,
             700.31,           0.04,           0.05,           0.04,           0.04,
             700.73,           0.04,           0.05,           0.04,           0.04,
             701.14,           0.04,           0.05,           0.04,           0.05,
             701.55,           0.04,           0.05,           0.04,           0.05,
             701.96,           0.04,           0.06,           0.04,           0.05,
             702.37,           0.04,           0.06,           0.04,           0.05,
             702.78,           0.04,           0.06,           0.04,           0.05,
              703.2,           0.04,           0.06,           0.04,           0.05,
             703.61,           0.04,           0.06,           0.04,           0.05,
             704.02,           0.04,           0.06,           0.04,           0.05,
             704.43,           0.05,           0.06,           0.04,           0.05,
             704.84,           0.05,           0.07,           0.05,           0.06,
             705.25,           0.05,           0.07,           0.05,           0.06,
             705.66,           0.05,           0.07,           0.05,           0.06,
             706.07,           0.05,           0.07,           0.05,           0.06,
             706.49,           0.05,           0.07,           0.05,           0.06,
              706.9,           0.05,           0.07,           0.05,           0.06,
             707.31,           0.05,           0.08,           0.05,           0.06,
             707.72,           0.06,           0.08,           0.05,           0.06,
             708.13,           0.06,           0.08,           0.05,           0.07,
             708.54,           0.06,           0.08,           0.06,           0.07,
             708.95,           0.06,           0.08,           0.06,           0.07,
             709.36,           0.06,           0.08,           0.06,           0.07,
             709.77,           0.06,           0.08,           0.06,           0.07,
             710.18,           0.06,           0.09,           0.06,           0.07,
              710.6,           0.06,           0.09,           0.06,           0.07,
             711.01,           0.06,           0.09,           0.06,           0.08,
             711.42,           0.07,           0.09,           0.06,           0.08,
             711.83,           0.07,           0.09,           0.06,           0.08,
             712.24,           0.07,           0.09,           0.07,           0.08,
             712.65,           0.07,           0.09,           0.07,           0.08,
             713.06,           0.07,            0.1,           0.07,           0.08,
             713.47,           0.07,            0.1,           0.07,           0.08,
             713.88,           0.07,            0.1,           0.07,           0.08,
             714.29,           0.07,            0.1,           0.07,           0.09,
              714.7,           0.07,            0.1,           0.07,           0.09,
             715.11,           0.07,           0.11,           0.07,           0.09,
             715.53,           0.08,           0.11,           0.07,           0.09,
             715.94,           0.08,           0.11,           0.08,           0.09,
             716.35,           0.08,           0.11,           0.08,           0.09,
             716.76,           0.08,           0.11,           0.08,           0.09,
             717.17,           0.08,           0.11,           0.08,           0.09,
             717.58,           0.08,           0.11,           0.08,            0.1,
             717.99,           0.08,           0.12,           0.08,            0.1,
              718.4,           0.08,           0.12,           0.08,            0.1,
             718.81,           0.08,           0.12,           0.08,            0.1,
             719.22,           0.08,           0.12,           0.08,            0.1,
             719.63,           0.09,           0.12,           0.08,            0.1,
             720.04,           0.09,           0.12,           0.09,            0.1,
             720.45,           0.09,           0.12,           0.09,            0.1,
             720.86,           0.09,           0.13,           0.09,           0.11,
             721.27,           0.09,           0.13,           0.09,           0.11,
             721.68,           0.09,           0.13,           0.09,           0.11,
             722.09,           0.09,           0.13,           0.09,           0.11,
              722.5,           0.09,           0.13,           0.09,           0.11,
             722.91,           0.09,           0.14,           0.09,           0.11,
             723.32,           0.09,           0.14,           0.09,           0.11,
             723.73,            0.1,           0.14,           0.09,           0.12,
             724.14,            0.1,           0.14,            0.1,           0.12,
             724.55,            0.1,           0.14,            0.1,           0.12,
             724.96,            0.1,           0.14,            0.1,           0.12,
             725.37,            0.1,           0.14,            0.1,           0.12,
             725.78,            0.1,           0.15,            0.1,           0.12,
             726.19,            0.1,           0.15,            0.1,           0.12,
              726.6,            0.1,           0.15,            0.1,           0.13,
             727.01,           0.11,           0.15,            0.1,           0.13,
             727.42,           0.11,           0.15,           0.11,           0.13,
             727.83,           0.11,           0.15,           0.11,           0.13,
             728.24,           0.11,           0.15,           0.11,           0.13,
             728.65,           0.11,           0.16,           0.11,           0.13,
             729.06,           0.11,           0.16,           0.11,           0.13,
             729.47,           0.11,           0.16,           0.11,           0.13,
             729.88,           0.11,           0.16,           0.11,           0.13,
             730.29,           0.11,           0.16,           0.11,           0.14,
              730.7,           0.11,           0.16,           0.11,           0.14,
             731.11,           0.12,           0.16,           0.11,           0.14,
             731.52,           0.12,           0.17,           0.12,           0.14,
             731.93,           0.12,           0.17,           0.12,           0.14,
             732.34,           0.12,           0.17,           0.12,           0.14,
             732.75,           0.12,           0.17,           0.12,           0.14,
             733.16,           0.12,           0.17,           0.12,           0.14,
             733.57,           0.12,           0.17,           0.12,           0.14,
             733.98,           0.12,           0.17,           0.12,           0.15,
             734.39,           0.12,           0.18,           0.12,           0.15,
              734.8,           0.12,           0.18,           0.12,           0.15,
              735.2,           0.12,           0.18,           0.12,           0.15,
             735.61,           0.13,           0.18,           0.12,           0.15,
             736.02,           0.13,           0.18,           0.12,           0.15,
             736.43,           0.13,           0.18,           0.13,           0.15,
             736.84,           0.13,           0.18,           0.13,           0.15,
             737.25,           0.13,           0.18,           0.13,           0.15,
             737.66,           0.13,           0.18,           0.13,           0.15,
             738.07,           0.13,           0.18,           0.13,           0.15,
             738.48,           0.13,           0.18,           0.13,           0.16,
             738.89,           0.13,           0.19,           0.13,           0.16,
              739.3,           0.13,           0.19,           0.13,           0.16,
             739.71,           0.13,           0.19,           0.13,           0.16,
             740.11,           0.13,           0.19,           0.13,           0.16,
             740.52,           0.13,           0.19,           0.13,           0.16,
             740.93,           0.13,           0.19,           0.13,           0.16,
             741.34,           0.13,           0.19,           0.13,           0.16,
             741.75,           0.13,           0.19,           0.13,           0.16,
             742.16,           0.14,           0.19,           0.13,           0.16,
             742.57,           0.14,           0.19,           0.13,           0.16,
             742.98,           0.14,           0.19,           0.14,           0.16,
             743.39,           0.14,           0.19,           0.14,           0.16,
             743.79,           0.14,           0.19,           0.14,           0.16,
              744.2,           0.14,           0.19,           0.14,           0.16,
             744.61,           0.14,            0.2,           0.14,           0.16,
             745.02,           0.14,            0.2,           0.14,           0.16,
             745.43,           0.14,            0.2,           0.14,           0.16,
             745.84,           0.14,            0.2,           0.14,           0.17,
             746.25,           0.14,            0.2,           0.14,           0.17,
             746.66,           0.14,            0.2,           0.14,           0.17,
             747.06,           0.14,            0.2,           0.14,           0.17,
             747.47,           0.14,            0.2,           0.14,           0.17,
             747.88,           0.14,            0.2,           0.14,           0.17,
             748.29,           0.14,            0.2,           0.14,           0.17,
              748.7,           0.14,            0.2,           0.14,           0.17,
             749.11,           0.14,            0.2,           0.14,           0.17,
             749.52,           0.14,            0.2,           0.14,           0.17,
             749.92,           0.14,            0.2,           0.14,           0.17,
             750.33,           0.14,            0.2,           0.14,           0.17,
             750.74,           0.14,            0.2,           0.14,           0.17,
             751.15,           0.14,            0.2,           0.14,           0.17,
             751.56,           0.14,            0.2,           0.14,           0.17,
             751.96,           0.14,            0.2,           0.14,           0.17,
             752.37,           0.14,            0.2,           0.14,           0.17,
             752.78,           0.14,            0.2,           0.14,           0.17,
             753.19,           0.14,            0.2,           0.14,           0.17,
              753.6,           0.14,            0.2,           0.14,           0.17,
             754.01,           0.14,           0.21,           0.14,           0.17,
             754.41,           0.14,           0.21,           0.14,           0.17,
             754.82,           0.14,           0.21,           0.14,           0.17,
             755.23,           0.14,           0.21,           0.14,           0.17,
             755.64,           0.15,           0.21,           0.14,           0.17,
             756.05,           0.15,           0.21,           0.14,           0.17,
             756.45,           0.15,           0.21,           0.14,           0.17,
             756.86,           0.15,           0.21,           0.14,           0.17,
             757.27,           0.15,           0.21,           0.15,           0.17,
             757.68,           0.15,           0.21,           0.14,           0.17,
             758.09,           0.15,           0.21,           0.14,           0.17,
             758.49,           0.15,           0.21,           0.14,           0.17,
              758.9,           0.15,           0.21,           0.14,           0.17,
             759.31,           0.15,           0.21,           0.15,           0.17,
             759.72,           0.14,           0.21,           0.15,           0.17,
             760.12,           0.14,           0.21,           0.14,           0.17,
             760.53,           0.14,            0.2,           0.14,           0.17,
             760.94,           0.14,            0.2,           0.14,           0.17,
             761.35,           0.14,            0.2,           0.14,           0.17,
             761.75,           0.14,           0.19,           0.14,           0.17,
             762.16,           0.14,           0.19,           0.14,           0.17,
             762.57,           0.14,           0.19,           0.14,           0.17,
             762.98,           0.14,           0.19,           0.14,           0.17,
             763.38,           0.14,           0.19,           0.14,           0.17,
             763.79,           0.14,           0.19,           0.14,           0.17,
              764.2,           0.14,            0.2,           0.14,           0.17,
             764.61,           0.14,            0.2,           0.14,           0.17,
             765.01,           0.14,            0.2,           0.14,           0.17,
             765.42,           0.14,            0.2,           0.14,           0.17,
             765.83,           0.14,            0.2,           0.14,           0.17,
             766.24,           0.14,            0.2,           0.14,           0.17,
             766.64,           0.14,           0.21,           0.15,           0.18,
             767.05,           0.15,           0.21,           0.15,           0.18,
             767.46,           0.15,           0.21,           0.15,           0.18,
             767.86,           0.15,           0.21,           0.15,           0.18,
             768.27,           0.15,           0.21,           0.15,           0.18,
             768.68,           0.15,           0.21,           0.15,           0.18,
             769.09,           0.15,           0.21,           0.15,           0.18,
             769.49,           0.15,           0.21,           0.15,           0.18,
              769.9,           0.15,           0.21,           0.15,           0.18,
             770.31,           0.15,           0.21,           0.15,           0.18,
             770.71,           0.15,           0.21,           0.15,           0.18,
             771.12,           0.15,           0.21,           0.15,           0.18,
             771.53,           0.15,           0.21,           0.15,           0.18,
             771.93,           0.15,           0.21,           0.15,           0.18,
             772.34,           0.15,           0.21,           0.15,           0.18,
             772.75,           0.15,           0.21,           0.15,           0.18,
             773.15,           0.15,           0.21,           0.15,           0.18,
             773.56,           0.15,           0.21,           0.15,           0.18,
             773.97,           0.15,           0.21,           0.15,           0.18,
             774.37,           0.15,           0.21,           0.15,           0.18,
             774.78,           0.15,           0.21,           0.15,           0.18,
             775.19,           0.15,           0.21,           0.15,           0.18,
             775.59,           0.15,           0.21,           0.15,           0.18,
                776,           0.15,           0.21,           0.15,           0.18,
             776.41,           0.15,           0.21,           0.15,           0.18,
             776.81,           0.15,           0.21,           0.15,           0.18,
             777.22,           0.15,           0.22,           0.15,           0.18,
             777.63,           0.15,           0.22,           0.15,           0.18,
             778.03,           0.15,           0.22,           0.15,           0.18,
             778.44,           0.15,           0.22,           0.15,           0.18,
             778.85,           0.15,           0.21,           0.15,           0.18,
             779.25,           0.15,           0.21,           0.15,           0.18,
             779.66,           0.15,           0.21,           0.15,           0.18,
             780.06,           0.15,           0.21,           0.15,           0.18,
             780.47,           0.15,           0.21,           0.15,           0.18,
             780.88,           0.15,           0.21,           0.15,           0.18,
             781.28,           0.15,           0.21,           0.15,           0.18,
             781.69,           0.15,           0.21,           0.15,           0.18,
             782.09,           0.15,           0.22,           0.15,           0.18,
              782.5,           0.15,           0.22,           0.15,           0.18,
             782.91,           0.15,           0.22,           0.15,           0.18,
             783.31,           0.15,           0.21,           0.15,           0.18,
             783.72,           0.15,           0.22,           0.15,           0.18,
             784.12,           0.15,           0.21,           0.15,           0.18,
             784.53,           0.15,           0.22,           0.15,           0.18,
             784.94,           0.15,           0.22,           0.15,           0.18,
             785.34,           0.15,           0.22,           0.15,           0.18,
             785.75,           0.15,           0.22,           0.15,           0.18,
             786.15,           0.15,           0.22,           0.15,           0.18,
             786.56,           0.15,           0.22,           0.15,           0.18,
             786.97,           0.15,           0.22,           0.15,           0.18,
             787.37,           0.15,           0.22,           0.15,           0.18,
             787.78,           0.15,           0.22,           0.15,           0.18,
             788.18,           0.15,           0.22,           0.15,           0.18,
             788.59,           0.15,           0.22,           0.15,           0.18,
             788.99,           0.15,           0.22,           0.15,           0.18,
              789.4,           0.15,           0.22,           0.15,           0.18,
              789.8,           0.15,           0.22,           0.15,           0.18,
             790.21,           0.15,           0.22,           0.15,           0.18,
             790.62,           0.15,           0.22,           0.15,           0.18,
             791.02,           0.15,           0.22,           0.15,           0.18,
             791.43,           0.15,           0.22,           0.15,           0.18,
             791.83,           0.15,           0.22,           0.15,           0.18,
             792.24,           0.15,           0.22,           0.15,           0.18,
             792.64,           0.15,           0.22,           0.15,           0.18,
             793.05,           0.15,           0.22,           0.15,           0.18,
             793.45,           0.15,           0.22,           0.15,           0.18,
             793.86,           0.15,           0.22,           0.15,           0.18,
             794.26,           0.15,           0.22,           0.15,           0.18,
             794.67,           0.15,           0.22,           0.15,           0.18,
             795.07,           0.15,           0.22,           0.15,           0.18,
             795.48,           0.15,           0.22,           0.15,           0.18,
             795.88,           0.15,           0.22,           0.15,           0.18,
             796.29,           0.15,           0.22,           0.15,           0.18,
             796.69,           0.15,           0.22,           0.15,           0.18,
              797.1,           0.15,           0.22,           0.15,           0.18,
              797.5,           0.15,           0.22,           0.15,           0.18,
             797.91,           0.15,           0.22,           0.15,           0.18,
             798.31,           0.15,           0.22,           0.15,           0.18,
             798.72,           0.15,           0.22,           0.15,           0.18,
             799.12,           0.15,           0.22,           0.15,           0.18,
             799.53,           0.15,           0.22,           0.15,           0.18,
             799.93,           0.15,           0.22,           0.15,           0.18
            )

You could use find_peaks() and stat_peaks() in ggpmisc

Thank you, @williaml ! stat_peaks and stat_valleys are similar to findPeaks and findValleys under quantmod package. I tried both, but the issue is I would like to find the depression at first (let's say around 764 on x-axis). Around that point, I would like to find two maximum on the left and right side. Due to a lot of timeseries data, I don't know how to fix the range to find the depression region. That's my problem, right now! Thanks millions, again, for your kind help.

1 Like

An example from the ggpmisc ?stat_peaks documentation, adapted to show how it can be made to work over a subset

lynx_num.df <-
  try_tibble(lynx,
             col.names = c("year", "lynx"),
             as.numeric = TRUE) # years -> as numeric

ggplot(lynx_num.df, aes(year, lynx)) +
  geom_line() +
  stat_peaks(data = lynx_num.df %>% 
               filter(between(year,1880,1900)),colour = "red") +
  stat_valleys(colour = "blue")

see how the red peaks are only found between 1880 and 1900

Thank you, @nirgrahamuk ! The problem is that I don't know the range in advance to make a filter. But anyway, your code helps me somehow to reduce to number of peaks.

@nirgrahamuk @williaml
Now I got the points in ggplot. I used the following code:
First I changed those values into pivot_longer().

Mydata %>% pivot_longer(cols = -X_axis, names_to = "Time", values_to = "Values")

ggplot(Mydata, aes(X_axis, Values)) +
geom_line() +
stat_peaks(data = Mydata %>%
filter(between(X_axis, 750, 770)), span = 20, colour = "blue", geom = "text") +
stat_valleys(data = Mydata %>%
filter(between(X_axis, 750, 770)), span = 20, colour = "red", geom = "text")

But I would like to extract the values from the graph and attach to my dataset. How could I code about that? I am sorry I made a new follow-up question here.
Thanks in advance!

stat_peaks and stat_valleys are ggplot2 wrappers over lower level function peaks from splus2R package.
do something like

library(splus2R)
peaks_in_data <- Mydata %>% pivot_longer(cols = -X_axis, 
                                          names_to = "Time", 
                                          values_to = "Values") %>% 
                  group_by(Time) %>% 
                  mutate(peak_val   = peaks(Values,span =21),
                         valley_val = peaks(-Values,span =21)) %>% ungroup

to see the TRUE / FALSE of whether the plot is considered a peak
for valleys pass negative Values

Thank you, @nirgrahamuk ! It works well.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.