The smartspaces website makes use of information on outside air temperatures and the extensive data that is captured by the energy and water meters at DMU and LCC every 30 minutes. From the past 365 days worth of information the system makes a prediction of what the energy and water use of a building would be in any 30 minute period.The smartspaces faces are then calculated based on actual energy and water consumption compared to this prediction. Lowe than expected consumption provides a greener face whilst higher than expected results in a redder unhappy face. A more detailed explanation is available on the smartspaces website http://smartspaces.dmu.ac.uk/about
How are the faces calculated?
The process is fairly complicated but I will do my best to explain and answer questions in this thread.
We can break the process down into discrete, simple steps.
- Determine the normal pattern for your building
- Predict an expected range based on the current time of day and outside air temperature
- Compare actual measurements with the expectation to determine a performance indicator
- Convert the performance indicator into a cheeky smiley face
So, each step in turn:
Determine the normal pattern for your building
This is done using a simple statistical model based on time of day and outside air temperature. To fit the model we separate baseline consumption data into one subset for each half hour period in a week. So we have one period representing Monday morning at 09:00 and one period for Wednesday night at 23:30 and so on. We fit the model to a 12-month baseline period so each subset of data has 52 values. These are the raw data that are fitted to 336 individual consumption models.
The models are simple regression against outside air temperature with a change point representing the building 'balance point' temperature.
Here's an example of Fridays at 16:30
Each week a new point is recorded and the baseline period rolls forward so the baseline used for this weeks calculations is the 12-month period ending last Saturday at midnight. Next week we will include this weeks point in the baseline and the earliest point will drop off the end and be forgotten.
Predict an expected range
We then look at the variation (the scatter) around the model to determine how far away from the model we can expect to be. This tells us what level of consumption would be considered normal, high or low for any given outside air temperature. Model residuals are calculated as the difference between each point and the model prediction.
Percentiles are calculated from the model residuals and added back onto the model prediction to generate expected ranges of consumption. The 50th percentile represents the value above and below which 50% of baseline data fell, a kind of central value. The chart above shows the 1st, 10th, 25th, 75th, 90th and 99th residual percentiles added back onto the model prediction.
The resultant coloured zones of consumption are similar to those used in the detailed graphs on the website. For every measured point we know the time of week and we know the outside air temperature so we compute the range in this way and plot the data as a time series.
Compare actual measurements with the expectation
As well as calculating the level of consumption associated with specific percentile values such as the 25th and the 75th we can also calculate the percentile score of any observed level of consumption. Any value of consumption can be converted into a residual by comparing it to the baseline model, this residual can then be compared to the baseline model residuals to compute a percentile score representing precisely where it sits within the normal range from 0 (representing a residual lower than any in the baseline period) to 100 (representing a residual higher than any in the baseline period).
Convert the performance indicator into a cheeky smiley face
Its fairly easy to design a face that changes colour and eye shape and smile smiliness based on a value from 0-100.
Here we can see he red bad range
the yellow neutral range
and the green good range
You can find out a bit more about the process in this paper I wrote last year. It shows an early version of the system.