## ----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) )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.