Introduction

The purpose of this analysis is to explore the variability on the performance of the ODIN during its deployment in Christchurch.

ODIN data

The unit ODIN_01 was deployed at Coles place between the 15\(^{th}\) of May and the 3\(^{rd}\) of June 2014 with a pause between the 22\(^{nd}\) and the 24\(^{th}\) of May.

odin_01 <- read.table("~/data/ODIN_data/christchurch/odin_01.data",
                      header=T, quote="")
#force GMT as the time zone to avoid openair issues with daylight saving switches
#The actual time zone is 'NZST'
odin_01$date=as.POSIXct(paste(odin_01$Date,odin_01$Time),tz='GMT')
odin_01$Time<-NULL
odin_01$Date<-NULL
odin_01$Battery<-5*odin_01$Battery/1024

ECan data

The data from the Coles Place site was obtained from Environment Canterbury through Teresa Aberkane.

ecan_data <- read.delim("~/data/ODIN_data/christchurch/ecan_data.data",
                        quote="")
ecan_data$date<-as.POSIXct(ecan_data$date,tz='GMT')

Merging the data

ECan’s data was provided as 10 minute values while ODIN reports every 1 minute so before merging the data, the timebase must be homogenized

odin_01.10min<-timeAverage(odin_01,avg.time='10 min')
all_merged.10min<-merge(odin_01.10min,ecan_data,by='date',all=TRUE)
names(all_merged.10min)<-c('date','Dust.01','Humidity.01','Temperature.01',
                     'Battery.01', 'CO','PM10_fdms','PM2.5_fdms',
                     'Temperature_1m','Temperature_10m',
                     'BC','uvBC')
all_merged.1hr<-timeAverage(all_merged.10min,avg.time='1 hour')

Time sync

lag_test=ccf(all_merged.10min$Temperature.01,
             all_merged.10min$Temperature_1m,
             na.action=na.pass,
             lag.max=100,
             type='correlation',
             ylab='Correlation',
             main='Temperature correlation as function of clock lag')

plot of chunk time_sync

odin01_lag=lag_test$lag[which.max(lag_test$acf)]

ECan’s record is behind by -70 minutes with respect to ODIN data.
The correction was applied to the ODIN data as follows:

odin_01$date=odin_01$date-odin01_lag*10*60
odin_01.10min<-timeAverage(odin_01,avg.time='10 min')
all_merged.10min<-merge(odin_01.10min,ecan_data,by='date',all=TRUE)
names(all_merged.10min)<-c('date','Dust.01','Humidity.01','Temperature.01',
                     'Battery.01', 'CO','PM10_fdms','PM2.5_fdms',
                     'Temperature_1m','Temperature_10m',
                     'BC','uvBC')
all_merged.1hr<-timeAverage(all_merged.10min,avg.time='1 hour')
lag_test=ccf(all_merged.10min$Temperature.01,
             all_merged.10min$Temperature_1m,
             na.action=na.pass,
             lag.max=100,
             type='correlation',
             ylab='Correlation',
             main='Temperature correlation as function of clock lag')

plot of chunk correct_timing

Dust performance using ECan data for calibration

With ECan’s PM10 data available, a more accurate calibration can be applied to the raw Dust signal from ODIN.

According to previous analyses, it is expected that the response of the ODIN depends on the ambient temperature and relative humidity. In this analysis, a linear relationship is proposed: \(Dust_{calibrated}=A*Dust_{raw}+B*Temperature_{ODIN}+C*RH_{ODIN}+D\)

The following analysis focuses on evaluating the variability of the parameters \(A\), \(B\), \(C\) and \(D\) with time of day with the objective of determining the stability of these coefficients and their potential change in future deployments.

Full dataset 10 minutes

PM\(_{10}\) fdms

summary(odin1.lm.full.10min.pm10<-
          lm(data=all_merged.10min,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = all_merged.10min)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -103.69   -9.66   -1.60    8.42   69.65 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -255.8234     6.1398   -41.7   <2e-16 ***
## Dust.01           0.8412     0.0126    66.5   <2e-16 ***
## Temperature.01   -5.1293     0.0682   -75.2   <2e-16 ***
## Humidity.01      -0.9565     0.0337   -28.4   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 15.8 on 2487 degrees of freedom
##   (389 observations deleted due to missingness)
## Multiple R-squared:  0.753,  Adjusted R-squared:  0.753 
## F-statistic: 2.53e+03 on 3 and 2487 DF,  p-value: <2e-16

PM\(_{2.5}\) fdms

summary(odin1.lm.full.10min.pm2.5<-
          lm(data=all_merged.10min,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = all_merged.10min)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -93.85  -8.34  -1.38   7.78  65.84 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -235.5698     5.4716   -43.0   <2e-16 ***
## Dust.01           0.7940     0.0113    70.5   <2e-16 ***
## Temperature.01   -5.2233     0.0608   -85.9   <2e-16 ***
## Humidity.01      -1.0309     0.0300   -34.4   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14.1 on 2487 degrees of freedom
##   (389 observations deleted due to missingness)
## Multiple R-squared:  0.791,  Adjusted R-squared:  0.791 
## F-statistic: 3.14e+03 on 3 and 2487 DF,  p-value: <2e-16

Full dataset 1 hour

PM\(_{10}\) fdms

summary(odin1.lm.full.1hr.pm10<-
          lm(data=all_merged.1hr,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = all_merged.1hr)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -39.79  -8.75  -1.03   7.65  61.07 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -297.2793    14.0178   -21.2   <2e-16 ***
## Dust.01           0.9370     0.0290    32.3   <2e-16 ***
## Temperature.01   -5.3735     0.1496   -35.9   <2e-16 ***
## Humidity.01      -0.9770     0.0736   -13.3   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.9 on 413 degrees of freedom
##   (64 observations deleted due to missingness)
## Multiple R-squared:  0.807,  Adjusted R-squared:  0.806 
## F-statistic:  576 on 3 and 413 DF,  p-value: <2e-16

PM\(_{2.5}\) fdms

summary(odin1.lm.full.1hr.pm2.5<-
          lm(data=all_merged.1hr,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = all_merged.1hr)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -33.62  -7.78  -0.62   6.86  38.15 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -274.3705    12.2731   -22.4   <2e-16 ***
## Dust.01           0.8839     0.0254    34.8   <2e-16 ***
## Temperature.01   -5.4549     0.1310   -41.6   <2e-16 ***
## Humidity.01      -1.0515     0.0644   -16.3   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12.2 on 413 degrees of freedom
##   (64 observations deleted due to missingness)
## Multiple R-squared:  0.843,  Adjusted R-squared:  0.841 
## F-statistic:  737 on 3 and 413 DF,  p-value: <2e-16

Daytime dataset 10 minutes

daytime_merged.10min<-selectByDate(all_merged.10min,hour=9:18)

PM\(_{10}\) fdms

summary(odin1.lm.daytime.10min.pm10<-
          lm(data=daytime_merged.10min,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = daytime_merged.10min)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -26.92  -8.86  -2.08   8.42  56.42 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -113.2768    10.1974  -11.11  < 2e-16 ***
## Dust.01           0.3956     0.0276   14.33  < 2e-16 ***
## Temperature.01   -2.5804     0.1738  -14.85  < 2e-16 ***
## Humidity.01      -0.2725     0.0574   -4.75  2.3e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.2 on 1049 degrees of freedom
##   (147 observations deleted due to missingness)
## Multiple R-squared:  0.305,  Adjusted R-squared:  0.303 
## F-statistic:  153 on 3 and 1049 DF,  p-value: <2e-16

PM\(_{2.5}\) fdms

summary(odin1.lm.daytime.10min.pm2.5<-
          lm(data=daytime_merged.10min,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = daytime_merged.10min)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -21.35  -7.05  -2.77   4.86  44.85 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -73.2088     8.1294   -9.01  < 2e-16 ***
## Dust.01          0.2699     0.0220   12.26  < 2e-16 ***
## Temperature.01  -1.9764     0.1385  -14.27  < 2e-16 ***
## Humidity.01     -0.2299     0.0457   -5.03  5.9e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.6 on 1049 degrees of freedom
##   (147 observations deleted due to missingness)
## Multiple R-squared:  0.286,  Adjusted R-squared:  0.284 
## F-statistic:  140 on 3 and 1049 DF,  p-value: <2e-16

Daytime dataset 1 hour

daytime_merged.1hr<-selectByDate(all_merged.1hr,hour=9:18)

PM\(_{10}\) fdms

summary(odin1.lm.daytime.1hr.pm10<-
          lm(data=daytime_merged.1hr,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = daytime_merged.1hr)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -25.13  -8.52  -2.48   8.60  44.86 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -123.8911    25.4672   -4.86  2.6e-06 ***
## Dust.01           0.4307     0.0699    6.16  5.0e-09 ***
## Temperature.01   -2.7975     0.4380   -6.39  1.5e-09 ***
## Humidity.01      -0.3349     0.1428   -2.34     0.02 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12.7 on 173 degrees of freedom
##   (23 observations deleted due to missingness)
## Multiple R-squared:  0.321,  Adjusted R-squared:  0.309 
## F-statistic: 27.2 on 3 and 173 DF,  p-value: 1.81e-14

PM\(_{2.5}\)_fdms

summary(odin1.lm.daytime.1hr.pm2.5<-
          lm(data=daytime_merged.1hr,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = daytime_merged.1hr)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -19.56  -6.97  -2.36   4.81  34.82 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -79.6844    20.3540   -3.91  0.00013 ***
## Dust.01          0.2916     0.0559    5.22  5.2e-07 ***
## Temperature.01  -2.1080     0.3501   -6.02  1.0e-08 ***
## Humidity.01     -0.2699     0.1141   -2.36  0.01914 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.2 on 173 degrees of freedom
##   (23 observations deleted due to missingness)
## Multiple R-squared:  0.296,  Adjusted R-squared:  0.284 
## F-statistic: 24.2 on 3 and 173 DF,  p-value: 3.84e-13

Nighttime dataset 10 minutes

nighttime_merged.10min<-selectByDate(all_merged.10min,hour=c(0:8,19:23))

PM\(_{10}\) fdms

summary(odin1.lm.nighttime.10min.pm10<-
          lm(data=nighttime_merged.10min,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = nighttime_merged.10min)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -118.69   -9.43   -1.46    8.26   68.74 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -283.7922     8.3063   -34.2   <2e-16 ***
## Dust.01           0.9139     0.0153    59.6   <2e-16 ***
## Temperature.01   -5.3135     0.0876   -60.7   <2e-16 ***
## Humidity.01      -1.0312     0.0540   -19.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16.3 on 1434 degrees of freedom
##   (242 observations deleted due to missingness)
## Multiple R-squared:  0.81,   Adjusted R-squared:  0.81 
## F-statistic: 2.04e+03 on 3 and 1434 DF,  p-value: <2e-16

PM\(_{2.5}\) fdms

summary(odin1.lm.nighttime.10min.pm2.5<-
          lm(data=nighttime_merged.10min,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = nighttime_merged.10min)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -109.78   -7.84   -0.57    7.41   61.40 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -263.0699     7.3477   -35.8   <2e-16 ***
## Dust.01           0.8676     0.0136    64.0   <2e-16 ***
## Temperature.01   -5.4489     0.0775   -70.3   <2e-16 ***
## Humidity.01      -1.1044     0.0478   -23.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14.4 on 1434 degrees of freedom
##   (242 observations deleted due to missingness)
## Multiple R-squared:  0.843,  Adjusted R-squared:  0.842 
## F-statistic: 2.56e+03 on 3 and 1434 DF,  p-value: <2e-16

Nighttime dataset 1 hour

nighttime_merged.1hr<-selectByDate(all_merged.1hr,hour=c(0:8,19:23))

PM\(_{10}\) fdms

summary(odin1.lm.nighttime.1hr.pm10<-
          lm(data=nighttime_merged.1hr,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = nighttime_merged.1hr)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -41.12  -8.59  -0.35   6.25  59.23 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -345.8726    17.6002  -19.65   <2e-16 ***
## Dust.01           1.0424     0.0328   31.81   <2e-16 ***
## Temperature.01   -5.4642     0.1748  -31.25   <2e-16 ***
## Humidity.01      -0.9744     0.1084   -8.99   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.2 on 236 degrees of freedom
##   (41 observations deleted due to missingness)
## Multiple R-squared:  0.876,  Adjusted R-squared:  0.874 
## F-statistic:  554 on 3 and 236 DF,  p-value: <2e-16

PM\(_{2.5}\) fdms

summary(odin1.lm.nighttime.1hr.pm2.5<-
          lm(data=nighttime_merged.1hr,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = nighttime_merged.1hr)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -35.99  -7.75  -0.43   6.29  36.28 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -321.5585    14.8559   -21.6   <2e-16 ***
## Dust.01           0.9886     0.0277    35.7   <2e-16 ***
## Temperature.01   -5.5943     0.1476   -37.9   <2e-16 ***
## Humidity.01      -1.0499     0.0915   -11.5   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.2 on 236 degrees of freedom
##   (41 observations deleted due to missingness)
## Multiple R-squared:  0.906,  Adjusted R-squared:  0.905 
## F-statistic:  757 on 3 and 236 DF,  p-value: <2e-16

First 25% of the data 10 minutes

nrecs<-floor(0.25*length(all_merged.10min[,1]))
first_merged.10min<-all_merged.10min[1:nrecs,]

PM\(_{10}\) fdms

summary(odin1.lm.first.10min.pm10<-
          lm(data=first_merged.10min,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = first_merged.10min)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -41.71  -6.42  -1.35   6.43  50.65 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -96.1312    14.0385   -6.85  1.8e-11 ***
## Dust.01          0.4948     0.0228   21.74  < 2e-16 ***
## Temperature.01  -4.6694     0.1247  -37.43  < 2e-16 ***
## Humidity.01     -0.9245     0.0716  -12.92  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12.8 on 628 degrees of freedom
##   (88 observations deleted due to missingness)
## Multiple R-squared:  0.759,  Adjusted R-squared:  0.758 
## F-statistic:  659 on 3 and 628 DF,  p-value: <2e-16

PM\(_{2.5}\) fdms

summary(odin1.lm.first.10min.pm2.5<-
          lm(data=first_merged.10min,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = first_merged.10min)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -34.17  -6.97  -0.90   5.67  49.98 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -66.8368    12.4315   -5.38  1.1e-07 ***
## Dust.01          0.4506     0.0202   22.35  < 2e-16 ***
## Temperature.01  -4.9831     0.1105  -45.11  < 2e-16 ***
## Humidity.01     -1.1290     0.0634  -17.82  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.3 on 628 degrees of freedom
##   (88 observations deleted due to missingness)
## Multiple R-squared:  0.809,  Adjusted R-squared:  0.808 
## F-statistic:  887 on 3 and 628 DF,  p-value: <2e-16

Last 25% of the data 10 min

nrecs<-floor(0.75*length(all_merged.10min[,1]))
last_merged.10min<-all_merged.10min[nrecs:(nrecs/0.8),]

PM\(_{10}\) fdms

summary(odin1.lm.last.10min.pm10<-
          lm(data=last_merged.10min,PM10_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM10_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = last_merged.10min)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -56.77  -8.40  -1.35   8.46  56.18 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -327.7114    14.1068   -23.2   <2e-16 ***
## Dust.01           1.0100     0.0231    43.6   <2e-16 ***
## Temperature.01   -5.0575     0.1399   -36.2   <2e-16 ***
## Humidity.01      -1.0037     0.0923   -10.9   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14.3 on 537 degrees of freedom
## Multiple R-squared:  0.893,  Adjusted R-squared:  0.892 
## F-statistic: 1.49e+03 on 3 and 537 DF,  p-value: <2e-16

PM\(_{2.5}\) fdms

summary(odin1.lm.last.10min.pm2.5<-
          lm(data=last_merged.10min,PM2.5_fdms~
               Dust.01+Temperature.01+Humidity.01))
## 
## Call:
## lm(formula = PM2.5_fdms ~ Dust.01 + Temperature.01 + Humidity.01, 
##     data = last_merged.10min)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -56.15  -7.92  -0.81   7.91  53.89 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -347.3351    13.2435  -26.23   <2e-16 ***
## Dust.01           1.0144     0.0217   46.69   <2e-16 ***
## Temperature.01   -4.7898     0.1313  -36.48   <2e-16 ***
## Humidity.01      -0.7950     0.0867   -9.17   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.4 on 537 degrees of freedom
## Multiple R-squared:  0.903,  Adjusted R-squared:  0.902 
## F-statistic: 1.66e+03 on 3 and 537 DF,  p-value: <2e-16

Plot the change in calibration for PM\(_{2.5}\)

all_merged.10min$Dust.01.first<-predict(odin1.lm.first.10min.pm2.5,
                                      newdata = all_merged.10min)
all_merged.10min$Dust.01.last<-predict(odin1.lm.last.10min.pm2.5,
                                      newdata = all_merged.10min)
timePlot(all_merged.10min,
         pollutant = c('PM2.5_fdms','Dust.01.first','Dust.01.last'),
         avg.time='1 hour',group=TRUE,xlab='Date',ylab='Dust',
         main='Early and last calibration comparison')

plot of chunk plot_lm_change