scheduleR: a web interface to schedule .R & .Rmd scripts

scheduleR is an attempt to create an intuitive interface for scheduling R and Rmarkdown scripts. Especially for the latter, I find the lack of a good scheduling, logging and notification tool the reason for why I don’t use Rmarkdown as much as I could for generating business report / dashboards.

I’ve built scheduleR’s web interface using Node.js as the foundation. A node script (node-cron) makes it possible to schedule the execution of R scripts and generation of Rmarkdown reports. The tool also contains detailed logging and status reports. Status notifications and Rmarkdown reports can be actively send via email to those interested after a script or report generation has run.

Continue reading

simmer 2.0: a performance boost & revised syntax

It was very clear that the performance of the first simmer version was lagging behind. The 2.0 release introduces a C++ based engine and comes with a significant performance boost versus the previous version. While the performance can always be further improved I’m currently quite satisfied with it. Future refinement of the code base will however focus on further improving efficiency. Continue reading

Introducing simmer: Discrete Event Simulation for R

Please note that simmer received an update and its syntax and internals changed extensively.


The simmer package grew out of a personal need for a simple rapid development discrete event simulation (DES) framework. I work in the hospital sector and at times use a DES approach to simulate hospital processes / patient trajectories. DES can give you a quick look at process bottlenecks and test out the impact of alternative process set-ups.

Tools such as SimPy and SimJulia.jl served as inspiration for this package. What I wanted to achieve most was to develop a simple rapid development DES environment which had all (or most) important analysis/plotting functions easily at hand. Aiming for this rapid development DES package and working from a specific business process background has most likely tainted the development of the package to an extent that it won’t be as dynamic to be applicable to everyone’s specific needs. Continue reading

Making publicly available data publicly accessible: Belgium’s Hospital Minimal Data

In current times data is everywhere. The big challenge however is making it not only available, but also accessible to those who need it.

An example of this is the Hospital Minimal Data (Belgium). This dataset is openly published by the Federal Public Service for Health, Food Chain Safety & Environment.

Continue reading

Evolution hospital beds, resources and consumption

For this analysis publicly available data from the OECD is used. The time series run from 1975 to 2013 (where available).

Let’s focus on Belgium, Germany, France, The Netherlands, United Kingdom, United States, Norway and Switzerland and have a look at their number of hospital beds per 1000 population. The blue line is a trend line (linear regression).

plot of chunk hospital-beds

Continue reading

Using neural networks for credit scoring: a simple example

Credit scoring is the practice of analysing a persons background and credit application in order to assess the creditworthiness of the person. One can take numerous approaches on analysing this creditworthiness. In the end it basically comes down to first selecting the correct independent variables (e.g. income, age, gender) that lead to a given level of creditworthiness. In other words: $creditworthiness=f(income, age, gender, …)$. A creditscoring system can be represented by linear regression, logistic regression, machine learning or a combination of these. Neural networks are situated in the domain of machine learining. The following is an strongly simplified example. The actual procedure of building a credit scoring system is much more complex and the resulting model will most likely not consist of solely or even a neural network.

Continue reading

Creating a Business Dashboard in R

Please regard this post as out-dated an update will follow soon

Business dashboards are available in many shapes and sizes. Business dashboards are useful to create an overview of key performance indicators (KPIs) important for the business strategy and/or operations.

There are many flavours of dashboard frameworks and apps available, ranging in price from thousands of dollars to open-source implementations.

Apparently there are four key elements to a good dashboard:

  • Simple, communicates easily
  • Minimum distractions…it could cause confusion
  • Supports organized business with meaning and useful data
  • Applies human visual perception to visual presentation of information

Continue reading

Using column generation to minimize production waste

Minimizing production waste can result in significant cost savings. However, calculating just the right production configuration can be a tedious task.

Let’s take the example of a firm which delivers sheet metal. The sheets it delivers are all of the same width but can differ in length. The raw material used by the company are metal sheets of 3 meters wide by 20 meters long. Clients can order any length metal sheets (as long as it doesn’t exceed 20 meters).

Let’s say there is demand for the following lengths of sheet metal (all are 3 meters wide). The number of demands are denoted in the next line. E.g. for 40 items of length 6 have to be produced, 5 items of length 9 have to be produced and so on.

items_demands Continue reading

Genetic algorithms: a simple R example

Genetic algorithm is a search heuristic. GAs can generate a vast number of possible model solutions and use these to evolve towards an approximation of the best solution of the model. Hereby it mimics evolution in nature.

GA generates a population, the individuals in this population (often called chromosomes) have a given state. Once the population is generated, the state of these individuals is evaluated and graded on their value. The best individuals are then taken and crossed-over – in order to hopefully generate ‘better’ offspring – to form the new population. In some cases the best individuals in the population are preserved in order to guarantee ‘good individuals’ in the new generation (this is called elitism). Continue reading

Evolution average number of beds per hospital

The OECD collects (among a lot of other statistics) information on the number of hospitals and hospital beds per country. These two parameters combined and its evolution over the years could give an indication on whether or not the country’s hospital landscape is evolving towards large medical centers, small scale hospital settings or whether there is no trend to detect.
Continue reading