add outlier filtering in vignette

pull/17/head
noerw 7 years ago
parent ef2baa6559
commit 2092976f86

@ -107,6 +107,7 @@ Luckily we can get the measurements filtered by a bounding box:
library(sf) library(sf)
library(units) library(units)
library(lubridate) library(lubridate)
library(dplyr)
# construct a bounding box: 12 kilometers around Berlin # construct a bounding box: 12 kilometers around Berlin
berlin = st_point(c(13.4034, 52.5120)) %>% berlin = st_point(c(13.4034, 52.5120)) %>%
@ -120,19 +121,34 @@ berlin = st_point(c(13.4034, 52.5120)) %>%
pm25 = osem_measurements( pm25 = osem_measurements(
berlin, berlin,
phenomenon = 'PM2.5', phenomenon = 'PM2.5',
from = now() - days(7), # defaults to 2 days from = now() - days(20), # defaults to 2 days
to = now() to = now()
) )
plot(pm25) plot(pm25)
``` ```
Now we can get started with actual spatiotemporal data analysis. First plot the Now we can get started with actual spatiotemporal data analysis.
measuring locations: First, lets mask the seemingly uncalibrated sensors:
```{r}
outliers = filter(pm25, value > 100)$sensorId
bad_sensors = outliers[, drop = T] %>% levels()
pm25 = mutate(pm25, invalid = sensorId %in% bad_sensors)
```
Then plot the measuring locations, flagging the outliers:
```{r} ```{r}
pm25_sf = osem_as_sf(pm25) pm25_sf = osem_as_sf(pm25)
plot(st_geometry(pm25_sf), axes = T) st_geometry(pm25_sf) %>% plot(col = factor(pm25$invalid), axes = T)
```
Removing these sensors yields a nicer time series plot:
```{r}
pm25 %>% filter(invalid == FALSE) %>% plot()
``` ```
further analysis: `TODO` Further analysis: comparison with LANUV data `TODO`

Loading…
Cancel
Save