--- title: "Aandeel uitheemse planten" date: 2024-03-15T09:30:00 thema: - Beschermde natuur - Invasieve soorten output: html_document: default word_document: default lang: nl add_generic: - classificatie tab: indicator verantwoordelijke: Wouter Van Landuyt keywords: - soorten - trend --- ```{r setup, include=FALSE} library(knitr) opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE) library(sn) library(INLA) library(git2rdata) library(plotly) library(tidyverse) library(scales) library(effectclass) source(file.path("..", "..", "inbo_theme.R")) library(htmlwidgets) set.seed(20190920) setWidgetIdSeed(20190920) options(htmlwidgets.TOJSON_ARGS = list(pretty = TRUE)) kleurgradient <- div_gradient_pal( low = inbo_rood, mid = inbo_lichtgrijs, high = inbo_steun_blauw ) conflicted::conflicts_prefer(dplyr::filter) ``` ```{r basis-gegevens} root <- repository() read_vc(file.path("source", "uitheemse_planten", "uitheemse_soorten"), root = root) %>% mutate( cJaar = Jaartal - max(Jaartal) ) -> planten ``` Het aandeel uitheemse plantensoorten binnen de globale plantensamenstelling is sinds de jaren 70 verdubbeld van ongeveer 5% tot circa 10% en dit aandeel nam in de periode 1972-2023 significant toe. ```{r model} model_lin <- inla( Aandeel ~ cJaar, family = "beta", data = planten, control.compute = list(waic = TRUE, config = TRUE) ) model_rw2 <- inla( Aandeel ~ f( cJaar, model = "rw2", scale.model = TRUE, hyper = list(theta = list(prior = "pc.prec", param = c(0.1, 0.1))) ), family = "beta", data = planten, control.compute = list( waic = TRUE, config = TRUE, return.marginals.predictor = TRUE ) ) stopifnot(model_rw2$waic$waic - model_lin$waic$waic < 2) ``` ```{r trend} inla.posterior.sample(n = 1e3, model_lin) %>% map("latent") %>% do.call(what = cbind) %>% `[`(nrow(planten) + c(-24, 0), ) %>% plogis() %>% apply(2, diff) -> change data.frame( estimate = mean(change), lcl90 = quantile(change, 0.05), ucl90 = quantile(change, 0.95) ) %>% mutate( ci = format_ci( estimate, lcl = lcl90, ucl = ucl90, percent = TRUE, sign = TRUE ), effect = classification(lcl90, ucl90, 0.01) %>% factor( levels = levels(.), labels = c( "sterke toename", "toename", "matige toename", "stabiele toestand", "matige afname", "afname", "sterke afname", "mogelijke toename", "mogelijke afname", "onbekende wijziging" ) ) ) -> delta ``` ```{r trend-voorspelling} model_rw2$marginals.linear.predictor %>% lapply(inla.tmarginal, fun = plogis) -> marginal planten %>% mutate( schatting = model_rw2$summary.fitted.values$mean, lcl90 = sapply(marginal, inla.qmarginal, p = 0.05), lcl60 = sapply(marginal, inla.qmarginal, p = 0.20), lcl30 = sapply(marginal, inla.qmarginal, p = 0.35), ucl30 = sapply(marginal, inla.qmarginal, p = 0.65), ucl60 = sapply(marginal, inla.qmarginal, p = 0.80), ucl90 = sapply(marginal, inla.qmarginal, p = 0.95) ) -> planten ``` ```{r trendgrafiek, fig.cap = "Aandeel uitheemse plantensoorten volgens een niet-lineair model. Punten: waargenomen aandeel. Lijn: niet-lineair model. Semi-transparante banden: onzekerheid rond de trend."} breaks <- pretty(c(0, planten$q95, planten$Aandeel)) p <- ggplot(planten, aes(x = Jaartal, y = Aandeel)) + geom_ribbon(aes(ymin = lcl90, ymax = ucl90), alpha = 0.3) + geom_ribbon(aes(ymin = lcl60, ymax = ucl60), alpha = 0.3) + geom_ribbon(aes(ymin = lcl30, ymax = ucl30), alpha = 0.3) + geom_line(aes(y = schatting)) + geom_point() + scale_y_continuous( "Aandeel", limits = c(0, NA), breaks = breaks, labels = percent(breaks, accuracy = 1) ) + ggtitle("Aandeel uitheemse plantensoorten") + theme( axis.title = element_blank(), axis.ticks = element_blank(), title = element_text(hjust = 0) ) if (interactive() || opts_knit$get("rmarkdown.pandoc.to") == "html") { ggplotly(p, dynamicTicks = TRUE) %>% plotly::config( modeBarButtonsToRemove = list( "lasso2d", "select2d", "hoverClosestCartesian", "hoverCompareCartesian", "toggleSpikelines" ), displaylogo = FALSE ) } else { p } ``` Volgens een lineair model zien we over de laatste 25 jaar een `r delta$effect` met `r delta$ci`. ## Definitie Deze indicator toont de evolutie van het aandeel aan uitheemse plantensoorten per km² ten opzichte van het totaal aantal soorten. ## Bespreking Binnen de jaarlijks goed onderzochte[^1] hokken van 1 km² in Vlaanderen wordt het gemiddelde aantal inheemse soorten en het gemiddeld aantal uitheemse soorten berekend. Het percentage uitheemse soorten in de hokken geeft een idee van de algemene uitbreiding van uitheemse plantensoorten en bijgevolg ook een idee op de potentiële impact van deze soorten op de inheemse flora en fauna. Door de toenemende mobiliteit van mensen en goederen worden – al dan niet bewust – steeds meer soorten planten en dieren in- en uitgevoerd. Sommige uitheemse soorten worden na verloop van tijd invasief en kunnen daarmee de inheemse biodiversiteit verstoren. Hoewel de introductie van uitheemse soorten in sommige gevallen kansen met zich meebrengt en de lokale soortendiversiteit verhoogt, kunnen andere soorten invasief worden en het ecologisch functioneren van een ecosysteem aantasten. Het aandeel uitheemse plantensoorten binnen de globale plantensamenstelling is sinds de jaren 70 verdubbeld van ongeveer 5% tot circa 10% en nam in de periode 1972-2023 significant toe. De toename van internationaal transport zorgt voor een permanente aanvoer van nieuwe plantensoorten. Een deel daarvan slaagt erin zich te vestigen en breidt zich spontaan uit. Ontsnappingen van planten uit de horticultuur (bv. via het storten van tuinafval) vormt een van de belangrijkste introductiewegen voor invasieve uitheemse planten. [^1]: hokken met meer dan 90 soorten beschouwen we als goed onderzocht ```{r paarsgewijs-bereken} inla.posterior.sample(n = 1e3, model_rw2) %>% map("latent") %>% do.call(what = cbind) %>% plogis() -> tukey tukey <- tukey[grepl("Predictor", rownames(tukey)), ] expand.grid( naar = seq_len(nrow(tukey)), referentie = seq_len(nrow(tukey)) ) %>% filter(naar != referentie) -> combinaties apply( combinaties, 1, function(x) { tukey[x[1], ] - tukey[x[2], ] } ) %>% apply( 2, function(x) { c( verschil = mean(x), lcl90 = quantile(x, 0.05, names = FALSE), ucl90 = quantile(x, 0.95, names = FALSE) ) } ) %>% t() %>% as.data.frame() %>% mutate_all(round, digits = 3) %>% bind_cols(combinaties) %>% mutate( naar = naar + min(planten$Jaartal) - 1, referentie = referentie + min(planten$Jaartal) - 1, klasse = classification(lcl90, ucl90, 0.01), wijziging = sprintf( "%s: %s t.o.v. %s (%s)", naar, format_ci( verschil, lcl = lcl90, ucl = ucl90, percent = TRUE, sign = TRUE ), referentie, klasse ), klasse = format(klasse, type = "ascii"), kleur = rescale_mid(verschil, c(0, 1), range(verschil)) %>% kleurgradient() ) -> verschillen ``` ```{r bewaar-data} planten %>% select(-cJaar) %>% mutate_all(round, digits = 4) %>% write_vc( file = file.path("source", "uitheemse_planten", "uitheemse_soorten"), sorting = "Jaartal", root = root, optimize = FALSE ) -> trend_data verschillen %>% select(referentie, doel = naar, verschil, lcl90, ucl90, klasse) %>% write_vc( file = file.path("source", "uitheemse_planten", "verschillen"), sorting = c("referentie", "doel"), root = root, optimize = FALSE ) -> index_data ```