<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/outliers-detection-and-intervention-analysis/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="https://datascienceplus.com/outliers-detection-and-intervention-analysis/"> R Programming – DataScience+</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<p>In my previous tutorial <a rel="nofollow" href="https://datascienceplus.com/arima-models-and-intervention-analysis/" target="_blank">Arima Models and Intervention Analysis</a> we took advantage of the strucchange package to identify and date time series level shifts structural changes. Based on that, we were able to define ARIMA models with improved AIC metrics. Furthermore, the attentive analysis of the ACF/PACF plots highlighted the presence of seasonal patterns. In this tutorial we will investigate another flavour of intervention variable, the transient change. We will take advantage of two fundamental packages for the purpose:</p>
<pre>
* tsoutliers
* TSA
</pre>
<p>Specifically, we will compare results obtained by modeling the transient change.</p>
<h2>Outliers Analysis</h2>
<p>Outliers detection relates with intervention analysis as the latter can be argued as a special case of the former one. A basic list of intervention variable is:</p>
<pre>
* step response intervention
* pulse response intervention
</pre>
<p>A basic list of outliers is: </p>
<pre>
* Additive Outliers
* Level Shifts
* Transient Change 
* Innovation Outliers
* Seasonal Level Shifts
</pre>
<p>An Additive Outlier (AO) represents an isolated spike.<br>
A Level Shift (LS) represents an abrupt change in the mean level and it may be seasonal (Seasonal Level Shift, SLS) or not.<br>
A Transient Change (TC) represents a spike that takes a few periods to disappear.<br>
An Intervention Outlier (IO) represents a shock in the innovations of the model.</p>
<p>Pre-specified outliers are able to satisfactorily describe the dynamic pattern of untypical effects and can be captured by means of intervention variables.</p>
<h3>Intervention Analysis – Common Models</h3>
<p>A short introduction of the very basic common models of functions useful for intervention analysis follows.</p>
<h3>Step function</h3>
<p>The step function is useful to represent level shift outliers.</p>
<p>$$<br>
\begin{equation}<br>
\begin{aligned}<br>
S_{T}(t) &amp;=\left\{<br>
\begin{array}{@{}ll@{}}<br>
0 &amp; \text{if}\ t &lt; T \\<br>
1 &amp; \text{otherwise}\<br>
\end{array} \right.<br>
\end{aligned}<br>
\end{equation}<br>
$$</p>
<p>It can be thought as a special case of the transient change intervention model with delta = 1 (see ahead the transient change model). We can represent it with the help of the filter() function as follows. .</p>
<pre>
tc &lt;- rep(0, 50)
tc[20] &lt;- 1
ls &lt;- filter(tc, filter = 1, method = &quot;recursive&quot;)
plot(ls, main = &quot;Level Shift - TC delta = 1&quot;, type = &quot;s&quot;)
</pre>
<p><a rel="nofollow" href="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/11/ls.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/11/ls.png?w=450&ssl=1" alt="" class="wp-image-9483" data-recalc-dims="1"></a></p>
<p>By adding up two step functions at different lags, it is possible to represent additive outliers or transitory level shifts, as we will see soon.</p>
<h3>Pulse function</h3>
<p>The pulse function is useful to represent additive outliers.</p>
<p>$$<br>
\begin{equation}<br>
\begin{aligned}<br>
P_{T}(t) = S_{T}(t)\ -\ S_{T}(t-1)<br>
\end{aligned}<br>
\end{equation}<br>
$$</p>
<p>It can be thought as a special case of the transient change intervention model with delta = 0 (see ahead the transient change model). We can graphically represent it with the help of the filter() function as herein shown.</p>
<pre>
ao &lt;- filter(tc, filter = 0, method = &quot;recursive&quot;)
plot(ao, main = &quot;Additive Outlier - TC delta = 0&quot;, type = &quot;s&quot;)
</pre>
<p><a rel="nofollow" href="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/ao_step.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/ao_step.png?w=450&ssl=1" alt="" class="wp-image-9525" data-recalc-dims="1"></a></p>
<h3>Level Shift function</h3>
<p>The level shift function is useful to represent level shift outliers. It can be modeled in terms of step function with magnitude equal to the omega parameter. </p>
<p>$$<br>
\begin{equation}<br>
\begin{aligned}<br>
m(t) = \omega S_{T}(t)<br>
\end{aligned}<br>
\end{equation}<br>
$$</p>
<p>The graphical representation is the same of the step function with magnitude equal to the omega parameter of the formula above.</p>
<h3>Transient change function</h3>
<p>The transient change function is useful to represent transient change outliers.</p>
<p>$$<br>
\begin{equation}<br>
\begin{aligned}<br>
\ C(t) = \dfrac{\omega B}{1 – \delta B} P_{T}(t)<br>
\end{aligned}<br>
\end{equation}<br>
$$</p>
<p>We can graphically represent it by the help of the filter() function as herein shown. Two delta values are considered to show how the transient change varies accordingly.</p>
<pre>
tc_0_4 &lt;- filter(tc, filter = 0.4, method = &quot;recursive&quot;)
tc_0_8 &lt;- filter(tc, filter = 0.8, method = &quot;recursive&quot;)
plot(tc_0_4, main = &quot;TC delta = 0.4&quot;)
plot(tc_0_8, main = &quot;TC delta = 0.8&quot;)
</pre>
<p><a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/tc_0_4.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/tc_0_4.png?w=450&ssl=1" alt="" class="wp-image-9485" data-recalc-dims="1"></a></p>
<p><a rel="nofollow" href="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/tc_0_8.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/tc_0_8.png?w=450&ssl=1" alt="" class="wp-image-9486" data-recalc-dims="1"></a></p>
<h3>Packages</h3>
<pre>
suppressPackageStartupMessages(library(tsoutliers))
suppressPackageStartupMessages(library(TSA))
suppressPackageStartupMessages(library(lmtest))
suppressPackageStartupMessages(library(astsa))
</pre>
<h2>Analysis</h2>
<p>In the following, I will analyse the sex ratio at birth as based on the Arbuthnot dataset which provides information of male and female births in London from year 1639 to 1710. As done in ref. [1], a metric representing the fractional excess of boys births versus girls is defined as:</p>
<p>$$<br>
\begin{equation}<br>
\begin{aligned}<br>
\dfrac{(Boys – Girls)}{Girls}<br>
\end{aligned}<br>
\end{equation}<br>
$$</p>
<pre>
url &lt;- &quot;https://www.openintro.org/stat/data/arbuthnot.csv&quot;
abhutondot &lt;- read.csv(url, header=TRUE)

boys_ts &lt;- ts(abhutondot$boys, frequency=1, start = abhutondot$year[1])
girls_ts &lt;- ts(abhutondot$girls, frequency=1, start = abhutondot$year[1])

delta_ts &lt;- boys_ts - girls_ts
excess_ts &lt;- delta_ts/girls_ts
plot(excess_ts)
</pre>
<p>Gives this plot.<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/excess_ts.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/excess_ts.png?w=450&ssl=1" alt="" class="wp-image-9335" data-recalc-dims="1"></a></p>
<p>With the help of the tso() function within tsoutliers package, we identify if any outliers are present in our excess_ts time series.</p>
<pre>
outliers_excess_ts &lt;- tso(excess_ts, types = c(&quot;TC&quot;, &quot;AO&quot;, &quot;LS&quot;, &quot;IO&quot;, &quot;SLS&quot;))
outliers_excess_ts
<em>Series: excess_ts Regression with ARIMA(0,0,0) errors Coefficients:
intercept TC31
0.0665 0.1049
s.e. 0.0031 0.0199
sigma^2 estimated as 0.0007378: log likelihood=180.34
AIC=-354.69 AICc=-354.38 BIC=-347.47
Outliers:
type ind time coefhat tstat
1 TC 31 1659 0.1049 5.283
</em>
</pre>
<p>A transient change outlier occurring on year 1659 was identified. We can inspect graphically the results too.</p>
<pre>
plot(outliers_excess_ts)
</pre>
<p>Gives this plot.<br>
<a rel="nofollow" href="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/11/outliers_effect.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/11/outliers_effect.png?w=450&ssl=1" alt="" class="wp-image-9330" data-recalc-dims="1"></a></p>
<p>We found an outlier of Transient Change flavour occurring on year 1659. Specific details are herein shown.</p>
<pre>
outliers_excess_ts$outliers
<em> type ind time coefhat tstat
1 TC 31 1659 0.1049228 5.28339
</em>
</pre>
<pre>
# time index where the outliers have been detected
(outliers_idx &lt;- outliers_excess_ts$outliers$ind)
<em>[1] 31
</em>
</pre>
<pre>
# calendar years where the outliers have been detected 
outliers_excess_ts$outliers$time
<em>[1] 1659
</em>
</pre>
<p>We now want to evaluate the effect of such transient change, comparing the time series under analysis pre and post intervention. </p>
<pre>
#length of our time series
n &lt;- length(excess_ts)

# transient change outlier at the same time index as found for our time series
mo_tc &lt;- outliers(&quot;TC&quot;, outliers_idx)

# transient change effect data is stored into a one-column matrix, tc
tc &lt;- outliers.effects(mo_tc, n)
<em> TC31
[1,] 0.000000e+00
[2,] 0.000000e+00
[3,] 0.000000e+00
[4,] 0.000000e+00
[5,] 0.000000e+00
[6,] 0.000000e+00
[7,] 0.000000e+00
[8,] 0.000000e+00
[9,] 0.000000e+00
[10,] 0.000000e+00
...</em>
</pre>
<p>The “coefhat” named data frame stores the coefficient used as multiplier for our transient change tc data matrix.</p>
<pre>
# converting to a number
coefhat &lt;- as.numeric(outliers_excess_ts$outliers[&quot;coefhat&quot;])

# obtaining the transient change data with same magnitude as determined by the tso() function
tc_effect &lt;- coefhat*tc

# definining a time series for the transient change data
tc_effect_ts &lt;- ts(tc_effect, frequency = frequency(excess_ts), start = start(excess_ts))

# subtracting the transient change intervention to the original time series, obtaining the pre-intervention time series
excess_wo_ts &lt;- excess_ts - tc_effect_ts

# plot of the original, the pre-intervention and transient change time series 
plot(cbind(excess_ts, excess_wo_ts, tc_effect_ts))
</pre>
<p>Gives this plot.<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/all_three.png?ssl=1" target="_blank"><img sizes="(max-width: 1233px) 100vw, 1233px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/all_three.png?w=450&ssl=1" alt="" class="wp-image-9341" data-recalc-dims="1"></a></p>
<p>We can further highlight the difference between the original time series and the pre-intervention one.</p>
<pre>
plot(excess_ts, type ='b', ylab = &quot;excess birth ratio&quot;)
lines(excess_wo_ts, col = 'red', lty = 3, type ='b')
</pre>
<p>Gives this plot.<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/orig_and_wo.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/orig_and_wo.png?w=450&ssl=1" alt="" class="wp-image-9342" data-recalc-dims="1"></a></p>
<p>A quick check on the residuals of the pre-intervention time series confirms validity of the ARIMA(0,0,0) model for.</p>
<pre>
sarima(excess_wo_ts, p=0, d=0, q=0)
</pre>
<p>Gives this plot.<br>
<a rel="nofollow" href="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/sarima_tso_wo.png?ssl=1" target="_blank"><img sizes="(max-width: 1277px) 100vw, 1277px" src="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/sarima_tso_wo.png?w=450&ssl=1" alt="" class="wp-image-9493" data-recalc-dims="1"></a></p>
<p>Now, we implement a similar representation of the transient change outlier by taking advantage of the arimax() function within the TSA package. The arimax() function requires to specify some ARMA parameters, and that is done by capturing the seasonality as discussed in ref. [1]. Further, the transient change is specified by means of <em>xtransf</em> and <em>transfer</em> input parameters. The <em>xtransf</em> parameter is a matrix with each column containing a covariate that affects the time series response in terms of an ARMA filter of order (p,q). For our scenario, it provides a value equal to 1 at the outliers time index and zero at others. The <em>transfer</em> parameter is a list consisting of the ARMA orders for each transfer covariate. For our scenario, we specify an AR order equal to 1.</p>
<pre>
arimax_model &lt;- arimax(excess_ts,
                       order = c(0,0,0),
                       seasonal = list(order = c(1,0,0), period = 10),
                       xtransf = data.frame(I1 = (1*(seq(excess_ts) == outliers_idx))),                                                                                      
                       transfer = list(c(1,0)),
                       method='ML')

summary(arimax_model)
<em>Call:
arimax(x = excess_ts, order = c(0, 0, 0), seasonal = list(order = c(1, 0, 0), period = 10), method = &quot;ML&quot;, xtransf = data.frame(I1 = (1 * (seq(excess_ts) == outliers_idx))), transfer = list(c(1, 0)))
Coefficients:
sar1 intercept I1-AR1 I1-MA0
0.2373 0.0668 0.7601 0.0794
s.e. 0.1199 0.0039 0.0896 0.0220
sigma^2 estimated as 0.0006825: log likelihood = 182.24, aic = -356.48
Training set error measures:
ME RMSE MAE MPE MAPE MASE ACF1
Training set -0.0001754497 0.0261243 0.02163487 -20.98443 42.09192 0.7459687 0.1429339
</em>
</pre>
<p>The significance of the coefficients is then verified.</p>
<pre>
coeftest(arimax_model)
<em>z test of coefficients:
Estimate Std. Error z value Pr(>|z|) sar1 0.2372520 0.1199420 1.9781 0.0479224 * intercept 0.0667816 0.0038564 17.3173 &lt; 2.2e-16 ***
I1-AR1 0.7600662 0.0895745 8.4853 &lt; 2.2e-16 ***
I1-MA0 0.0794284 0.0219683 3.6156 0.0002997 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
</em>
</pre>
<p>The model coefficients are all statistically significative. We remark that the resulting model shows a slight improved AIC result with respect the previous model. Further, both models show improved AIC values with respect previous tutorial discussed ARIMA models.</p>
<p>A quick check on the residuals of the pre-intervention time series confirms validity of the ARIMA(0,0,0)(1,0,0)[10] model for.</p>
<pre>
sarima(excess_wo_arimax_ts, p=0, d=0, q=0, P=1, D=0, Q=0, S=10)
</pre>
<p>Gives this plot.<br>
<a rel="nofollow" href="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/sarima_arimax_wo.png?ssl=1" target="_blank"><img sizes="(max-width: 1200px) 100vw, 1200px" src="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/11/sarima_arimax_wo.png?w=450&ssl=1" alt="" class="wp-image-9494" data-recalc-dims="1"></a></p>
<p>Let us plot the original time series against the fitted one.</p>
<pre>
plot(excess_ts)
lines(fitted(arimax_model), col = 'blue')
</pre>
<p>Gives this plot.<br>
<a rel="nofollow" href="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/11/arimax_and_fitted.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/11/arimax_and_fitted.png?w=450&ssl=1" alt="" class="wp-image-9386" data-recalc-dims="1"></a></p>
<p>Considering the transient change model formula, we can elaborate a linear filter with the AR parameter as coefficient and the MA parameter to multiply the filter() function result.</p>
<pre>
# pulse intervention variable
int_var &lt;- 1*(seq(excess_ts) == outliers_idx)

# transient change intervention variable obtained by filtering the pulse according to the
# definition of transient change and parameters obtained by the ARIMAX model 
tc_effect_arimax &lt;- filter(int_var, filter = coef(arimax_model)[&quot;I1-AR1&quot;], 
                          method = &quot;rec&quot;, sides = 1) * coef(arimax_model)[&quot;I1-MA0&quot;]

# defining the time series for the intervention effect
tc_effect_arimax_ts &lt;- ts(tc_effect_arimax, frequency = frequency(excess_ts), start = start(excess_ts))
</pre>
<p>It is interesting to compare two transient change effects, as obtained by the arimax() and the tso() functions. </p>
<pre>
# comparing transient change effect resulting by ARIMAX (red) with the tso() one (blue)
plot(tc_effect_arimax_ts, col ='red', type='l', ylab = &quot;transient change&quot;)
lines(tc_effect_ts, col ='blue', lty = 3)
</pre>
<p><a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/compare_tc.png?ssl=1" target="_blank"><img sizes="(max-width: 1000px) 100vw, 1000px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/11/compare_tc.png?w=450&ssl=1" alt="" class="wp-image-9389" data-recalc-dims="1"></a></p>
<p>By eyeballing the plot above, they appear pretty close.</p>
<p>If you have any questions, please feel free to comment below.</p>
<p><b>References</b></p>
<ul>
[1] <a rel="nofollow" href="https://datascienceplus.com/arima-models-and-intervention-analysis/" target="_blank">Arima Models and Intervention Analysis – DataScience+</a><br>
[2] <a rel="nofollow" href="http://www.springer.com/us/book/9780387759586" target="_blank">Time Series Analysis With Applications in R</a><br>
[3] <a rel="nofollow" href="https://stats.stackexchange.com/questions/108374/arima-intervention-transfer-function-how-to-visualize-the-effect" target="_blank">ARIMA Intervention Analysis – How to visualize the effect</a><br>
[4] <a rel="nofollow" href="https://stats.stackexchange.com/questions/104882/detecting-outliers-in-time-series-ls-ao-tc-using-tsoutliers-package-in-r-how" target="_blank">Detecting outliers in a time series</a></ul>
<ul></ul>
<p><strong>
<p>Related Post</p>
<p></p></strong>
<ol>
<li><a rel="nofollow" href="https://datascienceplus.com/spark-dataframes-exploring-chicago-crimes/" title="Permanent Link toSpark DataFrames: Exploring Chicago Crimes" target="_blank">Spark DataFrames: Exploring Chicago Crimes</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/image-processing-and-manipulation-with-magick-in-r/" title="Permanent Link toImage Processing and Manipulation with magick in R" target="_blank">Image Processing and Manipulation with magick in R</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/analyzing-the-bible-and-the-quran-using-spark/" title="Permanent Link toAnalyzing the Bible and the Quran using Spark" target="_blank">Analyzing the Bible and the Quran using Spark</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/predict-customer-churn-logistic-regression-decision-tree-and-random-forest/" title="Permanent Link toPredict Customer Churn – Logistic Regression, Decision Tree and Random Forest" target="_blank">Predict Customer Churn – Logistic Regression, Decision Tree and Random Forest</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/find-your-best-customers-with-customer-segmentation-in-python/" title="Permanent Link toFind Your Best Customers with Customer Segmentation in Python" target="_blank">Find Your Best Customers with Customer Segmentation in Python</a></li>
</ol>
	<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="https://datascienceplus.com/outliers-detection-and-intervention-analysis/"> R Programming – DataScience+</a></strong>.</div>
<hr>
<a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a rel="nofollow" href="https://www.r-project.org/" title="The R Project for Statistical Computing">R</a> news and <a rel="nofollow" href="https://www.r-bloggers.com/search/tutorial" title="R tutorials">tutorials</a> on topics such as: <a rel="nofollow" href="https://www.r-bloggers.com/search/data%20science" title="Data science">Data science</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data" title="Big Data">Big Data, <a rel="nofollow" href="https://www.r-users.com/" title="R jobs">R jobs</a>, visualization (<a rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2" title="ggplot and ggplot2 tutorials">ggplot2</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/boxplot" title="Boxplots using lattice and ggplot2 tutorials">Boxplots</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/map" title="Maps and gis">maps</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/animation" title="Animation in R">animation</a>), programming (<a rel="nofollow" href="https://www.r-bloggers.com/search/RStudio" title="RStudio IDE for R">RStudio</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/sweave" title="Sweave and literate programming">Sweave</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX" title="LaTeX in R">LaTeX</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/SQL" title="SQL and databases">SQL</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/eclipse" title="Eclipse IDE for R">Eclipse</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/git" title="git and github, Version Control System">git</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/hadoop" title="Large data in R using Hadoop">hadoop</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping" title="Web Scraping of google, facebook, yahoo, twitter and more using R">Web Scraping</a>) statistics (<a rel="nofollow" href="https://www.r-bloggers.com/search/regression" title="Regressions and ANOVA analysis tutorials">regression</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/PCA" title="principal component analysis tutorial">PCA</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/time+series" title="Time series">time series</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/trading" title="finance trading">trading</a>) and more...
<img width="1" alt="" src="http://feeds.feedburner.com/~r/RBloggers/~4/0JCVLO2S9fo" height="1"></a></div>