# Detecting cycle maxima (peaks) in noisy time series (In R?)

This question is about an algorithm for determining the number and location of maxima in a sequence of numbers. Thus, there is a statistical flavor to the question, but it is more leaning towards programming, because I am not interested in the specific statistical properties, and the solution needs to be in R. The use of statistics to answer this question is OK, but not a requirement.

I want to extract maxima of cycles in time series data (i.e., an ordered sequence of numbers). An example of such data is the solar flare time series (~11 year cycle, between 9 & 14 years). The cycles don't repeat at a perfect interval, and the peaks aren't always the same height.

I found a recent paper describing an algorithm for this, and the paper actually uses solar flares as an example (Figure 5, Scholkmann et al. 2012, Algorithms). I was hoping that this algorithm, or an equally effective algorithm, was available as an R package.

Link to Scholkmann paper on "automatic multiscale-based peak detection" http://www.mdpi.com/1999-4893/5/4/588

I've tried the "turningpoints" function in the "pastecs" package but it seemed to be too sensitive (i.e., detected too many peaks). I thought of trying to smooth the time series first, but I'm not sure if this is the best approach (I'm no expert).

Thanks for any pointers.

## Answers

If the peaks are almost periodic (with a slowly fluctuating period), as in the sunspot example, you can use the Hilbert transform or the empirical mode decomposition to smooth the time series.

library(EMD) x <- as.vector(sunspots) r <- emd(x) # Keep 5 components -- you may need more, or less. y <- apply( r$imf[,5:10], 1, sum ) + mean(r$residue) plot(x, type="l", col="grey") lines( y, type="l", lwd=2) n <- length(y) i <- y[2:(n-1)] > y[1:(n-2)] & y[2:(n-1)] > y[3:n] points( which(i), y[i], pch=15 )

### Need Your Help

### Is it possible to distinguish types with identical fully qualified names?

The scenario is I would like to be able reference two similar 3rd party assemblies (e.g. assem1 and assem2) which both define a type with the same fully qualified name (e.g. Example.MyType).### Pointers to use Apache Drill to access a Progress DB

business-intelligence progress-4gl openedge progress-db apache-drill

Progress/OpenEdge is not a SQL database and although it does have support for SQL (through the ODBC interface) that is not the natural way to access OpenEdge data. Progress applications are built ...