<p><div><div><div><div data-width="100" data-show-faces="false" data-send="true" data-layout="button_count" data-height="21" data-href="https://www.r-bloggers.com/tourism-forecasting-competition-data-in-the-tcomp-r-package/"></div></div><div><a data-url="https://www.r-bloggers.com/tourism-forecasting-competition-data-in-the-tcomp-r-package/" data-counturl="https://www.r-bloggers.com/tourism-forecasting-competition-data-in-the-tcomp-r-package/" data-count="horizontal" data-text="Tourism forecasting competition data in the Tcomp R package" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="http://ellisp.github.io/blog/2016/10/19/Tcomp"> Peter's stats stuff - R</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<h2>Tourism competition data</h2>
<p>The tourism forecasting competition described in <a target="_blank" href="http://robjhyndman.com/papers/forecompijf.pdf">Athanasopoulos et al (2011)</a> was an important investigation into domain-specific time-series forecasting; a different approach from the broader-scope “M” series forecasting competitions which covered multiple areas. Tourism is important to me in my day job and the article referenced above has been influential in how we construct New Zealand’s official tourism forecasts. I have an interest in making the data from that competition as widely available as possible, and this week was able to release the <a target="_blank" href="https://cran.r-project.org/package=Tcomp"><code>Tcomp</code> R package on CRAN</a> that has a conveniently shaped version of the data from that competition.</p>
<p>The best introduction is in the <a target="_blank" href="https://cran.r-project.org/web/packages/Tcomp/vignettes/tourism-comp.html">package vignette</a>.</p>
<p>Only the univariate version of the data is available. This is unfortunate in a slightly counter-intuitive way – one of the more important findings from the competition was that univariate methods of forecasting performed better than more complex methods that relied on relationships between the variables of interest (eg tourism numbers and spend) and other economic explanatory variables (eg economic growth in market countries). So although we know from the competititon that those explanatory variables are of less value than might be hoped, we can’t explore that finding as much as we would like as the explanatory variables aren’t available for re-use. That’s not the fault of the organisers of the competition, just a reality of the availability of data and the conditions under which it was provided to them.</p>
<h2>Contents of the Tcomp R package</h2>
<p>In the new <code>Tcomp</code> package, the data is stored in a single object, <code>tourism</code>. <code>tourism</code> is a list of class <code>Mcomp</code> that has 1,311 elements. The <code>Mcomp</code> S3 class is inherited from Hyndman’s <code>Mcomp</code> R package. Each element in <code>tourism</code> has the information needed to fit and test a forecast to single univariate time series. For example, the training series is always a <code>ts</code> object called <code>x</code>. To plot the 34th training time series is as simple as:</p>
<figure>
<pre><code data-lang="r"><span>library</span><span>(</span><span>Tcomp</span><span>)</span><span>
</span><span>plot</span><span>(</span><span>tourism</span><span>[[</span><span>34</span><span>]]</span><span>$</span><span>x</span><span>)</span></code></pre>
</figure>
<p><img alt="xonly" src="http://ellisp.github.io/img/0063-x-only.svg"></p>
<p>We immediately see the strong seasonality that is characteristic of much tourism data.</p>
<p>Because <code>tourism</code> inherits classes from the <code>Mcomp</code> package, methods provided in that package apply to the <code>tourism</code> object and its elements. For example, the <code>plot</code> method superimposes the test dataset on the graphic of the training dataset, so we can see what happened next after the first part of the competition training series #34:</p>
<figure>
<pre><code data-lang="r"><span>plot</span><span>(</span><span>tourism</span><span>[[</span><span>34</span><span>]])</span></code></pre>
</figure>
<p><img alt="basic" src="http://ellisp.github.io/img/0063-basic.svg"></p>
<p>See the <a target="_blank" href="https://cran.r-project.org/web/packages/Tcomp/Tcomp.pdf">helpfiles</a> or the <a target="_blank" href="https://cran.r-project.org/web/packages/Tcomp/vignettes/tourism-comp.html">vignette</a> for more details.</p>
<h2>Building blocks</h2>
<p>Part of the development of the <code>Tcomp</code> package was a moderately rigorous testing and validation process, which included attempting to reproduce the results in <a target="_blank" href="http://robjhyndman.com/papers/forecompijf.pdf">Athanasopoulos et al (2011)</a>. This was successful for the mean absolute percentage error of the naive forecasts, giving assurance that the data extract-transform-load was succesful (a naive forecast is that the value next period will be the same as last period for non seasonal data, or the the last period one cycle previously for seasonal data). One step to facilitate the testing was the <code>forecast_comp</code> function which is now shipped with the <code>Tcomp</code> package and designed to facilitate rule of thumb comparison of forecast results for a selection of standard forecast methods:</p>
<ul>
<li><a target="_blank" href="https://www.otexts.org/fpp/8/7">auto-regression integrate moving average (ARIMA)</a>;</li>
<li><a target="_blank" href="https://www.otexts.org/fpp/7/7">exponential smoothing state space</a>;</li>
<li><a target="_blank" href="http://www.robjhyndman.com/papers/Theta.pdf">theta method</a>; and</li>
<li><a target="_blank" href="https://www.otexts.org/fpp/2/3">naive </a>.</li>
</ul>
<p>Here is that convenience function in action. It returns a data frame, the first four rows of which are the mean absolute percentage error (MAPE) for different forecast horizons (columns), and the final four rows are mean absolute scaled error (MASE). For both MAPE and MASE, smaller is better.</p>
<figure>
<pre><code data-lang="r"><span>forecast_comp</span><span>(</span><span>tourism</span><span>[[</span><span>500</span><span>]],</span><span> </span><span>tests</span><span> </span><span>=</span><span> </span><span>list</span><span>(</span><span>2</span><span>,</span><span> </span><span>4</span><span>,</span><span> </span><span>6</span><span>,</span><span> </span><span>8</span><span>),</span><span> </span><span>plot</span><span> </span><span>=</span><span> </span><span>TRUE</span><span>)</span><span>
</span><span>## 2 4 6 8
## ARIMA 8.87 1.12 1.27 1.26
## ETS 10.48 4.56 1.04 3.14
## Theta 6.82 11.01 1.59 11.15
## Naive 4.77 10.53 2.43 11.86
## ARIMA 1.17 0.13 0.16 0.15	## ETS 1.38 0.52 0.13 0.36
## Theta 0.90 1.25 0.19 1.29
</span><span>##</span><span> </span><span>Naive</span><span> </span><span>0.63</span><span> </span><span>1.20</span><span> </span><span>0.30</span><span> </span><span>1.37</span></code></pre>
</figure>
<p><img alt="t500" src="http://ellisp.github.io/img/0063-t500.svg"></p>
<p>Because <code>forecast_comp</code> is a generic function that works with all <code>Mdata</code> S3 class objects, it also works with objects from Hyndman’s <code>Mcomp</code> package:</p>
<figure>
<pre><code data-lang="r"><span>library</span><span>(</span><span>Mcomp</span><span>)</span><span>
</span><span>forecast_comp</span><span>(</span><span>M</span><span>3</span><span>[[</span><span>1000</span><span>]],</span><span> </span><span>tests</span><span> </span><span>=</span><span> </span><span>list</span><span>(</span><span>2</span><span>,</span><span> </span><span>4</span><span>,</span><span> </span><span>6</span><span>,</span><span> </span><span>8</span><span>),</span><span> </span><span>plot</span><span> </span><span>=</span><span> </span><span>TRUE</span><span>)</span></code></pre>
</figure>
<p><img alt="M1000" src="http://ellisp.github.io/img/0063-M31000.svg"></p>
<h2>More comprehensive use</h2>
<p>The main purpose of large collections of time series data like this is rigorous study of different approaches to forecasting. Here’s a simple taster of what I hope the <code>Tcomp</code> package will be used for. In this section, I assess the relative accuracy of several forecasting methods: ARIMA, ETS, combination of ARIMA and ETS, naive, and Theta, using quarterly tourism data. Here’s the summary results (Theta wins, so long as the forecasting horizon of interest is four or more quarters):</p>
<p><img alt="results" src="http://ellisp.github.io/img/0063-results.svg"></p>
<p>Notice how much easier it is to predict four quarters ahead rather than six or eight.</p>
<blockquote>
<p>“It’s tough to make predictions, particularly about the future.”</p>
</blockquote>
<p><em>(attributed to <a target="_blank" href="http://quoteinvestigator.com/2013/10/20/no-predict/">Yogi Berra amongst others</a> but it’s not sure who really said this first)</em></p>
<p>We see that, perhaps a little depressingly, it’s hard to beat the naive forecast that next quarter’s result will be the same as a year ago; or the simple <a target="_blank" href="http://www.robjhyndman.com/papers/Theta.pdf">theta method</a>. The naive method is particularly effective for one cycle after the last data point (ie horizon equals four or eight, in this instance). Ho hum, c’est la vie. The average of the ETS and ARIMA methods performs better than either individually, consistent with previous findings about the value of ensemble forecasts. Many questions are begged by this set of results, which could be explored fruitfully with this and other real-life data.</p>
<p>Here’s the code for this mini-competition. It shows how to use the <code>tourism</code> data and make the most of parallel processing to speed things up.</p>
<figure>
<pre><code data-lang="r"><span>#------setup-------
</span><span>library</span><span>(</span><span>ggplot2</span><span>)</span><span>
</span><span>library</span><span>(</span><span>scales</span><span>)</span><span>
</span><span>library</span><span>(</span><span>forecastHybrid</span><span>)</span><span>
</span><span>library</span><span>(</span><span>tidyr</span><span>)</span><span>
</span><span>library</span><span>(</span><span>dplyr</span><span>)</span><span>
</span><span>library</span><span>(</span><span>parallel</span><span>)</span><span>
</span><span>library</span><span>(</span><span>english</span><span>)</span><span>
</span><span>library</span><span>(</span><span>directlabels</span><span>)</span><span>
</span><span>#----------------------helper function for comparing forecasts---------
</span><span>#' Function to perform five forecasts to all members of a set of series
#' ARIMA, ETS, Theta, Naive and ensemble of ETS and ARIMA
#' @param the_series a list of class Mcomp containing series of class Mdata
#' @param tests a list of horizons over which to return the MASE of the forecast
#' @return a list of results
</span><span>accuracy_point</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span> </span><span>(</span><span>the_series</span><span>,</span><span> </span><span>tests</span><span> </span><span>=</span><span> </span><span>list</span><span>(</span><span>the_series</span><span>$</span><span>h</span><span>))</span><span> </span><span>{</span><span>
</span><span>x</span><span> </span><span>&lt;-</span><span> </span><span>the_series</span><span>$</span><span>x</span><span>
</span><span>xx</span><span> </span><span>&lt;-</span><span> </span><span>the_series</span><span>$</span><span>xx</span><span>
</span><span>h</span><span> </span><span>&lt;-</span><span> </span><span>the_series</span><span>$</span><span>h</span><span>
</span><span># determine best value for BoxCox transformation, </span><span> </span><span># but limit it to between 0 and 1
</span><span> </span><span>bc</span><span> </span><span>&lt;-</span><span> </span><span>BoxCox.lambda</span><span>(</span><span>x</span><span>)</span><span>
</span><span>bc</span><span> </span><span>&lt;-</span><span> </span><span>min</span><span>(</span><span>max</span><span>(</span><span>0</span><span>,</span><span> </span><span>bc</span><span>),</span><span> </span><span>1</span><span>)</span><span>
</span><span># fit ARIMA and ETS models
</span><span> </span><span>mod1</span><span> </span><span>&lt;-</span><span> </span><span>hybridModel</span><span>(</span><span>x</span><span>,</span><span> </span><span>models</span><span> </span><span>=</span><span>&quot;ae&quot;</span><span>,</span><span> </span><span>a.args</span><span> </span><span>=</span><span> </span><span>list</span><span>(</span><span>lambda</span><span> </span><span>=</span><span> </span><span>bc</span><span>),</span><span> </span><span>e.args</span><span> </span><span>=</span><span> </span><span>list</span><span>(</span><span>lambda</span><span> </span><span>=</span><span> </span><span>bc</span><span>))</span><span>
</span><span># create forecasts
</span><span> </span><span>fc1</span><span> </span><span>&lt;-</span><span> </span><span>forecast</span><span>(</span><span>mod1</span><span>$</span><span>auto.arima</span><span>,</span><span> </span><span>h</span><span> </span><span>=</span><span> </span><span>h</span><span>)</span><span>
</span><span>fc2</span><span> </span><span>&lt;-</span><span> </span><span>forecast</span><span>(</span><span>mod1</span><span>$</span><span>ets</span><span>,</span><span> </span><span>h</span><span> </span><span>=</span><span> </span><span>h</span><span>)</span><span>
</span><span>fc3</span><span> </span><span>&lt;-</span><span> </span><span>thetaf</span><span>(</span><span>x</span><span>,</span><span> </span><span>h</span><span> </span><span>=</span><span> </span><span>h</span><span>)</span><span>
</span><span>fc4</span><span> </span><span>&lt;-</span><span> </span><span>snaive</span><span>(</span><span>x</span><span>,</span><span> </span><span>h</span><span> </span><span>=</span><span> </span><span>h</span><span>)</span><span>
</span><span>fc5</span><span> </span><span>&lt;-</span><span> </span><span>forecast</span><span>(</span><span>mod1</span><span>,</span><span> </span><span>h</span><span> </span><span>=</span><span> </span><span>h</span><span>)</span><span>
</span><span># estimate MASE for all the values of tests
</span><span> </span><span>MASEs</span><span> </span><span>&lt;-</span><span> </span><span>matrix</span><span>(</span><span>0</span><span>,</span><span> </span><span>nrow</span><span> </span><span>=</span><span> </span><span>5</span><span>,</span><span> </span><span>ncol</span><span> </span><span>=</span><span> </span><span>length</span><span>(</span><span>tests</span><span>))</span><span>
</span><span>for</span><span> </span><span>(</span><span>j</span><span> </span><span>in</span><span> </span><span>1</span><span>:</span><span>length</span><span>(</span><span>tests</span><span>))</span><span> </span><span>{</span><span>
</span><span>this_test</span><span> </span><span>&lt;-</span><span> </span><span>tests</span><span>[[</span><span>j</span><span>]]</span><span>
</span><span>MASEs</span><span>[,</span><span> </span><span>j</span><span>]</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>accuracy</span><span>(</span><span>fc1</span><span>,</span><span> </span><span>xx</span><span>,</span><span> </span><span>test</span><span> </span><span>=</span><span> </span><span>this_test</span><span>)[</span><span>&quot;Test set&quot;</span><span>,</span><span> </span><span>&quot;MASE&quot;</span><span>],</span><span> </span><span>accuracy</span><span>(</span><span>fc2</span><span>,</span><span> </span><span>xx</span><span>,</span><span> </span><span>test</span><span> </span><span>=</span><span> </span><span>this_test</span><span>)[</span><span>&quot;Test set&quot;</span><span>,</span><span> </span><span>&quot;MASE&quot;</span><span>],</span><span> </span><span>accuracy</span><span>(</span><span>fc3</span><span>,</span><span> </span><span>xx</span><span>,</span><span> </span><span>test</span><span> </span><span>=</span><span> </span><span>this_test</span><span>)[</span><span>&quot;Test set&quot;</span><span>,</span><span> </span><span>&quot;MASE&quot;</span><span>],</span><span> </span><span>accuracy</span><span>(</span><span>fc4</span><span>,</span><span> </span><span>xx</span><span>,</span><span> </span><span>test</span><span> </span><span>=</span><span> </span><span>this_test</span><span>)[</span><span>&quot;Test set&quot;</span><span>,</span><span> </span><span>&quot;MASE&quot;</span><span>],</span><span>
</span><span>accuracy</span><span>(</span><span>fc5</span><span>,</span><span> </span><span>xx</span><span>,</span><span> </span><span>test</span><span> </span><span>=</span><span> </span><span>this_test</span><span>)[</span><span>&quot;Test set&quot;</span><span>,</span><span> </span><span>&quot;MASE&quot;</span><span>])</span><span> </span><span>}</span><span>
</span><span>colnames</span><span>(</span><span>MASEs</span><span>)</span><span> </span><span>&lt;-</span><span> </span><span>gsub</span><span>(</span><span>&quot;:&quot;</span><span>,</span><span> </span><span>&quot;-&quot;</span><span>,</span><span> </span><span>as.character</span><span>(</span><span>tests</span><span>))</span><span>
</span><span>rownames</span><span>(</span><span>MASEs</span><span>)</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>&quot;ARIMA&quot;</span><span>,</span><span> </span><span>&quot;ETS&quot;</span><span>,</span><span> </span><span>&quot;Theta&quot;</span><span>,</span><span> </span><span>&quot;Naive&quot;</span><span>,</span><span> </span><span>&quot;ARIMA-ETS average&quot;</span><span>)</span><span>
</span><span>return</span><span>(</span><span>MASEs</span><span>)</span><span>
</span><span>}</span><span>
</span><span>#------------Set up multi core cluster----------------
# set up cluster with number of cores minus one
</span><span>cores</span><span> </span><span>&lt;-</span><span> </span><span>detectCores</span><span>()</span><span>
</span><span>cluster</span><span> </span><span>&lt;-</span><span> </span><span>makePSOCKcluster</span><span>(</span><span>max</span><span>(</span><span>1</span><span>,</span><span> </span><span>cores</span><span> </span><span>-</span><span> </span><span>1</span><span>))</span><span>
</span><span># set up the functionality on the cluster
</span><span>clusterEvalQ</span><span>(</span><span>cluster</span><span>,</span><span> </span><span>{</span><span>
</span><span>library</span><span>(</span><span>Tcomp</span><span>)</span><span>
</span><span>library</span><span>(</span><span>forecastHybrid</span><span>)</span><span>
</span><span>})</span><span>
</span><span>clusterExport</span><span>(</span><span>cluster</span><span>,</span><span> </span><span>&quot;accuracy_point&quot;</span><span>)</span><span>
</span><span>#-----------------Fit to tourism data----------------------
# takes a few minutes on my laptop:
</span><span>results_point</span><span> </span><span>&lt;-</span><span> </span><span>parLapply</span><span>(</span><span>cluster</span><span>,</span><span>
</span><span>subset</span><span>(</span><span>tourism</span><span>,</span><span> </span><span>&quot;quarterly&quot;</span><span>),</span><span>
</span><span>accuracy_point</span><span>,</span><span>
</span><span>tests</span><span> </span><span>=</span><span> </span><span>list</span><span>(</span><span>2</span><span>,</span><span> </span><span>4</span><span>,</span><span> </span><span>6</span><span>,</span><span> </span><span>8</span><span>))</span><span>
</span><span>stopCluster</span><span>(</span><span>cluster</span><span>)</span><span>
</span><span>#----------------presenting results-----------
</span><span>results_point_df</span><span> </span><span>&lt;-</span><span> </span><span>as.data.frame</span><span>(</span><span>do.call</span><span>(</span><span>&quot;rbind&quot;</span><span>,</span><span> </span><span>results_point</span><span>))</span><span>
</span><span>results_point_df</span><span>$</span><span>model</span><span> </span><span>&lt;-</span><span> </span><span>row.names</span><span>(</span><span>results_point_df</span><span>)</span><span>
</span><span>results_point_df</span><span> </span><span>&lt;-</span><span> </span><span>results_point_df</span><span> </span><span>%>%</span><span>
</span><span>gather</span><span>(</span><span>horizon</span><span>,</span><span> </span><span>MASE</span><span>,</span><span> </span><span>-</span><span>model</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>group_by</span><span>(</span><span>model</span><span>,</span><span> </span><span>horizon</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>summarise</span><span>(</span><span>MASE</span><span> </span><span>=</span><span> </span><span>round</span><span>(</span><span>mean</span><span>(</span><span>MASE</span><span>),</span><span> </span><span>2</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>horizon</span><span> </span><span>=</span><span> </span><span>as.numeric</span><span>(</span><span>horizon</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>ungroup</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>model</span><span> </span><span>=</span><span> </span><span>gsub</span><span>(</span><span>&quot;ARIMA-ETS average&quot;</span><span>,</span><span> </span><span>&quot;Hybrid&quot;</span><span>,</span><span> </span><span>model</span><span>))</span><span>
</span><span>results_point_df</span><span> </span><span>%>%</span><span>
</span><span>ggplot</span><span>(</span><span>aes</span><span>(</span><span>x</span><span> </span><span>=</span><span> </span><span>horizon</span><span>,</span><span> </span><span>y</span><span> </span><span>=</span><span> </span><span>MASE</span><span>,</span><span> </span><span>colour</span><span> </span><span>=</span><span> </span><span>model</span><span>))</span><span> </span><span>+</span><span>
</span><span>geom_point</span><span>(</span><span>size</span><span> </span><span>=</span><span> </span><span>2</span><span>)</span><span> </span><span>+</span><span>
</span><span>geom_line</span><span>()</span><span> </span><span>+</span><span>
</span><span>scale_colour_brewer</span><span>(</span><span>palette</span><span> </span><span>=</span><span> </span><span>&quot;Set1&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>labs</span><span>(</span><span>x</span><span> </span><span>=</span><span> </span><span>&quot;Forecasting horizon&quot;</span><span>,</span><span>
</span><span>y</span><span> </span><span>=</span><span> </span><span>&quot;Mean Absolute Scaled Error (lower is better)&quot;</span><span>,</span><span>
</span><span>caption</span><span> </span><span>=</span><span> </span><span>&quot;Source: 2010 tourism competition data in Tcomp R package&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>ggtitle</span><span>(</span><span>&quot;It's hard to beat a naive forecast or a Theta forecast&quot;</span><span>,</span><span>
</span><span>subtitle</span><span> </span><span>=</span><span> </span><span>&quot;Comparison of forecasting methods with tourism competition data&quot;</span><span>)</span></code></pre>
</figure>
<p><div><div><div><div data-width="55" data-show-faces="false" data-send="true" data-layout="box_count" data-height="62" data-href="https://www.r-bloggers.com/tourism-forecasting-competition-data-in-the-tcomp-r-package/"></div></div><div><a data-url="https://www.r-bloggers.com/tourism-forecasting-competition-data-in-the-tcomp-r-package/" data-counturl="https://www.r-bloggers.com/tourism-forecasting-competition-data-in-the-tcomp-r-package/" data-count="vertical" data-text="Tourism forecasting competition data in the Tcomp R package" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="http://ellisp.github.io/blog/2016/10/19/Tcomp"> Peter's stats stuff - R</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 title="The R Project for Statistical Computing" rel="nofollow" href="https://www.r-project.org/">R</a> news and <a title="R tutorials" rel="nofollow" href="https://www.r-bloggers.com/?s=tutorial">tutorials</a> on topics such as: <a title="Data science" rel="nofollow" href="https://www.r-bloggers.com/?s=data%20science">Data science</a>, <a title="Big Data" rel="nofollow" href="https://www.r-bloggers.com/?s=Big%20Data">Big Data, <a title="R jobs" rel="nofollow" href="https://www.r-users.com/">R jobs</a>, visualization (<a title="ggplot and ggplot2 tutorials" rel="nofollow" href="https://www.r-bloggers.com/?s=ggplot2">ggplot2</a>, <a title="Boxplots using lattice and ggplot2 tutorials" rel="nofollow" href="https://www.r-bloggers.com/?s=boxplot">Boxplots</a>, <a title="Maps and gis" rel="nofollow" href="https://www.r-bloggers.com/?s=map">maps</a>, <a title="Animation in R" rel="nofollow" href="https://www.r-bloggers.com/?s=animation">animation</a>), programming (<a title="RStudio IDE for R" rel="nofollow" href="https://www.r-bloggers.com/?s=RStudio">RStudio</a>, <a title="Sweave and literate programming" rel="nofollow" href="https://www.r-bloggers.com/?s=sweave">Sweave</a>, <a title="LaTeX in R" rel="nofollow" href="https://www.r-bloggers.com/?s=LaTeX">LaTeX</a>, <a title="SQL and databases" rel="nofollow" href="https://www.r-bloggers.com/?s=SQL">SQL</a>, <a title="Eclipse IDE for R" rel="nofollow" href="https://www.r-bloggers.com/?s=eclipse">Eclipse</a>, <a title="git and github, Version Control System" rel="nofollow" href="https://www.r-bloggers.com/?s=git">git</a>, <a title="Large data in R using Hadoop" rel="nofollow" href="https://www.r-bloggers.com/?s=hadoop">hadoop</a>, <a title="Web Scraping of google, facebook, yahoo, twitter and more using R" rel="nofollow" href="https://www.r-bloggers.com/?s=Web+Scraping">Web Scraping</a>) statistics (<a title="Regressions and ANOVA analysis tutorials" rel="nofollow" href="https://www.r-bloggers.com/?s=regression">regression</a>, <a title="principal component analysis tutorial" rel="nofollow" href="https://www.r-bloggers.com/?s=PCA">PCA</a>, <a title="Time series" rel="nofollow" href="https://www.r-bloggers.com/?s=time+series">time series</a>, <a title="finance trading" rel="nofollow" href="https://www.r-bloggers.com/?s=trading">trading</a>) and more...
<img height="1" alt="" width="1" src="http://feeds.feedburner.com/~r/RBloggers/~4/nlql2BDRIgE"></a></div>