## ----setup, include = FALSE, cache = FALSE------------------------------------ knitr::opts_chunk$set( cache = FALSE, collapse = TRUE, comment = "#>", fig.width = 6, fig.height = 4 ) library(kableExtra) library(isocat) library(pvclust) library(rasterVis) library(ggplot2) library(viridisLite) library(gridExtra) library(dplyr) ## ----load_isocat-------------------------------------------------------------- library(isocat) ## ----load_isoscape_data------------------------------------------------------- myiso <- rasterFromXYZ(isoscape) ## ----load_isoscape_data_2----------------------------------------------------- myiso_sd <- rasterFromXYZ(isoscape_sd) ## ----plot_isoscape_data------------------------------------------------------- library(ggplot2, quietly = TRUE) library(rasterVis, quietly = TRUE) library(gridExtra, quietly = TRUE) gglayers <- list( geom_tile(aes(fill = value)), coord_equal(), theme_bw(), scale_x_continuous(name = "Long", expand = c(0,0)), scale_y_continuous(name = "Lat", expand = c(0,0)) ) lab1 <- list( gglayers, scale_fill_gradient(name = expression(paste(delta, "D (\u2030)")), low = 'grey10', high = 'grey90') ) gridExtra::grid.arrange( gplot(myiso) + lab1 + ggtitle("Example Isoscape"), gplot(myiso_sd) + lab1 + ggtitle("Standard Deviation"), ncol = 2 ) ## ----example_dataframe-------------------------------------------------------- n <- 6 # Number of example rasters set.seed(1) df <- data.frame( ID = LETTERS[1:n], isotopeValue = sample(cellStats(myiso, "min"):cellStats(myiso, "max"), n, replace = TRUE), SD_indv = rep(5, n), stringsAsFactors = FALSE ) kableExtra::kable(df) ## ----prob_of_orgin_surface, fig.width=6, fig.height=3------------------------- assignmentModels <- isotopeAssignmentModel( ID = df$ID, isotopeValue = df$isotopeValue, SD_indv = df$SD_indv, precip_raster = myiso, precip_SD_raster = myiso_sd, nClusters = FALSE ) # Plot. ggProb <- list( facet_wrap(~ variable), scale_fill_gradient(name = "Probability\nOf Origin", low = 'darkblue', high = 'yellow') ) gplot(assignmentModels) + gglayers + ggProb ## ----schoenersD--------------------------------------------------------------- # Calculate Schoener's D-metric of spatial similarity between # two of the example probability surfaces. schoenersD(assignmentModels[[1]], assignmentModels[[2]]) ## ----simmatrix---------------------------------------------------------------- mySimilarityMatrix <- simmatrixMaker( assignmentModels, nClusters = FALSE, csvSavePath = FALSE ) mySimilarityMatrix ## ----pvclusthelp, eval = F---------------------------------------------------- # help(pvclust) ## ----clusterSimmatrix, warning = F-------------------------------------------- cS <- clusterSimmatrix( simmatrix = mySimilarityMatrix, dist_mthd = "correlation", hclust_mthd = "average", nBoot = 1000, nClusters = FALSE, r = seq(.7,1.4,by=.1) ) plot(cS) ## ----hclust_instead----------------------------------------------------------- hS <- hclust(dist(data.matrix(mySimilarityMatrix))) plot(hS) ## ----cluster_cutting_code----------------------------------------------------- myheight <- 0.05 plot(as.dendrogram(cS$hclust), horiz = FALSE) abline(h = myheight, col = "red", lwd = 2, lty = 2) df$cluster <- dendextend::cutree(cS$hclust, h = myheight) kableExtra::kable(df) ## ----Create_mean_aggregate_surfaces------------------------------------------- meanSurfaces <- meanAggregateClusterProbability( indivIDs = df$ID, clusters = df$cluster, surfaces = assignmentModels, nClust = FALSE ) gplot(meanSurfaces) + gglayers + ggProb ## ----summary_surface---------------------------------------------------------- summaryMap <- projectSummaryMaxSurface(surfaces = meanSurfaces, nClust = FALSE) gplot(summaryMap) + gglayers + scale_fill_viridis_c(name = "Cluster") ## ----example_surface---------------------------------------------------------- set.seed(42) p <- isotopeAssignmentModel( ID = "Example", isotopeValue = sample(-125:-25, 1), SD_indv = 5, precip_raster = myiso, precip_SD_raster = myiso_sd, nClusters = FALSE )[[1]] # Example Point pt <- data.frame(x = -100, y = 40) ptDeets <- list( geom_point( data = pt, col = "red", shape = 1, size = 2, aes(x = x, y = y) ) ) ex_plot <- gplot(p) + gglayers + ggProb + ptDeets ex_hist <- data.frame(x = p[]) %>% ggplot(.) + geom_density(aes(x = x)) + scale_y_continuous(expand = c(0,0)) + scale_x_continuous(name = "Probability Value") + theme_bw() + geom_vline(aes(xintercept = extract(p, pt)), linetype = "dashed", col = "red") gridExtra::grid.arrange(ex_plot, ex_hist, ncol = 2, widths = c(2,1)) ## ----make_cumulative_sum_surface, eval = T------------------------------------ CumSumEx <- makecumsumSurface(p) ## ----plot_cumulative_sum_surface, eval = T------------------------------------ cumsum_plot <- gplot(CumSumEx) + gglayers + ptDeets + scale_fill_gradient( name = "Cumulative Sum\nProbability\nOf Origin", low = 'darkblue', high = 'yellow') cumsum_hist <- data.frame(x = CumSumEx[]) %>% ggplot(.) + geom_density(aes(x = x)) + scale_y_continuous(expand = c(0,0)) + scale_x_continuous(name = "Cumulative Sum\nProbability Value") + theme_bw() + geom_vline(aes(xintercept = extract(CumSumEx, pt)), linetype = "dashed", col = "red") gridExtra::grid.arrange( cumsum_plot, cumsum_hist, ncol = 2, widths = c(2,1) ) ## ----odds_ratio_surface, eval = T--------------------------------------------- OddsRatioEx <- makeOddsSurfaces(p) ## ----eval_odds_ratio_surface-------------------------------------------------- odds_plot <- gplot(OddsRatioEx) + gglayers + ptDeets + scale_fill_gradient( name = "Odds-Ratio\nProbability\nOf Origin", low = 'darkblue', high = 'yellow') odds_hist <- data.frame(x = OddsRatioEx[]) %>% ggplot(.) + geom_density(aes(x = x)) + scale_y_continuous(expand = c(0,0)) + scale_x_continuous(name = "Odds Ratio Value") + theme_bw() + geom_vline(aes(xintercept = extract(OddsRatioEx, pt)), linetype = "dashed", col = "red") gridExtra::grid.arrange( odds_plot, odds_hist, ncol = 2, widths = c(2,1) ) ## ----quantile_surface, eval = T----------------------------------------------- QuantileEx <- makeQuantileSurfaces(p) ## ----eval_quantile_surface---------------------------------------------------- quantile_plot <- gplot(QuantileEx) + gglayers + ptDeets + scale_fill_gradient( name = "Quantile\nProbability\nOf Origin", low = 'darkblue', high = 'yellow') quantile_hist <- data.frame(x = QuantileEx[]) %>% ggplot(.) + geom_density(aes(x = x)) + scale_y_continuous(expand = c(0,0)) + scale_x_continuous(name = "Quantile Value") + theme_bw() + geom_vline(aes(xintercept = extract(QuantileEx, pt)), linetype = "dashed", col = "red") gridExtra::grid.arrange( quantile_plot, quantile_hist, ncol = 2, widths = c(2,1) ) ## ----quantsim_values, eval = T------------------------------------------------ q <- rweibull(20000, 6, .98) q <- sample( q[ q >=0 & q <= 1 ], 10000, replace = TRUE) hist(q) ## ----quantsim_surface, eval = T----------------------------------------------- QuantSimEx <- makeQuantileSimulationSurface( probabilitySurface = p, ValidationQuantiles = q, rename = FALSE, rescale = TRUE ) ## ----eval_quantsim_surface, eval = T------------------------------------------ quantsim_plot <- gplot(QuantSimEx) + gglayers + ptDeets + scale_fill_gradient( name = "Quantile-Simulation\nProbability\nOf Origin", low = 'darkblue', high = 'yellow') quantsim_hist <- data.frame(x = QuantSimEx[]) %>% ggplot(.) + geom_density(aes(x = x)) + scale_y_continuous(expand = c(0,0)) + scale_x_continuous(name = "Quantile-Simulation Value") + theme_bw() + geom_vline(aes(xintercept = extract(QuantSimEx, pt)), linetype = "dashed", col = "red") gridExtra::grid.arrange( quantsim_plot, quantsim_hist, ncol = 2, widths = c(2,1) )