Figure 2. Precipitation patterns for U.S. Weather Service station KGYY in Gary, Indiana. |

Finding local extrema (maximum and minimum values) in a time series is the first step in analysis. Although it would be possible to identify these values visually, a better way is to find a quantitative, rule-based method. Although I could find no such method in available R libraries, I did find relatively simple algorithm (findpeaks) by TimothÃ©e Poisot that uses the diff function in R (https://rtricks.wordpress.com/2009/05/03/an-algorithm-to-find-local-extrema-in-a-vector/). This algorithm requires specification of a parameter for the analysis interval (with a value between 1 and the length of the entire time series). I tried a range of values from 0.3% to 25% of the data range and did not find a reasonable match to the observed major spikes and troughs. Lower parameter values performed better, but the noisy time series tend to produce too many local extrema. The time series in Figure 1 consist of data reported at 5-minute intervals and thus consists of a mixture signals of process operating at different time scales.

A useful algorithm for smoothing noisy time series is the Loess function in R. It is an algorithm for fitting local polynomial regressions. The loess function in R also has a parameter for the size of the sampling interval of the time series. To smooth out diurnal variations, I set the value of this parameter to a value that equaled the number of samplings per day (288 at 5-minute intervals). The span parameter for the loess function is thus the ratio of the number of samples per day to the number of days in the time series being analyzed. With the loess fitted time series, the identification of extrema by the findpeaks function was far less sensitive to values of the sampling interval, and the location of peaks and troughs varied asymptotically with decreasing size of the sampling interval. I programmed this method in an R script (Slope_Calc.R), and the method correctly identified nearly all of the extrema in the time series for weighted average soil moisture data from the Gary experimental parcel 1 (Figure 3).

Once the method estimates local minima and maxima, it then estimates the slope of the observed decline from a local maximum to the next local minimum. Assuming that the loss of soil moisture is an exponential function, the method applies a linear regression to the log10 values of soil moisture. The method also calculates the increment in soil moisture from a local minimum to the next local maximum. Figure 4 shows the resulting slope patterns.

Although the method does correctly estimate the timing of the local maxima and minima, the smoothing functions do have some problems. On May 13, for example the slope is positive because there was a short interval in which the analysis failed on a smoothing artifact. The amplitude of the local maximum is also lower than the observed data. However, the amplitude better matches the loess fitted time series. Overall, it appears that the method does capture the basic characteristics of the soil moisture dynamics and, thus, appears to be a reasonable method for comparing experimental parcels and controls. Figure 5 shows an interesting relationship between the magnitude of the soil moisture increment and slope of the subsequent decline in soil moisture.

The loss of soil moisture from a rain garden or control plot is a complex function of processes operating at different time scales. Evapotranspiration and deep infiltration are likely dominant processes in the Aetna neighborhood. These two process depend on additional factors such as soil temperature, atmospheric relative humidity, vegetation cover and type, and soil porosity. The results in Figure 5 suggest that it might be possible to find patterns associated with various driving variables in different parts of the time series. Additionally, the profile of these responses may be useful in comparing water retention by experimental and control plots in different seasons.