# PM2.5 spectrometer tests
library('ggplot2')
library('openair')
## Loading required package: lazyeval
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
##
## The following objects are masked from 'package:stats':
##
## filter, lag
##
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## Loading required package: maps
library('lubridate')
require('corrplot')
## Loading required package: corrplot
# PMS1003 data
pms1003.data <- read.delim("/home/gustavo/data/Dust_tests/minispectrometer/WithArduino/20160223_pms1003.txt")
pms1003.data$date <- as.POSIXct(paste(pms1003.data$Day,pms1003.data$Time),tz='Pacific/Auckland')
pms1003.data$Day<-NULL
pms1003.data$Time<-NULL
# Number concentrations to pt/cc (raw comes as pt/100cc)
pms1003.data$N300 <-pms1003.data$N300 / 100
pms1003.data$N500 <-pms1003.data$N500 / 100
pms1003.data$N1000 <-pms1003.data$N1000 / 100
pms1003.data$N2500 <-pms1003.data$N2500 / 100
pms1003.data$N5000 <-pms1003.data$N5000 / 100
pms1003.data$N10000 <-pms1003.data$N10000 / 100
# GRIMM data
grimm <- read.csv("/home/gustavo/data/Dust_tests/minispectrometer/WithArduino/grimm_20160223.parsed", sep="")
grimm$date <- ISOdatetime(year = grimm$Year+2000,
month = grimm$Month,
day = grimm$Day,
hour = grimm$Hour,
min = grimm$Minute,
sec = grimm$Second, tz = "GMT")
# Convert counts data into pt/cc (raw comes as pt/1000cc)
grimm[,17:47] <- grimm[,17:47] / 1000
merged_data <- merge(pms1003.data,grimm,by = 'date', all = TRUE)
# Correlation calculations to find Shinyei's size information
for_correl <- timeAverage(merged_data,avg.time = '30 min')
## Warning in checkPrep(mydata, vars, type = "default", remove.calm = FALSE, :
## Detected data with Daylight Saving Time, converting to UTC/GMT
find_channels <- cor(for_correl[,c(2:10,29:59)],use = 'pairwise')
corrplot(find_channels,method = 'circle',diag=FALSE)

# Plotting
ggplot(pms1003.data,aes(x=date))+
geom_line(aes(y = PM1),colour = 'red')+
geom_line(aes(y = PM2.5),colour = 'blue')+
geom_line(aes(y = PM10),colour = 'black')

ggplot(pms1003.data,aes(x=date))+
geom_line(aes(y = N300),colour = 'red')+
geom_line(aes(y = N500),colour = 'blue')+
geom_line(aes(y = N1000),colour = 'black')+
geom_line(aes(y = N2500),colour = 'green')

timePlot(merged_data,pollutant = c('N300','n265','n290','n324','N1000'),avg.time = '60 min')
## Warning in checkPrep(mydata, vars, type, remove.calm = FALSE): Detected
## data with Daylight Saving Time, converting to UTC/GMT

scatterPlot(merged_data,x="n265",y="N300",avg.time = '60 min')
## Warning in checkPrep(mydata, vars, type = "default", remove.calm = FALSE, :
## Detected data with Daylight Saving Time, converting to UTC/GMT

# Concentrations seem to be off by a factor of 10 so multiplying N300 by 10 we obtain
merged_data$N300_scale <- merged_data$N300*10
timePlot(merged_data,pollutant = c('N300_scale','n265'),avg.time = '60 min',group = TRUE)
## Warning in checkPrep(mydata, vars, type, remove.calm = FALSE): Detected
## data with Daylight Saving Time, converting to UTC/GMT

# Attempting a linear fit of N300 based on the 60min data
summary(n300_linear <- lm(data = timeAverage(merged_data,avg.time = '60 min'),n265~N300))
## Warning in checkPrep(mydata, vars, type = "default", remove.calm = FALSE, :
## Detected data with Daylight Saving Time, converting to UTC/GMT
##
## Call:
## lm(formula = n265 ~ N300, data = timeAverage(merged_data, avg.time = "60 min"))
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.1279 -0.8516 -0.1143 0.7120 6.1791
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.1498 0.3495 0.429 0.669
## N300 10.0751 0.2499 40.316 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.7 on 92 degrees of freedom
## Multiple R-squared: 0.9464, Adjusted R-squared: 0.9458
## F-statistic: 1625 on 1 and 92 DF, p-value: < 2.2e-16
merged_data$N300_corr <- predict(n300_linear,newdata = merged_data)
timePlot(merged_data,pollutant = c('N300_corr','n265'),avg.time = '60 min',group = TRUE)
## Warning in checkPrep(mydata, vars, type, remove.calm = FALSE): Detected
## data with Daylight Saving Time, converting to UTC/GMT
