Introducing simmer: Discrete Event Simulation for R

Introduction

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

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

Estimating required hospital bed capacity

Estimating required hospital bed capacity requires a thorough analysis. There are a lot of ways of approaching a capacity requirement problem, but I think we can agree that a simple spreadsheet analysis just won't cut it.

The approach described in this post makes use of discrete-event simulation and, just to clarify, makes abstraction from a lot of variables which should be taken into consideration in a real-life analysis.

To explain the approach, the following case will be used:

An emergency department of a small regional hospital receives complains about its emergency admission capacity. After investigation of its admission data it becomes clear that their service level is not up to par with that of other hospitals. Therefore, plans for the redesign of the emergency department and an investment in its emergency bed capacity are presented. The plan proposes a new bed capacity of 12 beds (coming from a previous of 10 beds). The Chief of Medicine wants to know what the effect of this investment will be on their emergency admission service level.

The emergency department has recorded data on the interarrival times of patients that are admitted (or should be admitted) to an emergency bed. The following graph shows the interarrival distribution (triangular: mode=5, min=.1, max=12):

plot of chunk unnamed-chunk-1

Continue reading

Holt-Winters forecast using ggplot2

R has great support for Holt-Winter filtering and forecasting. I sometimes use this functionality, HoltWinter & predict.HoltWinter, to forecast demand figures based on historical data. Using the HoltWinter functions in R is pretty straightforward.

Let's say our dataset looks as follows;

plot of chunk unnamed-chunk-1

Continue reading