Lockdown and no PM improvement! (2/2)

April 18, 2020

I took the time today to look at the 4 PM measuring stations of Luxembourg, and to check if these stations that all use the same equipment (Horiba  APDA371 ) show an improvement in PM 2.5 concentration between the periods 14-March to 12-April in 2019 and 2020. Here a map of tiny Luxembourg (distance from South to North is about 86 km) with the 4 official stations and our meteoLCD facility at Diekirch:


The 3 stations at Place Churchill, Bonnevoie and Esch are town stations, with usually heavy traffic around. Beidweiler is a rural station and Diekirch is best seen as semi-rural.

The official data can be found here and ours at meteoLCD here.

I downloaded all data from the discomaps site; the labels of the 4 official stations are:

ESCH                LU_0102A

The conclusion is practically the same as in the first part of this comment. The following picture says it all: there is no distinctive fingerprint of the lockdown to be seen. The averages are computed from the published hourly readings.


One could eventually see a more smooth pattern at Churchill, but the difference between the averages is small, and note that all these averages are little. The rural Beidweiler and the town station at Esch do really not behave well, as they have increased PM2.5 levels during the lockdown (not much for Beidweiler, but nearly +50% in Esch).

The EPA’s revised standard from 2012 are 35 ug/m3 for the daily average, and all 4 stations are well below this. The annual average should be lower than 12 ug/m3, which seems quite extreme, as wind blowing over dry soil can produce quite spectacular amount of PM2.5 and PM10 (and let’s not speak of wood burning). The paper here for instance gives a number of 12.2 mg/m2 blown away as PM2.5 when wind at 8m/s blows over uncrushed soil: so every m2 of soil surface would expel 12200 ug of PM 2.5 in these windy conditions! Even with a 100 fold dilution does this still amount to concentration of 12 ug/m3.

Lockdown and no PM improvement! (1/2)

April 13, 2020


Luxembourg went into economic lock-down (well “pseudo-lockdown” would be more appropriate) the 14th March 2020 with schools, most industries, shops, restaurants, sports activities etc. stopped and people asked not to leave home except for very important, exceptional reasons. The road traffic diminished drastically; here at meteoLCD we are used to heavy morning and evening traffic spikes when many foreigners who work in Luxembourg enter the country in the morning and leave in the late afternoon. The roads have become very empty…and all this should show up in the air quality parameters….but surprise, it doesn’t !

This has been observed and commented on other places. In very polluted large cities, NO2 levels have been seen falling, but not everywhere. Read this recent article in Nature where atmospheric scientist Dan Goldberg from Argonne National Laboratory is cited with “I haven’t seen any statistically significant changes in air pollution in most US cities, which is contrary to the claims in some media articles”.  The German FOCUS online of today (13-April-20) has an article from Dipl. Ing. Martin Schraag titled “Kaum Verkehr…trotzdem Stickoxide Spitzenwerte: Corona entlarvt Fahrverbote als sinnlos”.

So its time to look at the “real” numbers measured by meteoLCD and by our usual reference station of Beidweiler; we measure fine particles with an Airvisual Pro instrument from iQAir, Beidweiler uses an Horiba (you might re-read this article here for more details).

I choose the period from 14th March to 12 April 2020, which corresponds practically to the start of the lock-down period (which started definitively the 16th); we will compare with the same period from the previous year.

The Beidweiler data are fetched from the discomap EU database, which is a bit tricky to use. Suffice to say that Beidweiler is the Luxembourg station STA-LU0105A; I leave the pleasure to fetch the correct data to the Sherlockians of my readers! The 2020 meteoLCD data are fetched from the Airvisual cloud.

Here a table showing what happened to the fine particle concentrations during these two periods; the numbers correspond to the averages over the period:


Clearly not much to see here: the Beidweiler PM2.5 concentration increased slightly with better air, and the meteoLCD values decreased about the same amount. These changes are so small that they are well below the accuracy level of both instruments; so there is only one conclusion to draw: at these two stations, which are typical for rural/semi-rural locations, the traffic lock-down does not leave any visible trace!

The AQI number is the US-AQI as defined by EPA; it would be foolish to conclude from the small decrease that air pollution in Diekirch became less!

Here two graphs showing the Beidweiler and meteoLCD data for the two periods:



Now, comparing raw PM readings is a bit rude; we know that meteorological parameters play a very big role. Suffice to say that the mean temperature was about the same (9.11, and 9.64), wind velocity also (1.98, 1.74). UVB radiation was a bit higher in 2020 (2019: 199, 2020: 248 mMED/h), but contrary to what one would expect, ground Ozone levels were lower (2019: 93, 2020: 48 ug/m3). So if the traffic lock-down has eventually left a small finger-print, the O3 level would go in the expected direction.


Do you remember the sometimes ugly discussions last year about the lethal danger of PM’s, and that Diesel cars should be banned as soon as possible; but always ignoring that lean injection petrol engines emit about the same amount of NOx and PM’s, and still ignoring that the “green” -hyped wood burning is one of the major emitters of fine particles. In Germany the opposition to the very efficient Diesel cars reached religious fanaticism… and what do we see know, when Covid-19 has forced us to make a “super-experiment”:  PM 2.5 levels remain as they were!

(to be continued)



COVID-19 Luxembourg: an animation of the Gompertz fit (4/x)

April 11, 2020

I have added an animated GIF to the meteoLCD site showing the evolution of the total infected number for Luxembourg, together with a Gompertz fit made the current day and a visual indication of the uncertainty range (the yellow rectangle):


The Gompertz equation is Total = a*exp(-b*exp(-c*Day)); to make a consistent non-linear fit (using Statistica with a Levenberg-Marquardt algorithm) the initial values of the 3 parameters have been kept constant: a=2000, b=0.10, c= 0.05

Starting 24-March-20 the fit and the parameters are statistically significant (at the 95% level, R2 is always >0.99). To make a correct animation, one has to be careful that the general layout of the graphs does not change from plot to plot (same text except date, same scale of axis, etc.). I used the free online animated GIF maker at ezgif.com, which is quite handy. The Gif maker allows to change the time delay individually for every picture, which is quite handy (I did not see this feature in the first animations made, but use it now…). The animation is built upon the graphs of every second day.

Click here to access the animated GIF!

Covid-19 Luxembourg: narrowing of the uncertainty range (3/x)

March 27, 2020

In the previous blog (link) I wrote about the fact that with few data points, the Gompertz fit asymptotic value (= the maximum of infected people to be expected) has an extremely large uncertainty. The interval may extend to impossible negative and also impossible high positive values.

As an example I will show how the situation changes if we extend the full data series (starting the 29th February) from the 22nd March to the 24th and finally the 26th March.

If we stop at the 22nd, the lower bound is about -22430 and the higher 43532, and the parameter a of the Gompertz fit (i.e. the asymptote) is not statistically significant.

When we extend the period to March 24, and than again up to March 26, everything changes: the computed asymptotes become statistically significant, and the uncertainty interval narrows spectacularly:

The blue circles represent the asymptotic values, and the red boxes the range of the uncertainty interval. I will continue this investigation when data up to the 28th March are available.


PS: here is the situation with the 28-March data included:



(to be continued)

COVID-19: does the number of deaths increase exponentially? (2/x)

March 19, 2020

In this 2nd and very short comment on the COVID-19 situation in Italy (data for 22 days now available) I will show that the usual remark on the exponential development of the death cases is not correct. The next figure shows as points the number of observed deaths (black dots) up to 18-Mar-20, and also what 3 different fits to the Gompertz function give when made at days 14, 19 and 22 (the points given by Death_GPZxy)):


Firstly, the 3 GPZ fits numbers are nearly identical to the observations (the 4 markers mostly coincide). The blue curve is an exponential fit for the complete series of 22 days: clearly from day 19 on the real numbers lie below the exponential curve. This difference will probably increase in the future.


In the ongoing COVID-19 in Italy, the number of deaths does not increase exponentially, but follows very closely the Gompertz function y=a*exp(-b*exp(-c*x)), and so will be gradually lower to what an exponential increase would suggest.


(to be continued)


COVID-19: calculations and curves (1 of x)

March 18, 2020


1. Introduction

With the spread of the new and nasty corona virus modelling and calculations about pandemics and spread of infection spring up about everywhere. Now the interest and the mathematics of handling such a situation are not new, and are a standard subject for all students of differential equations. As an example, let me give an example from a publicity brochure for the Hitachi 200x hybrid analog computer from the 60’s:


(~1967, click here to download the full brochure).

Here is the example problem:


A system of 3 non-linear differential equations is enough to model the situation, and the plotter driven by the analog computer outputs this graph:


A very long time ago, Benjamin Gompertz (1771 – 1865) published a sigmoid-type function that often fits well to the first or all parts of the infection (above for instance the curve Z). The Gompertz function has only 3 parameters and is:

y(t) = a*exp(-b*exp(-c*t)).

When t tends to infinity, exp(-c*t) -> 0  and exp(-b*0) = 1; so when t -> infinity, a becomes an asymptote ( in the curve Z all persons become immune in the long run).

Willis Eschenbach has an excellent article in the Wattsupwiththat blog titled “The Math of Epidemics“, where he applies the Gompertz function to the Covid-19 cases in South Korea, and the fit is excellent:


His article put me on the rails to do the same with the situation in Italy (start of the epidemic is 25 Feb 2020), all relevant data are published live here.

2. Gompertz function and Covid-19 in Italy

This is the Gompertz-function applied to the death cases, as published today 18-March-2020:


The fit is excellent, and all 3 parameters are statistically significant; the interval between the lower and upper confidence levels is [6741, 45889], and the fraction of (std.error of a)/a has become 35%. The relative errors and the width of the confidence interval will narrow with more data points available. When only few points is all you have, do not make any prediction! The next figure shows the plot from above, extended up to 100 days, and also the same exercise when only 14 and 15 data points were available:


When only 15 or 14 data points are available, the confidence interval becomes ridiculous; it is only for the latest plot with 21 points that all three parameters become significant at the 95% level. So beware to massage your asymptote for any serious meaning, if you have too few data!


3. The Gompertz curve and Covid-19 in Luxembourg.

Tiny Luxembourg (~675000 inhabitants) only started the epidemic in Feb. 29th. Until today we have only 6 data point for the total infected (up to 203 today) and 2 cases of death. Here what the Gompertz fit looks like for the total infected:


But look at the enormity of the confidence interval! Even if the Gompertz calculation gives near identical results as the observations, all parameters are not significant and one should never see the asymptote in the next graph as an intelligent predictor for the maximum number of infections!



(to be continued)

An interesting day for Ozone and CO2

February 5, 2020

Today 05 Feb 2020 is an interesting day to observe how ground ozone O3, CO2, NO2 and wind may play together. The next figure shows how air temperature, CO2, ground O3 (measured by the Cairsens O3&NO2 sensor) and wind velocity (in m/s) varied during the morning at meteoLCD:

We see that CO2 makes a big jump starting at 06:00, with a peak at 07:30 and a fall back to “normal” at 09:00. Ground ozone varies in the opposite manner, as does the wind velocity and air temperature. What causes these variations? Probably the cooling of the boundary layer, together with lower wind, enhances the morning inversion. CO2 emissions from traffic and heating are trapped and CO2 levels rise; when the wind increases again, the boundary layer starts being mixed, which dilutes CO2. So far, so good. But why the sudden slump in O3?
Our period starts at 06:00 UTC, which is 07:00 local time. At that hour the nearby traffic from people driving to their workplace peaks, something we often have noticed in our NO/NO2 measurements. We know that O3 is destroyed by NO (and produced by NO2, among others); look here for a very small article on this I wrote in Dec. 1998 (!) with several of my students. So the best explanation is that a NO peak from this traffic (and NO being trapped in the inversion layer) operates to destroy ground ozone.

We find this situation at the official station of Beckerich, where the traffic situation is similar to that at meteoLCD (Diekirch). Beckerich curiously is the sole station showing NO2 readings (the other 4 having probably a problem with their sensors). NO2 is mainly the result of an oxidation of NO coming out of the tailpipes, so we may safely assume that the hourly variation is similar in shape.
Here the Beckerich situation:

NO2 peaks at Beidweiler
(05 Feb morning = yellow)
… while O3 takes a plunge!

Two other stations (Luxembourg-Bonnevoie and Esch) show the same O3 dip, and two (Beidweiler and Vianden) do not.


Once again we find an illustration of the importance of wind velocity (i.e. air movements) on the CO2 mixing ratio: lower wind (especially during an inversion) allows CO2 to accumulate, and more air movement makes for higher dilution and lowers the concentration.

Ozone levels in the relatively low sun morning hours (despite the sunny and blue sky morning, at 08:00 UTC solar irradiance was a meager 50 W/m2)) are mostly affected by the destroying NO gas, whose concentration peaks normally during the high traffic morning hours, This would explain why the Vianden O3 levels do not plunge, as there is practically no traffic around that measuring station:

No O3 dip at traffic-free Vianden!

One year of fine particle measurements by Airvisual Pro at meteoLCD

January 23, 2020
Airvisual Pro installed in the Stevenson hut the 26th Dec. 2018

1. Introduction

During the year 2018 I decided to introduce fine particle measurements at meteoLCD. During many months I built several PM measurement systems based on the Chinese SDS011 sensor made by inovafit, with data logging done by a Raspberry Pi. All these new sensors are of the LLS type (LLS = Laser Light Scattering), where ambient air is sucked into a chamber by a little fan and exposed in that chamber to the light emitted by a solid-state laser. The scattered light is analysed by a photodiode, and the result is a count of particles in suspension, classified in two categories (< 2.5 um for PM 2.5 and < 10 um for PM 10). The counts are converted into a mass (ug/m3) by the inbuilt controller, assuming a certain combination of substances of known density. Clearly this easy to built system has some weak points: the most important is humidity, and it has been shown that above a certain level of relative humidity (about 75%) the condensation of water vapor on the particles inflates the count and so the mass reading. A second weak point are the changing conditions of air flow due to a varying atmospheric pressure and/or wind. Professional, expensive sensors like the Horiba APDA-371 avoid these problems by drying the incoming air, maintaining precise conditions of airflow and air pressure, and using a much more expensive and complicated principle of beta radiation weakening (BAM principle). I wrote two preliminary articles on comparing low-cost LLS sensors with a Horiba at the Beidweiler station, which I suggest to read here and here.

2. The Airvisual Pro

The Airvisual Pro is a stylish LLS-type sensor made by the Swiss company iQAir (actual price ca. 460 €). It measures temperature, rel. humidity, CO2 concentration, PM2.5 and PM10. The instrument can be integrated into a cloud managed by iQAir, so that hourly data are always available on the internet (see our data here). Communication with the outside is exclusively by WiFi (there is no RJ45 connector), which was sort of a problem at meteoLCD. We first used a Devolo Powerline system with the AP located in the hub (visible in the above picture below the translucent base plate). This system was unstable, even when we switched to a AVM powerline system which uses the 3 line wires (neutral, line and ground). So finally I laid an RJ45 cable up into the Stevenson hut, and installed a WiFi access point directly beneath the Airvisual Pro. This solved the problem of intermittent connection failures.

The correction of the humidity influence consist in dividing the raw readings by a growth-factor GW = a + (b*RH^2)/(1-RH) where RH is the relative humidity (number between 0…1), a=1 and b= 0.25. This formula has been suggested by several authors (see my prior papers for the references), and first tests have shown that this compensation for humidity is an absolute must.

3. One full year of data

We now have a full year of hourly data to compare the Airvisual Pro readings with those of the official Beidweiler station LU0105A located less than 20 km from Diekirch. The Beidweiler data have been downloaded from the “discomap“-site of the EEA, and I used the E1a series (the validated E2a series are not yet available). The E1a data are somewhat irregular in the ongoing time (lines do not always follow increasing time), and there are many missing data (often a couple of hours, but some much longer periods). The time-stamp probably is local time, as is the time-stamp of the Airvisual Pro file. Missing values have been replaced by repeating the last correct reading before the interruption. As all hourly data are raveled into daily averages, the impact of this action is tolerable.

So here is a plot showing the daily PM2.5 readings for the full year 2019:

First, look at the peaking values, which are absolutely synchronous: practically all the peaks and lows coincide in time. The yearly averages, minima and maxima also are very close for both series.

The next plot shows the Airvisual Pro readings versus the Beidweiler ones:

The goodness of the fit (forced to 0) is R2 = 0.88, quite acceptable! A calibration factor to apply to the Airvisual Pro PM 2.5. readings would be a multiplier of 1/0.88 = 1.14 (always rounded to the nearest integer). Not forcing the trend-line through the origin does not change these results.

4. The PM 10 readings

The Airvisual Pro seems to have a problem with the PM10 category, as these readings are very similar to the PM 2.5, and considerably too low, as shown by the next plot:

I have no explication to this for the moment.

5. Conclusion

This first year-long series of PM measurements with the Airvisual Pro shows that it is exceptional accurate in its PM 2.5 measurements, compared to the hugely more expensive Horiba APDA_371.

The Airvisual Pro, despite being exposed in the open in a well ventilated Stevenson hut (natural ventilation) and high humidity levels, worked without a single break-down for the full year

The year long communications with the Airvisual cloud worked flawlessly; this cloud makes it easy to store and consult the uploaded data. For understandable security reasons, accessing these data is reserved to the subscriber, and not the general public.

An Excel file holding all relevant data and plots can be found here. Please give proper credit when citing these data.

Future and extinction fear

October 10, 2019

I reread during the last weeks the excellent book “La Peur Exponentielle” of Benoît Rittaud, in which he recalls the many fears tied to a geometric or exponential increase in some environmental factor, be it population growth, pollution, climate change etc. At the end of his book Rittaud recalls the classic book “The Doomsday Syndrome” published by John Maddox in 1972. Maddox was a theoretical physicist and is especially known for being the editor of the Nature journal (from 1966 – 1973 and 1980 – 1995). I never did read the book in the past, so I ordered a used copy as it is out of print.

The ideas and comments by John Maddox written 47 years ago are breathtaking in their modernity and actuality. He writes this book at a time when the environmental movement was thriving in the Western World, and the prophets of doom like the Ehrlich (“The Population Bomb”) and Rachel Carson (“The Silent Spring”) were very influential. The great angst were population growth, pollution, pesticides, climate change (yes!) and a general overcrowding and damaging the “Spaceship Earth”.

All of these prophecies were wrong in their exaggerations of real exisiting problems. The great famines predicted by Ehrlich for the 1970’s did not happen; overuse of DDT certainly was a problem, but the general policies in forbidding its use (after it had saved millions of lives from malaria) are responsible for possibly hundreds of thousands of deaths.

Let me here just cite a couple of sentences from Maddox:

On the doomsday prophecies: “Their most common error is to suppose that the worst will happen”.

On the way the environmentalist see the non-alarmists: “One of the distressing features of the present debate about the environment is the way it is supposed to be an argument between far-sighted people with the interests of humanity at heart and others who care no tuppence for the future.”

On the scientists: “They have too often made more of the facts than the conventions of their craft permit. Too often, they have expressed moderate or unsure conclusions in language designed to scare, sometimes with the open declaration that exaggeration is necessary to 'get things done'.

On ecology: “The word ecology has become a slogan, not the name of a branch of science.”

The doomsday cause: “…would be more telling if it were more securely grounded in facts, better informed by a sense of history and awareness of economics and less cataclysmic in temper.”

On DDT and Rachel Carlson: “The most seriously misleading part of her narrative is the use of horror stories of the misuse of DDT to create an impression that there are no safe uses worth consideration.”

On alarm: “…alarm does not provide the best atmosphere for finding rational solutions”.

On extreme environmentalists: “…the extreme wing of the environmental movement may inhibit communities of all kind from making the fullest use of the technical means which exist for improvement of the human condition.”


How about telling Extinction Rebellion (or the elder of Fridays for Future) to start reading this prescient book written well before they were born?

A peek at ground-ozone

October 5, 2019

Attention: this comment has being updated the 06Oct2019; the previous comparison with the 6 months values was erroneous. Sorry!


A useful exercise is always to compare our meteoLCD ground ozone measurements (here) with those of the official administration for air quality (here).

Since 3 Jan. 2017 we use the miniature CAIRSENS O3&NO2 sensor for our ozone measurements (technical specs here). The NO2 readings are normally well below the lower limit of detection of 20 ppb of this instrument, so that its readings can be taken as ozone concentration (in ppb, multiplying by the conversion factor 2 gives a result in ug/m3 at standard conditions). The Administration of Environment uses expensive Horiba sensors in its stations and the readings are given in ug/m3. The 3rd April 2018, the first Cairsens O3&NO2 has been replaced by a follower.

  1. The official stations of Vianden, Beckerich and Beidweiler.

We will compare our measurements made during the week of the 29th September 2019 with those of the three stations of Beckerich, Beidweiler and Vianden:

As Luxembourg is a very tiny country, the distances between Diekirch and the other 3 stations are small: Diekirch-Vianden = 8km, Diekirch-Beidweiler = 19km, Diekirch-Beckerich = 25km (rounded to the km).

Regarding traffic we have a very clear situation: Vianden has very low traffic, and is surrounded by a large forest area; the measuring station is situated between the two basins of the pumped water storage SEO facility. Beidweiler has some morning and evening traffic peak from people driving for work into Luxembourg and also a certain amount going opposite into the Moselle region or Trier in Germany. Beckerich surely has the most morning and evening work related traffic, and being on a main road (but not a highway) to Arlon in Belgium, also more traffic during the day. This situation is similar to that in Diekirch, where there are traffic peaks in the morning and evening hours and a continuous background over the day.

Here a picture of the O3 measurements of these 3 stations:

I added a horizontal line defining the lowest nightly measurements: Clearly Vianden shows the typical situation of a rural station, where there is no nightly traffic whose NO emissions are rapidly bringing down the O3 levels. Its peak values also are the highest, as this is a location with very pristine and clear air (so no much UVB attenuation here), and with a large natural supply of ozone precursor gases as isoprenes and terpenes emitted by the surrounding trees.

Beidweiler is an intermediate: the night lows are close to 20 ug/m3 and the peak values are lower than those of Vianden. Finally Beckerich has the lowest night O3 levels, going down to about 5 ug/m3; its peak readings also are distinctly inferior to those of Vianden and Beidweiler (please pay attention that on the graphs the vertical scales are not the same!)

Now I can not refrain to make a comment I am issuing since at least 20 years. From its location, it is clear that Vianden must have the highest natural O3 levels during warm periods (all stations not mentioned here are city stations). Why is it than that the Administration of Environment uses every year the Vianden values to declare an ozone emergency and limit traffic speed on the highways, with the argument that Vianden is representative for Luxembourg! Nothing could be father from truth: most people in Luxembourg live in/near Luxembourg-City and to the South, in regions that are a far shot from the pristine Vianden situation. I guess that an environmental agency must justify its existence by launching scary messages from time to time ; I am more than willing to change my opinion if I get one single good argument justifying its choice that I consider a political, and not scientific one.

3. Comparing Diekirch to the three other stations

The next figure shows for every station (brown curve) an overplot with our Cairsens measurements (in red):

Simple inspection would suggest that Beckerich and Diekirch are the most similar: same night-time low due to ongoing traffic, same highs and lows with a possible overshoot of the highest readings. Beidweiler ranks second and Vianden makes for some head scratching: the night-time readings are quite different, but all the high readings are very close.

In my opinion, our Cairsens (this is the second sensor as each one has a life-span of a year) has a span that might be slightly to high, even if its calibration certificate was nearly perfect. During high ozone events, we had several times readings exceeding 200 ug/m3, when the other stations were distinctly below.

Let us have a look at the last month (09 Sep to the morning of the 06 Oct) overlaying the Diekirch and Vianden plots:

This looks not too bad, but clearly the ozone sensor in Vianden had some problems, shown by the brown straight lines which point to an interpolation of missing data. Do also not ignore that this graphical overplot is really rough, so one should not put too much emphasis on slightly misaligned peaks.

Now lets look at the past 6 months. The official station correspond rather well one to another:

We find approximately the same situation as in the short week long series from above.

Here now a comparison between Diekirch and Beckerich, and in the next picture Diekirch and Vianden:

Visually this is not too bad! We have the same peaks and lows, with a possible overshoot in the Cairsens readings during the highest O3 periods.

4. Conclusion

This short comparison has shown a quite good agreement between our Cairsens measurements and the Horibas during the last week, month and even 6 months periods. Do not forget that the price difference between the Cairsens and the Horiba is enormous. The Cairsens is one of a new generation of sensors that are made to be affordable, calibrated for a full year of operation, and meant to be replaced after that year.

The O3&NO2 Cairsens sensor has a special patented filter that must be changed every 4 months or so. This change will be made asap.