<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Data Science and Analytics on The Final Artefact</title><link>https://www.thefinalartefact.xyz/categories/data-science-and-analytics/</link><description>Recent content in Data Science and Analytics on The Final Artefact</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Sun, 31 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://www.thefinalartefact.xyz/categories/data-science-and-analytics/index.xml" rel="self" type="application/rss+xml"/><item><title>Review of the Machine Learning Engineer Datacamp Course</title><link>https://www.thefinalartefact.xyz/post/review-mlend/</link><pubDate>Sun, 31 Aug 2025 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/review-mlend/</guid><description>Review of MLEng course on Data Camp</description></item><item><title>Poor Man's Robust Shiny App Deployment (Part II)</title><link>https://www.thefinalartefact.xyz/post/sample-analytical-app-with-shiny/</link><pubDate>Fri, 12 Feb 2021 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/sample-analytical-app-with-shiny/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This article draws on the past post concerned with utilisation of &lt;a href="https://github.com/ThinkR-open/golem"&gt;&lt;code&gt;golem&lt;/code&gt;&lt;/a&gt; for robust deployment of analytical and reporting solutions. For this article, we will assume that we are working with defined working requirements that utilise some of the Labour Market Statistics disseminated through the &lt;a href="https://www.nomisweb.co.uk"&gt;&lt;em&gt;nomis&lt;/em&gt;&lt;/a&gt; portal.&lt;/p&gt;
&lt;h2 id="change-plan"&gt;Change Plan&lt;/h2&gt;
&lt;h3 id="what-we-have"&gt;What we have&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Reporting requirements&lt;/li&gt;
&lt;li&gt;Past scriptts we used to create reports with accompanying instructions&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="what-we-want"&gt;What we want&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Stronger business continuity&lt;/em&gt; - we want to be able to give some access to this project and don&amp;rsquo;t be concerned with missing files, outdated unavailable documentation and questions on how to produce updated reports. We want self-encompassing entity that takes of care of its technical requirements and user-interaction^[Good parallel can be drawn between this approach and manuals available with life-saving equipment. Equipment delivers technical capacity and manual ensures operational capacity. In case of an inexperienced user one is not useful without the other. We want to ensure that user with minimum required capacity can use the tools correctly.]&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Better reproducibility&lt;/em&gt; - Easier way to re-run reports on custom parameters&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Improved efficiency&lt;/em&gt; - We want to have a possibility of quickly creating updated and re-running past reports using the app.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Better development:&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;We want to ensure that any change requests to our reporting/analytical stack won&amp;rsquo;t break crucial functionalities.&lt;/li&gt;
&lt;li&gt;We want to modularise development so new corporate branding or visualisation requirements can be applied with no (or minimal) integration in analytical function&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="framework"&gt;Framework&lt;/h2&gt;
&lt;h2 id="package"&gt;Package&lt;/h2&gt;
&lt;p&gt;Future robust development owes a lot to solid foundations. As the aim is to capitalise on the robust R package architecture, we will look to leverage available supporting packages. As a first step, we will construct a new Shiny/R package infrastructure using &lt;code&gt;golem&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Poor Man's Robust Shiny App Deployment</title><link>https://www.thefinalartefact.xyz/post/poor-man-s-robust-shiny-app-deployment/</link><pubDate>Thu, 23 Jul 2020 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/poor-man-s-robust-shiny-app-deployment/</guid><description>&lt;h2 id="not-so-uncommon-problem"&gt;Not so uncommon problem&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://rstudio.com/products/connect/"&gt;RStudio Connect&lt;/a&gt; and more modest &lt;a href="https://www.shinyproxy.io"&gt;Shiny Proxy&lt;/a&gt; come to mind as most obvious solutions for deploying Shiny applications in production. Application servers are ideal for deploying applications that are to be consumed on a regular basis by larger audiences. In addition to serving the application, managing dependencies and user access or logging user activity are common tasks we would expect for a publishing platform to address. Frequently, however, deployment of Shiny application is directed at smaller audiences and less frequent usage. In such a situation, are availability, accessibility and user access management requirements will be often more modest. Commonly,in business a modelling or analytical solution can be packaged in Shiny application facilitating periodical re-run of models with different parameters and updated data sets. Such solutions can be conveniently utilised to facilitated development of monthly or quarterly reports. If the app is used once per month/quarter by a narrow user group the need to deploy it on the server is not well articulated. In that particular case we are mostly interested in ensuring that we can:&lt;/p&gt;</description></item><item><title>Interactively Loading Shiny Modules</title><link>https://www.thefinalartefact.xyz/post/interactive-module/</link><pubDate>Sat, 24 Nov 2018 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/interactive-module/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;If you want to see the implemented solution, please refer to:
GitHub repo.&lt;/p&gt;
&lt;h2 id="context"&gt;Context&lt;/h2&gt;
&lt;p&gt;Shiny is a widely popular web application framework for a R. In simple tearms it enables any R programmer to develop and deploy web application. This application could be simple - an interactive document consisting of a few charts and tables or a c complex &amp;ldquo;behemoth&amp;rdquo; with multiple functionalities enabling end-users to run models, query external data, generate exportable reports and sophisticated visuals.&lt;/p&gt;</description></item><item><title>ASCII charts in R</title><link>https://www.thefinalartefact.xyz/post/ascii-charts-in-r/</link><pubDate>Fri, 05 Jun 2015 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/ascii-charts-in-r/</guid><description>&lt;p&gt;In Stata it is possible to use function plot in order to get a simple scatter plot in Stata console. As of Stata eight, plot is no longer supported but remains a useful tool for quickly exploring relationships between variables. Using plot on the auto data provides the following results:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.thefinalartefact.xyz/post/ascii-charts-in-r/images/stata_text_plot.png" target="_blank" rel="noopener noreferrer"&gt;
&lt;img alt="Stata Textual Plot" loading="lazy" src="https://www.thefinalartefact.xyz/post/ascii-charts-in-r/images/stata_text_plot.png"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now the question is: can we achieve the same level of convenience in R? Of course. The txtplot package authored by Bjoern Bornkamp provides similar functionality. Executing the code below will generate nice text plot straight in the R console:&lt;/p&gt;</description></item><item><title>Managing rows in the ggplot legend</title><link>https://www.thefinalartefact.xyz/post/managing-rows-in-the-ggplot-legend/</link><pubDate>Sat, 28 Mar 2015 00:00:00 +0000</pubDate><guid>https://www.thefinalartefact.xyz/post/managing-rows-in-the-ggplot-legend/</guid><description>&lt;p&gt;After developing the Shiny App sourcing live labour market data from NOMIS. I wanted to accommodate a convenient way of managing rows in the legend. In particular, I wanted to account for the situation where end-user may select a number of geographies that will only conveniently fit into two or more rows. After transposing the data to long format, guessing the number of elements in the legend is relatively simple as it will correspond to the number of unique geographies passed via the subset command.&lt;/p&gt;</description></item></channel></rss>