Probleem in data pijplijn? (deel III)


foto Andrea Piacquadio Pexels.com

De meeste tijd in de onderzoekjes die ik heb uitgevoerd ging altijd zitten in de saaie dingen zoals het verzamelen oplappen van data en het verklaren van afwijkingen. Zo ook hier. Ik had het al aangekondigd in deel I, dat ik wat meer wilde kijken naar de verschillen tussen mijn gecorrigeerde- en de ruwe data. Waarom is in de gecorrigeerde data links de piek verdwenen die wel in de ruwe data is te zien (rechts)?

verschillen gecorrigeerde- en ruwe data

Deze vraag kwam nog sterker naar voren toen ik verrassend genoeg het volgende grafiekje in een soort gelijk onderzoek tegen kwam. 


Dit plaatje maakt onderdeel uit van een onderzoek van scapeler omtrent uitstoot in lockdown periode voor Stuttgart, Noord Brabant en Arnhem, een aanrader. Dit onderzoek gebruikt dezelfde ruwe data van Luftdaten alleen dan voor PM2.5 (groene lijn)  maar is dan ook nog aangevuld met PM2.5 data van de satelliet CAMS (blauwe lijn).
 

In dit bovenstaand grafiekje het verschil tussen mijn gecorrigeerde PM2.5 data (link) en de ruwe PM2.5 data (rechts). De CAMS (blauwe lijn vorige grafiek), een andere bron, bevestigt dus met de waarde 30 μg/m3 de piek in ruwe data en niet de door mij gecorrigeerde data. Oeps. Ik vermoed dat er iets goed fout is gegaan met mijn correcties. 

Resume

In deel I hebben we vooral via visualisaties laten zien dat er niet zoveel verschil was tussen de uitstoot in de lockdown als buiten de lockdown. In deel II hebben we vanwege nogal grote verschillen in weersomstandigheden tussen deze perioden de gemiddelde meetwaarden in lockdown met 19% omlaag gebracht. Dit is ons eindresultaat tot nu toe:

gecorrigeerd    no-lockdown in-lockdown    
PM10         4,45         5,26 -> 4,26*)
PM2.5         1,75         2,08 -> 1,68*)
*) correctie weersomstandigheden

Maar wat als we nu niet de gecorrigeerde data hadden gebruikt maar de ruwe data, dan zou dit het resultaat zijn

ruwe data       no-lockdown in-lockdown    
PM10         7,19         6,22 -> 5,04*)
PM2.5         6,22         2,50 -> 2,70*)
*) correctie weersomstandigheden

Deze ruwe data geeft ook zonder de correctie op weersomstandigheden wel precies aan wat we hadden verwacht. Nog meer reden om in te zoomen op de correcties, het lijkt er toch echt op dat ik onterecht te veel meetwaarden heb weggegooid of bijgesteld.

Welke correcties?

In de datapijplijn code zijn er aantal momenten waarop fijnstof meetwaarden PM10, PM25 worden weggegooid of beter gezegd niet worden meegenomen. Dit gebeurt nu in de volgende gevallen:
  1. Metingen met extreme waarden niet meegenomen 
  2. Metingen van sensoren die (tijdelijk) onbetrouwbare metingen geven niet meegenomen
  3. Metingen gecorrigeerd van meetpunten bij een vochtigheidsgraad > 75%
Mijn aanpak is om uitgaande van de ruwe data per correctie te kijken welke invloed deze heeft op de piek.

Test 1: alleen extreme waarden uit de ruwe data:

Piek is nog steeds aanwezig, deze correctie had dus niet zoveel invloed.

Test 2: alleen de foute sensoren uit de ruwe data:

Piek is nog steeds aanwezig, deze correctie had dus niet zoveel invloed.

Test 3: alleen correctie meetwaarden bij luchtvochtigheid >75%



Nu is de piek is weg. Deze correctie is de boosdoener. Nu zelfde plaatje maar met luchtvochtigheid erbij om te checken of de piek inderdaad overeenkomt met een periode met een luchtvochtigheid > 75%


Ja we kunnen zien dat de luchtvochtigheid (groen) bij de piek >75% was en daarom is gecorrigeerd.

Hoe ziet de huidige correctie nu uit?

Om het effect van de huidige luchtvochtigheidscorrectie weer te geven heb ik in onderstaande grafiekje alle fijnstof meetwaarden in 5 bakjes (quantiles) verdeeld met in elk bakje even veel meetwaarden. In bakje 1 zijn de fijnstof meetwaarden met de laagste luchtvochtigheid opgenomen en in bakje 5 die met de hoogste luchtvochtigheid ( t/m 100%). Zo ziet de relatie tussen fijnstof en luchtvochtigheid eruit zonder dat er een correctie is uitgevoerd. 

niet gecorrigeerde meetwaarden

Je ziet in bovenstaand plaatje dat hoe hoger de luchtvochtigheid des te hoger de fijnstof uitstoot. Nu hetzelfde plaatje alleen nu na mijn correctie:

gecorrigeerde meetwaarden

Je ziet nu in bovenstaand grafiekje dat vanaf het vierde bakje de correctie de meetwaarden worden verlaagd, en in bakje 5 zijn bijna alle meetwaarden tot bijna niets teruggebracht.

Waarom correctie bij hoge luchtvochtigheid?

Ik heb de correctie gedaan naar aanleiding van dit onderzoek. Dit onderzoek kijkt naar de invloed van luchtvochtigheid op goedkope fijnstof sensoren waaronder ook de SDS011. Ze geven aan dat de meetwaarden boven 75% luchtvochtigheid te veel fluctueren. De reden is dat de goedkope sensors, zonder een droog faciliteit bij de inlaat, weescondities zoals mist en kleine waterdeeltjes onterecht ziet als fijnstof.

Nu ik het onderzoek een tweede keer doorneem zie ik dat een tip wordt gegeven die ik de eerste keer heb gemist :

"We find that there is no direct relationship between the relative humidity in the atmosphere and the PNC and PM concentrations reported by a sensor or monitor with no drying facility at its inlet and, as such, it is not possible to derive any appropriate correction factors for this effect."

Kortom wat ze zeggen is dat een correctie is niet mogelijk is omdat de fijnstof waarden niet meer betrouwbaar zijn (geen relatie met luchtvochtigheid), dus mijn interpretatie is dat we de meetwaarden bij luchtvochtigheid >75% niet mogen meenemen. 

Dit zou het volgende filter betekenen:

geen correctie maar weglaten

Bakje 5 (boven) valt dan nu helemaal weg. En dat betekent dit (onderstaande grafiek) voor de hoogte van de piek:


De piek is weer helemaal terug, bij de 30 μg/m3, kortom deze "correctie" was een foutje van mij. Ik had niet de waarden mogen verlagen waardoor de overall gemiddelden omlaag gingen. Door ze helemaal niet mee te nemen en daarom ook niet in de gemiddelden komen is de piek weer terug op zijn plek.

Afsluitende opmerking

Of mijn spoiler alert in deel I met de conclusie dat er weinig verschil was tussen de uitstoot tussen periode in-lockdown en daarbuiten voorbarig was gaan we hier even checken. Dit zijn de nieuwe uitkomsten waarin de correctie op luchtvochtigheid nu goed is toegepast:

gecorrigeerd v2 no-lockdown in-lockdown    
PM10         6,10         5,49 -> 4,45*)
PM2.5         2,10         2,12 -> 1,72*)
*) -19% correctie weersomstandigheden


Wat je kan zien is dat zonder rekening te houden met de weersomstandigheden er nu wel een zwak effect te zien is. Ik vermoed alleen dat als je een test op significantie zou doen dat deze verschillen niet significant zouden met name voor PM2.5. Maar als je de weersomstandigheden zou meenemen dan zien we dat we wel een duidelijker verschil krijgen.

De code van 03_process.r zal ik nog updaten met de nieuwe correctie:

# old correction # scale_factor<-120 node_obs="">% # mutate(P1=ifelse(humidity >hum_max_threshold, P1*(1-humidity/scale_factor), P1), # P2=ifelse(humidity >hum_max_threshold, P2*(1-humidity/scale_factor), P2)) # new correction node_obs <- node_obs="">% mutate(P1=ifelse(humidity >hum_max_threshold, NA, P1), P2=ifelse(humidity >hum_max_threshold, NA, P2))

In de volgende post ga ik even alles bij elkaar brengen wat ik heb geleerd in deel II en III, vergezeld met wat vernieuwde grafiekjes.

Dank voor het lezen,

Reinier Straatemeier
Burgerwetenschapper in wording
 






Reacties

Populaire posts van deze blog

Fijnstof uitstoot rondom de lockdown (deel I)

Ideetje voor mijn eerste data project met sensoren

Arnhem Centrum: fijnstof rondom lockdown, aangepaste conclusie (deel IV)