Discrepancies between PM measurements of PurpleAir sensors and regulatory monitoring stations

Hi PurpleAir Community,

The differences between PurpleAir sensors’ measurements and government-run stations seem like a popular problem on the forum. Our project encounters somewhat a similar issue with the measurement discrepancies. We have access to the particulate matter data (PM2.5, PM10) measured by the Department of Environment New South Wales, Australia and we’re comparing them to the data collected from co-located PurpleAir sensors right at the Department’s many monitoring stations. What we are getting is that the official measurements are much higher than the ones from PurpleAir.

For example, a station can output 15-30 ug/m3 PM2.5 or PM10 hourly, but all co-located PurpleAir sensors only read about 0-5 ug/m3 PM2.5 or PM10 hourly. This is just an example observed from a station for many days but it similarly holds true for other co-located sensors at other stations as well. The issue is only with particulate matters, meteorological parameters like temperature and humidity seem to agree with stations’ measurements consistently. The thing is PurpleAir measurements seem like very low and official ones seem to have a kind of background or offset values compared to PurpleAir’s.

We’ve read a lot on the forum about PurpleAir sensors giving much higher readings than government-run stations in the US, conversion factors, meteorological and hyper-local characteristics that would significantly affect the measurements of PurpleAir. However, many of them didn’t apply to our case when we tested them out or irrelevant since our sensors gave much lower measurements.

I’d like to ask for your theories, recommendations on how to solve this discrepancy (posts, papers,…) or a reminder on what I overlooked when surveying our forum.

We’re attempting to utilise the data from PurpleAir sensors around the city to feed into our air quality forecast model so we’re looking for ways to solve this problem. The stations are used to interpolate data and benchmark sensors located far from the standard sources. Otherwise, just using the large but biased data from PurpleAir will greatly offset our predictions.

Thank you very much for your time!!!

I have noticed the same thing. I’ve been keeping track of the PurpleAir sensors that are a few blocks from my house, as well as my own PPM sensor from Adafruit (Adafruit PMSA003I Air Quality Breakout [STEMMA QT / Qwiic] : ID 4632 : Adafruit Industries, Unique & fun DIY electronics and kits) which I believe is the same base sensor as some of the PurpleAir. The PPM 2.5 values tend to track. I have noticed that the sensor tends to over-report when there is high humidity. I managed to find a conversion that address some of discrepancy, but it requires knowing the relative humity as well as the ppm25.

def rel_aqi(pm25, relative_humidity ):
if pm25 < 15:
return pm25
return max(0, (0.52 * pm25) - (0.085 * relative_humidity) + 5.71)

It would be interesting to see if this address some of your observations.