In February 2024, We placed 4 Airqo Bino low cost sensors next to the BAM 1022 station in Manhica Research Center for a period of 4 months for calibration process. BAM 1022 is a reference grade air quality monitoring station and Airqo Bino air quality monitoring tools are low cost sensors. We downloaded air quality (PM 2.5) data from BAM 1022 and from the Airqo Bino sensors located in Manhica Research Center, the data is from 3rd of February to 22nd of May 2024.

After dowloading the data, We combined the dataset from reference grade and the low cost sensors.

##bam_airqo_collocated_data <- rbind(airqo_data_feb_may, bam_data_feb_may_v3)

##bam_airqo_collocated_data <- bam_airqo_collocated_data %>%
 # select(datetime, device_name, pm2_5_raw_value)

##bam_airqo_collocated_data$day <- lubridate::day(bam_airqo_collocated_data$datetime)

##bam_airqo_collocated_data$month <- lubridate::month(bam_airqo_collocated_data$datetime)

We calculated the daily average of PM 2.5 from each device

#bam_airqo_daily_mean_pm25 <- bam_airqo_collocated_data %>%
 # group_by(device_name, month, day, .add = TRUE) %>%
  #summarise(daily_mean_pm25 = mean(pm2_5_raw_value))

After calculating the daily mean of PM 2.5, plotted a bar chart to compare the values between the 5 devices.

ggplot(bam_airqo_daily_mean_pm25, aes(x=day_month, y=daily_mean_pm25)) +
  geom_bar(stat = "Identity") +
  facet_wrap(.~device_name)+guides(fill = F)+labs(x="Date", y=expression("Daily avergae PM"[2.5])) + labs(title=expression("PM"[2.5]*" Emissions, Manhica"))

ggplot(bam_airqo_daily_mean_pm25, aes(x = day_month, y = daily_mean_pm25, colour = device_name)) + 
  geom_point(size = 0.5) + 
  theme_bw() + 
  geom_smooth(method = "lm") +
  theme(
    axis.title = element_text(size = 10),
    axis.text=element_text(size=10)) +
  xlab (expression(Date)) +
  ylab (expression(PM[2.5])) +
  facet_wrap(~device_name)

We can see in the plot below that there are missing values in the airqo bino data. There are days that the sensors were not collecting data.

ggplot(bam_airqo_daily_mean_pm25, aes(x = day_month, y =daily_mean_pm25, color = device_name)) + 
  geom_line(alpha = 1.5) + 
  theme_bw() +
  theme(axis.title = element_text(size = 10), axis.text=element_text(size=10)) +
  labs(x = "Date", y = expression(PM[2.5])) +
  facet_wrap(~device_name)

The boxplot below shows that the daily average of PM 2.5 from Airqo sensors are much lower from the reference grade, and the mean pm 2.5 are not the same between the 4 low cost sensors although the devices are placed one next to the other.

ggplot(bam_airqo_daily_mean_pm25, aes(x=device_name, y=daily_mean_pm25, fill=device_name)) +
    geom_boxplot() +
  theme_bw() + 
    theme(
      legend.position="none",
      plot.title = element_text(size=11)
    ) +
    xlab("")

LS0tDQp0aXRsZTogIkJBTSAxMDIyIEFpcnFvIGNvbGxvY2F0aW9uIg0KUGVyaW9kOiAybmQgb2YgRmVicnVhciAtIDIybmQgb2YgTWF5IDIwMjQNCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KQXV0aG9yOiBKb3ZpdG8gTnVuZXMNCi0tLQ0KDQpJbiBGZWJydWFyeSAyMDI0LCBXZSBwbGFjZWQgNCBBaXJxbyBCaW5vIGxvdyBjb3N0IHNlbnNvcnMgbmV4dCB0byB0aGUgQkFNIDEwMjIgc3RhdGlvbiBpbiBNYW5oaWNhIFJlc2VhcmNoIENlbnRlciBmb3IgYSBwZXJpb2Qgb2YgNCBtb250aHMgZm9yIGNhbGlicmF0aW9uIHByb2Nlc3MuIEJBTSAxMDIyIGlzIGEgcmVmZXJlbmNlIGdyYWRlIGFpciBxdWFsaXR5IG1vbml0b3Jpbmcgc3RhdGlvbiBhbmQgQWlycW8gQmlubyBhaXIgcXVhbGl0eSBtb25pdG9yaW5nIHRvb2xzIGFyZSBsb3cgY29zdCBzZW5zb3JzLiBXZSBkb3dubG9hZGVkIGFpciBxdWFsaXR5IChQTSAyLjUpIGRhdGEgZnJvbSBCQU0gMTAyMiBhbmQgZnJvbSB0aGUgQWlycW8gQmlubyBzZW5zb3JzIGxvY2F0ZWQgaW4gTWFuaGljYSBSZXNlYXJjaCBDZW50ZXIsIHRoZSBkYXRhIGlzIGZyb20gM3JkIG9mIEZlYnJ1YXJ5IHRvIDIybmQgb2YgTWF5IDIwMjQuDQoNCkFmdGVyIGRvd2xvYWRpbmcgdGhlIGRhdGEsIFdlIGNvbWJpbmVkIHRoZSBkYXRhc2V0IGZyb20gcmVmZXJlbmNlIGdyYWRlIGFuZCB0aGUgbG93IGNvc3Qgc2Vuc29ycy4NCmBgYHtyfQ0KIyNiYW1fYWlycW9fY29sbG9jYXRlZF9kYXRhIDwtIHJiaW5kKGFpcnFvX2RhdGFfZmViX21heSwgYmFtX2RhdGFfZmViX21heV92MykNCg0KIyNiYW1fYWlycW9fY29sbG9jYXRlZF9kYXRhIDwtIGJhbV9haXJxb19jb2xsb2NhdGVkX2RhdGEgJT4lDQogIyBzZWxlY3QoZGF0ZXRpbWUsIGRldmljZV9uYW1lLCBwbTJfNV9yYXdfdmFsdWUpDQoNCiMjYmFtX2FpcnFvX2NvbGxvY2F0ZWRfZGF0YSRkYXkgPC0gbHVicmlkYXRlOjpkYXkoYmFtX2FpcnFvX2NvbGxvY2F0ZWRfZGF0YSRkYXRldGltZSkNCg0KIyNiYW1fYWlycW9fY29sbG9jYXRlZF9kYXRhJG1vbnRoIDwtIGx1YnJpZGF0ZTo6bW9udGgoYmFtX2FpcnFvX2NvbGxvY2F0ZWRfZGF0YSRkYXRldGltZSkNCmBgYA0KDQpXZSBjYWxjdWxhdGVkIHRoZSBkYWlseSBhdmVyYWdlIG9mIFBNIDIuNSBmcm9tIGVhY2ggZGV2aWNlDQpgYGB7cn0NCiNiYW1fYWlycW9fZGFpbHlfbWVhbl9wbTI1IDwtIGJhbV9haXJxb19jb2xsb2NhdGVkX2RhdGEgJT4lDQogIyBncm91cF9ieShkZXZpY2VfbmFtZSwgbW9udGgsIGRheSwgLmFkZCA9IFRSVUUpICU+JQ0KICAjc3VtbWFyaXNlKGRhaWx5X21lYW5fcG0yNSA9IG1lYW4ocG0yXzVfcmF3X3ZhbHVlKSkNCmBgYA0KDQpBZnRlciBjYWxjdWxhdGluZyB0aGUgZGFpbHkgbWVhbiBvZiBQTSAyLjUsIHBsb3R0ZWQgYSBiYXIgY2hhcnQgdG8gY29tcGFyZSB0aGUgdmFsdWVzIGJldHdlZW4gdGhlIDUgZGV2aWNlcy4NCmBgYHtyfQ0KZ2dwbG90KGJhbV9haXJxb19kYWlseV9tZWFuX3BtMjUsIGFlcyh4PWRheV9tb250aCwgeT1kYWlseV9tZWFuX3BtMjUpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiSWRlbnRpdHkiKSArDQogIGZhY2V0X3dyYXAoLn5kZXZpY2VfbmFtZSkrZ3VpZGVzKGZpbGwgPSBGKStsYWJzKHg9IkRhdGUiLCB5PWV4cHJlc3Npb24oIkRhaWx5IGF2ZXJnYWUgUE0iWzIuNV0pKSArIGxhYnModGl0bGU9ZXhwcmVzc2lvbigiUE0iWzIuNV0qIiBFbWlzc2lvbnMsIE1hbmhpY2EiKSkNCmBgYA0KDQoNCmBgYHtyfQ0KZ2dwbG90KGJhbV9haXJxb19kYWlseV9tZWFuX3BtMjUsIGFlcyh4ID0gZGF5X21vbnRoLCB5ID0gZGFpbHlfbWVhbl9wbTI1LCBjb2xvdXIgPSBkZXZpY2VfbmFtZSkpICsgDQogIGdlb21fcG9pbnQoc2l6ZSA9IDAuNSkgKyANCiAgdGhlbWVfYncoKSArIA0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKSArDQogIHRoZW1lKA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTApKSArDQogIHhsYWIgKGV4cHJlc3Npb24oRGF0ZSkpICsNCiAgeWxhYiAoZXhwcmVzc2lvbihQTVsyLjVdKSkgKw0KICBmYWNldF93cmFwKH5kZXZpY2VfbmFtZSkNCmBgYA0KDQpXZSBjYW4gc2VlIGluIHRoZSBwbG90IGJlbG93IHRoYXQgdGhlcmUgYXJlIG1pc3NpbmcgdmFsdWVzIGluIHRoZSBhaXJxbyBiaW5vIGRhdGEuIFRoZXJlIGFyZSBkYXlzIHRoYXQgdGhlIHNlbnNvcnMgd2VyZSBub3QgY29sbGVjdGluZyBkYXRhLg0KYGBge3J9DQpnZ3Bsb3QoYmFtX2FpcnFvX2RhaWx5X21lYW5fcG0yNSwgYWVzKHggPSBkYXlfbW9udGgsIHkgPWRhaWx5X21lYW5fcG0yNSwgY29sb3IgPSBkZXZpY2VfbmFtZSkpICsgDQogIGdlb21fbGluZShhbHBoYSA9IDEuNSkgKyANCiAgdGhlbWVfYncoKSArDQogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEwKSkgKw0KICBsYWJzKHggPSAiRGF0ZSIsIHkgPSBleHByZXNzaW9uKFBNWzIuNV0pKSArDQogIGZhY2V0X3dyYXAofmRldmljZV9uYW1lKQ0KYGBgDQoNCg0KVGhlIGJveHBsb3QgYmVsb3cgc2hvd3MgdGhhdCB0aGUgZGFpbHkgYXZlcmFnZSBvZiBQTSAyLjUgZnJvbSBBaXJxbyBzZW5zb3JzIGFyZSBtdWNoIGxvd2VyIGZyb20gdGhlIHJlZmVyZW5jZSBncmFkZSwgYW5kIHRoZSBtZWFuIHBtIDIuNSBhcmUgbm90IHRoZSBzYW1lIGJldHdlZW4gdGhlIDQgbG93IGNvc3Qgc2Vuc29ycyBhbHRob3VnaCB0aGUgZGV2aWNlcyBhcmUgcGxhY2VkIG9uZSBuZXh0IHRvIHRoZSBvdGhlci4NCg0KYGBge3J9DQpnZ3Bsb3QoYmFtX2FpcnFvX2RhaWx5X21lYW5fcG0yNSwgYWVzKHg9ZGV2aWNlX25hbWUsIHk9ZGFpbHlfbWVhbl9wbTI1LCBmaWxsPWRldmljZV9uYW1lKSkgKw0KICAgIGdlb21fYm94cGxvdCgpICsNCiAgdGhlbWVfYncoKSArIA0KICAgIHRoZW1lKA0KICAgICAgbGVnZW5kLnBvc2l0aW9uPSJub25lIiwNCiAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT0xMSkNCiAgICApICsNCiAgICB4bGFiKCIiKQ0KYGBgDQoNCg0K