title: "Script for beregning av Naturindeks-verdier for indikatorer basert på data fra Landsskogtakseringen"
author: "Arvid Svensson & Ken Olaf Storaunet"
date: "Dec. 2023"
output: pdf_document
editor_options:
chunk_output_type: console
---
# Innledning/Bakgrunn
Ti av 89 indikatorer i Naturindeksen (NI) for skog er basert på Landsskogtakseringens (LSK) data: ‘23 Blåbær’, ‘41 Eldre lauvsuksesjon (MiS)’, ‘60 Gamle trær (MiS)’, ‘108 Liggende død ved (MiS) – arealandel’, ‘183 Stående død ved (MiS) – arealandel’, ‘207 Trær med hengelav (MiS)’, ‘418 Stående død ved – mengde’, ‘419 Liggende død ved – mengde’, ‘433 Rogn-Osp-Selje’, og ‘434 Gammel skog’.
Datauthenting, bearbeiding, beregninger og innlegging i naturindeks-databasen er tidligere gjort manuelt.
Her har vi automatisert disse prosessene for de nevnte indikatorene. Beregninger av selve indikatorverdiene er ofte enkle gjennomsnittsverdier, men det er avgjørende å holde orden på ulike utvalg/strata av prøveflatene.
Det vesentlige av kodene i LSKs database er beskrevet i LSKs takstinstruks (Viken 2021, https://nibio.brage.unit.no/nibio-xmlui/handle/11250/2826859).
# Innstillinger
Inneholder diverse settings og options.
'data_lokal' avgjør om data skal leses lokalt/testdata (default = T), eller '= F' om data skal leses fra LSK-databasen.
'periode' endres ihht. hvilken tidsperiode som skal leses fra LSK-databasen. "1418" betyr 5-årsperioden 2014-2018, og er default for de inkluderte testdata.
I NI angis usikkerhet for indikatorverdiene som estimater/verdier for 1. og 3. kvartil. For LSK-indikatorene beregnes dette ved enkel ikkeparametrisk bootstrap, med boot- og boot.ci-funksjonene i R-pakken ‘boot’. Disse beregningene gjøres separat for hvert prøveflate-utvalg av indikator og 'Area_Name'.
```{r}
###################################
## Define Function for Bootstrap ##
###################################
my.function = function(data,index){
d = data[index,] # Create bootstrap sample of all columns of original data
return(weighted.mean(d$var_of_interest, d$AU_AREAL)) # Calculate weighted mean using 'counts' and 'weights' columns
perc <- boot.ci(boot(x, my.function, R = 1000), type = "perc", conf = 0.5)$perc
CI.LL <- perc[4]
CI.UL <- perc[5]
SESONG<-round(mean(as.numeric(x$SESONG)))
n=nrow(x)
data.frame(wtd.avg, CI.LL, CI.UL,SESONG,n )
})
return(rownames_to_column(do.call(rbind, y)))
}
```
# Lese data lokalt eller fra LSK-databasen
Dersom en skal hente data fra LSK-databasen trenger en R-pakken 'ROracle', samt brukertilgang. Dette gjøres ved NIBIO.
Det defineres ulike strata basert på region/fylke (DISTRIKT), hvilket prøveflatenett (LS_NETT), produktiv og uproduktiv skog (AREALTYPE), og arealanvendelse (AREAL_ANV, der 1 = skog/utmark, 5 = naturreservat/nasjonalpark, 9 = friluftsområde).
NB: Merk at dersom data for tidligere år (<2010?) skal hentes fra LSK-databasen, er koding for enkelte av disse kategoriene endret.
Definisjonen/alderskravet for 'Biologisk gammel skog' (BGS) avhenger av dominerende treslag og bonitet.
AREA_ID i NI er unik for hver enkelt indikator, men alle LSK-baserte indikatorer benytter den samme areal-inndelingen (hele eller delte fylker). Koblingen mellom FLATEID i LSK og AREA_ID i NI går gjennom to trinn og hentes fra vedlagte .csv-filer (1: LSKs 'FLATEID' og NIs 'Area_Name', 2: NIs 'Area_Name' og 'Area_ID' for den enkelte indikator).
Det gjennomføres to kontroller spesifikt for MiS-dataene som potensielt stanser lesingen av data:
1) at alle prøveflater i skog har MiS-data
2) at det bare finnes 1 rad med data pr prøveflate og MiS-livsmiljø
Hvis dette stanser koden, må det feilsøkes i LSK-databasen.
```{r}
# Use local-/test-data or update from LSK-db
if(data_lokal==T){
load("data_til_naturindeks.RData")
}else{
# source("oppdater_data.R")
}
```
# Beregning av dødved-mengde-indikatorene (ind_ID 418 og 419)