Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "##",
fig.width = 6,
fig.height = 4,
dpi = 72,
fig.retina = 1,
out.width = "90%"
)
library(tidyverse)
library(viridisLite)
theme_set(theme_minimal() + theme(legend.position = "bottom"))
options(
ggplot2.continuous.colour = "viridis",
ggplot2.continuous.fill = "viridis",
ggplot2.discrete.colour = "viridis_d",
ggplot2.discrete.fill = "viridis_d"
)
library("tidyfun")
data(chf_df, package = "tidyfun")
data(dti_df, package = "tidyfun")
pal_5 <- viridis(7)[-(1:2)]
set.seed(1221)
## ----plot_chf-----------------------------------------------------------------
dti_df[1:10,] |>
tf_ggplot(aes(tf = cca)) + geom_line(alpha = .3)
## -----------------------------------------------------------------------------
dti_df[1:3,] |>
tf_ggplot(aes(tf = rcst)) + geom_line(alpha = .3) + geom_point(alpha= .3)
## -----------------------------------------------------------------------------
chf_df |>
filter(id %in% 1:5) |>
tf_ggplot(
aes(tf = tf_smooth(activity, f = .05), # smoothed inputs for clearer viz
color = gender)) +
geom_line(alpha = 0.3)
## -----------------------------------------------------------------------------
chf_df |>
filter((id %in% 1:10) & (day %in% c("Mon", "Sun"))) |>
tf_ggplot(aes(tf = tf_smooth(activity, f = .05), color = gender)) +
geom_line(alpha = 0.3, lwd = 1) +
facet_grid(~day)
## ----dti-fig1-----------------------------------------------------------------
dti_df |>
tf_ggplot(aes(tf = cca, col = case, alpha = 0.2 + 0.4 * (case == "control"))) +
geom_line() + facet_wrap(~sex) +
scale_alpha(guide = "none", range = c(0.2, 0.4))
## -----------------------------------------------------------------------------
chf_df |>
group_by(gender, day) |>
summarize(mean_act = mean(activity),
.groups = "drop_last") |>
mutate(smooth_mean = tfb(mean_act, verbose = FALSE)) |>
filter(day %in% c("Mon", "Sun")) |>
tf_ggplot(aes(color = gender)) +
geom_line(aes(tf = smooth_mean), linewidth = 1.25) +
geom_line(aes(tf = mean_act), alpha = 0.1) +
geom_point(aes(tf = mean_act), alpha = 0.1, size = .1) +
facet_grid(day~.)
## -----------------------------------------------------------------------------
dti_df |>
group_by(sex, case) |>
summarize(
mean_cca = mean(tfb(cca, verbose = FALSE)), #pointwise mean function
sd_cca = sd(tfb(cca, verbose = FALSE)), # pointwise sd function
.groups = "drop_last"
) |>
group_by(sex, case) |>
mutate(
upper_cca = mean_cca + 2 * sd_cca,
lower_cca = mean_cca - 2 * sd_cca
) |>
tf_ggplot() +
geom_line(aes(tf = mean_cca, color = sex)) +
geom_ribbon(aes(tf_ymin = lower_cca, tf_ymax = upper_cca, fill = sex), alpha = 0.3) +
facet_grid(sex ~ case)
## -----------------------------------------------------------------------------
dti_df |>
tf_ggplot(aes(tf = cca, fill = case)) +
geom_fboxplot(alpha = 0.35) +
facet_grid(~ sex) + labs(title="MBD-based boxplot")
## -----------------------------------------------------------------------------
dti_df |>
tf_ggplot(aes(tf = cca, colour = case)) +
geom_fboxplot(depth = "FM", alpha = 0.3) +
facet_grid(~ sex) + labs(title="FM-based boxplot")
## -----------------------------------------------------------------------------
dti_df |>
tf_ggplot(aes(tf = cca, colour = case)) +
geom_fboxplot(depth = "RPD", alpha = 0.3) +
facet_grid(~ sex) + labs(title="RPD-based boxplot")
## -----------------------------------------------------------------------------
tf_ggplot(dti_df, aes(tf = rcst)) + geom_fboxplot()
## -----------------------------------------------------------------------------
tf_ggplot(dti_df, aes(tf = rcst)) +
geom_fboxplot(alpha = .5)
tf_ggplot(dti_df, aes(tf = rcst)) +
geom_fboxplot(alpha = .5, central = .2)
tf_ggplot(dti_df, aes(tf = rcst)) +
geom_fboxplot(alpha = .5, central = .2, outliers = FALSE)
tf_ggplot(dti_df, aes(tf = rcst)) +
geom_fboxplot(orientation = "y", alpha = .3)
## -----------------------------------------------------------------------------
chf_df |>
filter(day %in% c("Mon", "Sun")) |>
gglasagna(activity)
## ----dti-fig2-----------------------------------------------------------------
dti_df |>
gglasagna(
tf = cca,
order = tf_integrate(cca, definite = TRUE), #order by area under the curve
arg = seq(0, 1, length.out = 101)
) +
theme(axis.text.y = element_text(size = 6)) +
facet_wrap(~ case:sex, ncol = 2, scales = "free")
## -----------------------------------------------------------------------------
canada <- data.frame(
place = fda::CanadianWeather$place,
region = fda::CanadianWeather$region,
lat = fda::CanadianWeather$coordinates[, 1],
lon = -fda::CanadianWeather$coordinates[, 2]
)
canada$temp <- tfd(t(fda::CanadianWeather$dailyAv[, , 1]), arg = 1:365)
canada$precipl10 <- tfd(t(fda::CanadianWeather$dailyAv[, , 3]), arg = 1:365) |>
tf_smooth()
canada_map <-
data.frame(maps::map("world", "Canada", plot = FALSE)[c("x", "y")])
## -----------------------------------------------------------------------------
ggplot(canada, aes(x = lon, y = lat)) +
geom_capellini(aes(tf = precipl10),
width = 4, height = 5, colour = "blue",
line.linetype = 1
) +
geom_capellini(aes(tf = temp),
width = 4, height = 5, colour = "red",
line.linetype = 1
) +
geom_path(data = canada_map, aes(x = x, y = y), alpha = 0.1) +
coord_quickmap()
## ----warning=FALSE------------------------------------------------------------
cca_fpc_tbl <- tibble(
cca = dti_df$cca[1:30],
cca_fpc = tfb_fpc(cca, pve = .8),
fpc_1 = map(coef(cca_fpc), 2) |> unlist(), # 1st PC loading
fpc_2 = map(coef(cca_fpc), 3) |> unlist() # 2nd PC loading
)
# rescale FPCs by sqrt of eigenvalues for visualization
cca_fpcs_1_2 <-
tf_basis(cca_fpc_tbl$cca_fpc, as_tfd = TRUE)[2:3] *
sqrt(attr(cca_fpc_tbl$cca_fpc, "score_variance")[1:2])
# scaled eigenfunctions look like this:
tibble(
eigenfunction = cca_fpcs_1_2,
FPC = factor(1:2)
) |> tf_ggplot() +
geom_line(aes(tf = eigenfunction, col = FPC)) +
geom_hline(yintercept = 0)
## ----warning=FALSE------------------------------------------------------------
ggplot(cca_fpc_tbl[1:40,], aes(x = fpc_1, y = fpc_2)) +
geom_point(size = .5, col = viridis(3)[2]) +
geom_capellini(aes(tf =cca_fpc),width = .01, height = .01, line.linetype = 1) +
labs(x = "FPC1 score", y = "FPC2 score")
## -----------------------------------------------------------------------------
cca <- dti_df$cca |>
tfd(arg = seq(0, 1, length.out = 93), interpolate = TRUE)
layout(t(1:2))
plot(cca, type = "spaghetti")
lines(c(median(cca), mean = mean(cca)), col = viridis(3)[c(1, 3)])
plot(cca, type = "lasagna", col = viridis(50))
## ----ex-fig2------------------------------------------------------------------
cca_five <- cca[1:5]
cca_five |> plot(xlim = c(-0.15, 1), col = pal_5, lwd = 2)
text(
x = -0.1, y = cca_five[, 0.07], labels = names(cca_five), col = pal_5, cex = 1
)
median(cca_five) |> lines(col = pal_5[3], lwd = 4)
## -----------------------------------------------------------------------------
pinch_reg <- tf::pinch |> tfb() |> #smooth before registration for better results
tf_register()
pinch_reg
summary(pinch_reg)
plot(pinch_reg)
## -----------------------------------------------------------------------------
layout(t(1:3))
plot(tf::pinch[1:5], col = pal_5, lwd = 2, points = FALSE)
plot(tf_inv_warps(pinch_reg)[1:5], col = pal_5, lwd = 2, points = FALSE)
abline(c(0, 1), col = "grey", lty = 2)
plot(tf_aligned(pinch_reg)[1:5], col = pal_5, lwd = 2)
lines(tf_template(pinch_reg), col = "black", lwd = 3, lty= 3)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.