Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Function_Wavelet_analysis.R 2.42 KiB
# This script performs Wavelet analysis for  to check for periodicity in the data #
wavelet_analysis<-function(State, Pars)
{
# Cleaning of cases:
with(as.list(c(State, Pars)), {
  
   
     filename_power<-Pars[1]
     filename_power_average<-Pars[2]
     
       
Env_Pathogen_data0 <- ddply (State, ~Date, summarise, Cases=sum(Cases_computed)) # subset for all postcodes combined per day
# Wavelet spectrum plot
Env_Pathogen_data0$date<-Env_Pathogen_data0$Date
salmonella_data_national <-Env_Pathogen_data0[order(as.Date(Env_Pathogen_data0$Date)),]  # Sort from least recent to most recent
dt0<-1

my.wt = analyze.wavelet(salmonella_data_national, "Cases",
                       loess.span=0.75,
                       dt=dt0, dj=1/20,
                       lowerPeriod=2.*dt0,
                       upperPeriod=floor(nrow(salmonella_data_national)/3)*dt0,
                       make.pval=T, n.sim=100)


wt.image(my.wt, color.key = "quantile", n.levels = 250,legend.params = list(lab = "wavelet power levels", mar = 4.7),show.date = T,
        color.palette = "rainbow(n.levels, start=0, end=.6)",plot.contour = F, siglvl = 0.05, col.contour = "black", plot.ridge = T, lvl = 0, col.ridge = "black",date.format ="%Y-%m-%d",periodlab = "periods (days)",useRaster=T)

# Save plot
tiff(filename =  filename_power,width = 17.35, height =  17.35, units = "cm", pointsize = 9, res = 600,compression = "lzw",antialias="default")

wt.image(my.wt, color.key = "quantile", n.levels = 250,legend.params = list(lab = "wavelet power levels", mar = 4.7),show.date = T,color.palette = "rainbow(n.levels, start=0, end=.6)",plot.contour = F, siglvl = 0.05, col.contour = "black", plot.ridge = T, lvl = 0, col.ridge = "black",periodlab = "periods (minutes)",useRaster=F)

dev.off()


# Power curve for ease of interpretation of Wavelet Gianni changed name as said detrend

reconstruct(my.wt, plot.waves = F, lwd = c(1,2), legend.coords = "bottomleft")

wt.avg(my.wt, siglvl=0.05, sigcol="red")
#wt.phase.image(my.wt, "Cases")

# Save plot 
tiff(filename =  filename_power_average,width = 17.35, height =  17.35, units = "cm", pointsize = 9, res = 600,compression = "lzw",antialias="default")

wt.avg(my.wt,
      show.siglvl = T, sigpch = 20,
      label.avg.axis = T, averagelab = NULL,
      label.period.axis = T, periodlab = NULL,
      show.legend = T, legend.coords = "topright",
      main = NULL, lwd = 0.5,
      verbose = F)

dev.off()

return(salmonella_data_national[,c(1,2)])
})
}