Sunday, November 10, 2019

Rainfall accuracy

In my previous analysis of forecast accuracy, I didn't look at the prediction for rain. Part of the reason for this is the fact that some of the services don't provide their rainfall reports and/or predictions in an easy to analyse format e.g. it might say 'light drizzle', 'cloudy' or heavy rain.

The one exception to this rule is the yr.no forecast service which provides rainfall predictions and reports in mm/hour. I thought it would be too strict to expect the forecasted mm/hour to match so I instead translated into rain or dry values.

This means that we can have 4 situations:
  1. pred_rain => we predicted rain and we got it
  2. unpred_rain => we didn't predict rain but we got it anyway
  3. pred_dry => we predicted dry weather and we got it
  4. unpred_dry => we didn't predict dry conditions but we got it anyway
I analysed 1 day and 7 day predictions for a selection of cities and I noticed a few key facts:

  • Rain forecasts in Luxor are 100% accurate, but this is because it never rained at all in Luxor during our time to track. This is in stark contrast to the results from other cities I looked at.
  • In Dublin, forecasts are about 82% accurate for the next day and 66% accurate for one week in advance.
  • In Galway, forecasts are about 75% accurate for the next day and 60% accurate for one week in advance. This is only slightly better than random coin tossing which we would expect to  provide 50% accuracy


Here is the raw output if you want to look closer:

1 Days in advance for Dublin
Total 2316
pred_rain 240 10.36%
pred_dry 1662 71.76%
unpred_dry 216 9.33%
unpred_rain 198 8.55%

Correct 1902 82.12%
Incorrect 456 19.69%
 
7 Days in advance for Dublin
Total 2232
pred_rain 84 3.76%
pred_dry 1398 62.63%
unpred_dry 408 18.28%
unpred_rain 342 15.32%

Correct 1482 66.40%
Incorrect 492 22.04%
 
1 Days in advance for Galway
Total 2346
pred_rain 330 14.07%
pred_dry 1422 60.61%
unpred_dry 276 11.76%
unpred_rain 318 13.55%

Correct 1752 74.68%
Incorrect 606 25.83%
 
7 Days in advance for Galway
Total 2256
pred_rain 180 7.98%
pred_dry 1164 51.60%
unpred_dry 474 21.01%
unpred_rain 438 19.41%

Correct 1344 59.57%
Incorrect 654 28.99%
 
1 Days in advance for Luxor
Total 2346
pred_rain 0 0.00%
pred_dry 2346 100.00%
unpred_dry 0 0.00%
unpred_rain 0 0.00%

Correct 2346 100.00%
Incorrect 0 0.00%
 
7 Days in advance for Luxor
Total 2238
pred_rain 0 0.00%
pred_dry 2238 100.00%
unpred_dry 0 0.00%
unpred_rain 0 0.00%

Correct 2238 100.00%
Incorrect 0 0.00%
 
1 Days in advance for Coral Springs
Total 2364
pred_rain 708 29.95%
pred_dry 996 42.13%
unpred_dry 402 17.01%
unpred_rain 258 10.91%

Correct 1704 72.08%
Incorrect 1110 46.95%
 
7 Days in advance for Coral Springs
Total 2268
pred_rain 594 26.19%
pred_dry 846 37.30%
unpred_dry 498 21.96%
unpred_rain 330 14.55%

Correct 1440 63.49%
Incorrect 1092 48.15%
 
1 Days in advance for Perth
Total 2382
pred_rain 168 7.05%
pred_dry 1974 82.87%
unpred_dry 108 4.53%
unpred_rain 132 5.54%

Correct 2142 89.92%
Incorrect 276 11.59%
 
7 Days in advance for Perth
Total 2262
pred_rain 132 5.84%
pred_dry 1740 76.92%
unpred_dry 228 10.08%
unpred_rain 162 7.16%

Correct 1872 82.76%
Incorrect 360 15.92%

Friday, October 25, 2019

Post Tricycles

While I was out running this morning, I happened to spot a man delivering the mail. This is not really worth mentioning except for the vehicle he was using to transport the letters and parcels. I have often seen mail delivery people use a bicycle, but the large sack of mail tends to make it hard to cycle safely. This guy was using a tricycle which had a huge box of mail being carried very efficiently.

Friday, October 4, 2019

Accuracy of temperature predictions

Using the weather data I collected previously, I wanted to figure out which of the forecasts services was making the most accurate forecasts.

The way I calculated this was by comparing the temperature predicted in x days time with the actual temperature reported by the service. e.g. if the provider predicted on 1st/Aug that the temperature would be x degrees in 5 days time, then I compare this with their actual reported temperature on 6th/Aug, This absolute error is then averaged across all readings from  all cities

Here is the summary data

Here is a chart of the data for people who prefer visual:

Points to note
  • I eliminated one reading from weather underground 6 day forecasts because it would have re-scaled the chart (probably indicates a programming error on my behalf).
  • In general the forecast accuracy decreases as the number of days increases.
  • Yr.no is best for next day, but bluemix and darksky are equally good further out.
  • OpenWeatherMap and Weather underground are significantly worse.

This analysis lumps all cities together for an average result. I might do some analysis later on performance per city.

Weather forecast data


I have published several posts about weather. I also did articles with analysis of temperature and wind forecast, but there is a lot more analysis which could be done. Therefore I decided to publish the raw data in case anyone wants to analyse it. I will also do some more charting/plotting myself.

Click here to download the captured forecasts in CSV format. The file contains over 2 million records in total and the format is fairly self explanatory. It covers a period from June 2017 to December 2018, but some forecasts are missing due to a variety of factors. Most notably the Bluemix data only covers August 2017 to February 2018.

I will later post additional analysis files in this folder with some derived data from this original data in the CSV.

I recently found out about a professional analysis report comparing the accuracy of several forecast providers. I think you should value their results above mine.


Sunday, September 29, 2019

Polite new icon

I was calling someone recently and I watched the screen while waiting to see if they would pick up.  After a few seconds passed I noticed this nice icon appearing on the screen asking for understanding if the person didn't pick up.

I thought it was very cute and encouraged a polite response to someone not answering my call. Maybe it is not new, but it was my first time to notice it.

Thursday, June 13, 2019

More challenges to navigating around dublin

Visitors (and even locals) often find it hard to navigate around Dublin. One of the problems the strange custom in Dublin of assigning totally different names to different sections of the same road.  I blogged before about some of the more confusing examples of this. Another problem is the fact that the council regularly decide to change the name of a street.

Here are a few examples:
  1. Amiens Street was The Strand 
  2. Ardee Street was Crooked Staff 
  3. Aughrim Street was part of Blackhorse Lane 
  4. Back Lane was Rochel Street 
  5. Balfe Lane was Pitt Street 
  6. Belmont Avenue was Coldblow Lane 
  7. Benburb Street was Barrack Street 
  8. Bishop Street was Great Boater Lane 
  9. Blackhall Place was The Gravel Walk 
  10. Bow Lane was Elbow Lane 
  11. Bow Street was Lough Buoy 
  12. Brabazon Street was Cuckold's Row 
  13. Bridgefoot Street was Dirty Lane 
  14. Brookefield Avenue was Watery Lane 
  15. Brookefield Road was Cutthroat Lane 
  16. Camden Street was St. Kevin's Port 
  17. Cathel Brugha Street was Gregg Lane 
  18. Cathedral Lane was Cabbage Garden Lane 
  19. Chancery Place was Mass Lane 
  20. Christchurch Place was Skinners' Row 
  21. Clonliffe Road was Fortick Road 
  22. Collage Green was Hoggen Green 
  23. Constitution Hill was Glasmunogue 
  24. Dame Street was Tengmoutli Street 
  25. Dean Street was Cross Poddle 
  26. Digges Lane was Goat Alley 
  27. Dorset Street was Drumcondra Lane 
  28. Engine Alley was Indian Alley 
  29. Essex Street was Orange Street and earlier it was Smock Alley 
  30. Exchange Street Lower was The Blind Quay 
  31. Exchequer Street was Chequer Street 
  32. Foley Street was Montgomery Street and earlier it was World's End Lane 
  33. Glover's Alley was Rapparee Alley 
  34. Green Street was Abbey Green 
  35. Haddington Road was Cottage Terrace 
  36. Hammond Lane was Hangman's Lane 
  37. Harrington Street was Whitworth Street 
  38. High Street was Main Street 
  39. Hill Street was Lower Temple Street 
  40. Infirmary Road was Aberdeen Street 
  41. Island Street was Dunghill Lane 
  42. Lansdowne Road was Watery Lane 
  43. Lincoln Lane was Pudding Lane 
  44. Lincoln Place was Park Street and earlier it was St. Patrick's Well Lane 
  45. Little Green Street was Bradogue Lane 
  46. Little Ship Street was Pole Mill Street 
  47. Lower Baggot Street was Gallows Road 
  48. Lower Gardiner Street was The Old Rope Walk 
  49. Mary's Lane was Broad Street 
  50. Mercer Street was French Street 
  51. Mespil Road was Gibbet Meadow 
  52. North Brunswick Street was Channel Row 
  53. North Lotts was Newfoundland 
  54. O'Connell Street was Sackville Street 
  55. Upper O'Connell Street was Drogheda Street 
  56. Old Kilmainham was Murdering Lane 
  57. Oliver Bond Street was Mullinahack 
  58. Parnell Square was Rutland Square 
  59. Parnell Street was Great Britain Street 
  60. Pearse Street was Great Brunswick Street 
  61. Pimlico was Donour Street 
  62. Prussia Street was Cabragh Lane 
  63. Railway Street was Upper Tyrone Street and earlier it was a Part of Mecklenburgh Street (see Waterford St.) 
  64. Sackville Place was Tucker's Row 
  65. Sean McDermott Street was Gloucster Street and earlier it was Great Martin's Lane 
  66. Shelbourne Road was Artichoke Road 
  67. St. Andrew's Street was Hog Hill & earlier it was Hoggen Hill 
  68. St. Michael's Lane was Macgillamocholmog's Street 
  69. St. Stephens's Green North was Beaux Walk
  70. St. Stephen's Green South was Leeson's Walk 
  71. St. Stephen's Green East was Monk's Walk 
  72. St. Stephen's Green West was French Walk
  73. Talbot Street was Cope Street North 
  74. Townsend Street was Lazy Hill and earlier it was Lazar's Hill 
  75. Usher's Lane was Dog And Duck Yard 
  76. Waterford Street was Lower Tyrone Street and earlier it was Part of Mecklenburg Street (see Railway Street) 
  77. Wellington Street was Paradise Row 
  78. Wolfe Tone Street was Stafford Street
This is not a complete list of street name changes, but just be careful if you have an older map.

Monday, September 3, 2018

Call for Code Project

As you may have heard, Ginni Rommety the CEO of IBM recently launched a Call-for-Code challenge to build a solution using IBM technology which will help solve problems with responding to natural disasters

We had a one day hackday in the Dublin lab to help form teams and kick-off projects. During this day I became part of a team named "Watson Dispatch Manager" which aimed to build a call screening agent for emergency services. This aims to solve the problem that when a major incident happens the emergency services get overwhelmed by multiple callers reporting the same incident, while callers trying to report a different (equally urgent problem) can't get through.

After the hackday, the team continued working and build and actual working prototype.

Here is a presentation about the project


Here is a video about the project for people who prefer that format
And here is an actual video of the prototype in operation.

Thursday, June 14, 2018

Keeping track of unread marks in Slack

In recent years IBM (and other companies) have become enthusiastic users of Slack to communicate. I must admit that I am not so impressed with Slack (partly because I was involved in developing some alternatives that I consider better), but I am leaning to use it nevertheless.

A confusing thing about Slack is how the concept of Workspaces and Channels intersect. On the far left of the Slack client you see a list of icons showing the Workspaces that you have joined. When you click on a particular Workspace , you will see a list of Channels in the Workspace and when you click on a channel you see the associated message. This sounds very straightforward, but the confusing thing is that you can have lots of Shared Channels and these will appear in multiple workspaces.

Like most messaging systems, Slack allows you to keep track of the messages you have read. I frequently load up Slack and read unread messages in each of the workspaces. However, I notice that when I switch to a second workspace the messages in the shared channel which I marked as read in the first workspace  are still showing up as unread.

Eventually I figured out how to solve this problem. You need to either select the menu item "View\Refresh" or else type ctrl-R each time you switch workspaces. The Slack screen goes blank for about 30 seconds and then comes back with the unread marks correctly applied. It is annoying to have to do this, hopefully Slack with fix this bug soon.

Thursday, March 1, 2018

Un-shortening URLs

URL shortening services such as bit.ly are very popular, but sometimes they can be dangerous. This is why I am glad to see that a url un-shortening service http://www.websiteplanet.com/webtools/redirected/ is now available.

The way url shorteners work is that I can set up http://bit.ly/2Ffns9i as a short url for http://brianodonovan.ie and then you can save yourself some typing by typing http://bit.ly/2Ffns9i into your address bar and be brought directly to http://brianodonovan.ie . In this case the number of keystrokes is hardly worth the effort, but in many cases URLs can be very long and hence difficult to type in correctly.

The danger of short URLs is that you don't know where they are going to bring you to. For example you might be expecting to be brought to https://www.mybank.com/myaccount but instead find yourself brought to http://www.hackers.ru/defraud-me

The way http://www.websiteplanet.com/webtools/redirected/ works is that you go there and type in your short URL and it tells you where you will be redirected to if you use that short URL (this might involve multiple redirects). You can then decide whether or not you feel safe to visit the site in question.

Thursday, January 11, 2018

My new GlowOrb tells me when rain is imminent

I recently acquired a new gadget called a GlowOrb. This is an orb the size of a ping-pong ball which is MQTT enabled which means that it can be programmed to change colour to give an ambient indication of some metric you would like to be aware of. Previous owners have used their GlowOrbs for a wide variety of uses e.g. alerting on air quality changes. However, I am obsessed with rain (as are almost all Irish people) so I decided to configure my GlowOrb to alert me of the chances of rain in the immediate future.

I followed the colour scheme from official weather warnings. So if my GlowOrb is
  • Green (as in the picture) it means that there is < 20% chance that it will rain in the next 4 hours and I can cycle to work with confidence that I won't be like a drowned rat when I get there.
  • Yellow tells me that the chance of rain is between 20% and 40% so bringing a jacket might be a good precaution
  • Orange indicates that the probability has grown to 40% - 60%
  • Red implies that the chance of rain is over  60% so there is no point in putting out the washing.
The way it works is that each GlowOrb has a serial number (printed on the underside of the unit) and you send a MQTT message containing a colour code to a MQTT channel associate with the serial number to change the colour of your orb. Don't worry if you don't understand what this means, there is a web address like http://mqtt.org/GO/XXXX-YYYY/ printed on the base of the unit (where XXXX-YYYY is the serial number of your unit) and if you visit this web address you will be given detailed instructions on how to use the GlowOrb. It also gives you a piece of JSON that you can import into any NodeRed service to have a working control program for your GlowOrb.

All I had to do to customise my GlowOrb was to write a simple NodeRed flow which accesses the BlueMix weather service every 15 minutes to determine the likelihood of rain where I live and then change the colour of the GlowOrb to match.

If you can imagine a use for your own GlowOrb, I encourage you to get one and experiment. They are quite cheap, but there is no formal ordering or pricing process for GlowOrbs. However, if you send a twitter message to @AndySc, he will give you a price quote in bitcoin or pound sterling.