Title: | Automated Modelling of Diameter Height Curves for Trees |
---|---|
Description: | Model diameter height curves for individual tree species and forests. |
Authors: | Els Lommelen [aut, cre] , Thierry Onkelinx [aut] , Anja Leyman [ctb] , Agentschap voor Natuur en Bos [cph] |
Maintainer: | Els Lommelen <[email protected]> |
License: | GPL-3 |
Version: | 0.2 |
Built: | 2024-10-21 03:16:53 UTC |
Source: | https://github.com/inbo/dhcurve |
Functie die op basis van de curvekarakteristieken van de modellen (extremen en buigpunten) de mogelijk slechtste modellen oplijst met de reden. Deze functie kan ook gebruikt worden voor lokale modellen, in dat geval moet ook de dataset als parameter meegegeven worden.
Deze functie roept voor de berekening van de extremen en buigpunten de
functie curvekarakteristieken()
op.
afwijkendeCurves(Basismodel, Data = NULL)
afwijkendeCurves(Basismodel, Data = NULL)
Basismodel |
Model per boomsoort zoals teruggegeven door de functie
|
Data |
Dataset op basis waarvan het lokaal model berekend is (enkel nodig voor lokaal model) |
Dataframe dat de mogelijk afwijkende curves oplijst, met volgende velden:
BMS
: Boomsoort
DOMEIN_ID
Reden
: reden waarom de curve afwijkend is
Omtrek_Buigpunt.d
: midden van omtrekklasse waarin het buigpunt van
de curve van het domeinmodel ligt
Omtrek_Extr_Hoogte.d
: midden van omtrekklasse waarin het maximum
van de curve van het domeinmodel ligt
Berekent afwijkende metingen, dit zijn metingen met een afwijking > 2,5 *
RMSE, en geeft deze weer volgens dalende afwijking. Voor de 20 domeinen met
de hoogste RMSE
, waarbij de "foutenmarge" breder is, worden minstens 10
meetresultaten geselecteerd als "afwijkend" (nl. de 10 meetresultaten met de
hoogste error).
afwijkendeMetingen(Dataset, AantalDomHogeRMSE = 20)
afwijkendeMetingen(Dataset, AantalDomHogeRMSE = 20)
Dataset |
Dataframe met meetresultaten, geschatte waarden voor het
domeinmodel en het Vlaamse model en de RMSE voor het domeinmodel. Deze
dataframe moet dezelfde velden bevatten als de dataframes in de list
teruggegeven in de functie |
AantalDomHogeRMSE |
Standaard worden de 20 domeinen met de hoogste
|
Lijst met afwijkende metingen (> 2,5 * RMSE), inclusief vlag uit databank
Berekent de curvekarakteristieken die toelaten om mogelijke afwijkingen in de curvevorm te detecteren: extremen (min en max), buigpunt,...
curvekarakteristieken(Basismodel, Data = NULL)
curvekarakteristieken(Basismodel, Data = NULL)
Basismodel |
Model per boomsoort zoals teruggegeven door de functie
|
Data |
Dataset op basis waarvan het lokaal model berekend is (enkel nodig voor lokaal model) |
Dataframe met curvekarakteristieken per domein en boomsoort met de velden:
parameters Ad
, Bd
en Cd
van het model en enkele generieke
velden (DOMEIN_ID
, BMS
,...)
Omtrek_Extr_Hoogte.d
: midden van omtrekklasse waarin een extreem
(minimum of maximum) van de curve van het domeinmodel ligt
Extr_Hoogte.d
: hoogteschatting die aansluit bij het vorige veld
Hoogteverschil.d
: verschil tussen de hoogteschattingen van het
extreem van de curve en de bovengrens van het bruikbaar interval.
Deze maat is relevant als het extreem een maximum is
(enkel dan is deze waarde positief).
Omtrek_Buigpunt.d
: midden van omtrekklasse waarin een buigpunt van
de curve van het domeinmodel ligt (deze en volgende variabelen zijn
relevante maten bij het voorkomen van een minimum)
Verschil_rico_BP_Q5.d
: het verschil in de waarde van de
richtingscoëfficiënt tussen het buigpunt en de ondergrens van het
bruikbaar interval.
Verschil_rico_BP_Q5_per_omtrek.d
: de voorgaande variabele gedeeld
door het verschil in omtrek tussen het buigpunt en de ondergrens van het
bruikbaar interval.
Ingeval van een basismodel worden deze variabelen aangevuld met dezelfde variabelen voor het Vlaams model. Hierbij is de 'd' op het einde van de variabelenaam vervangen door 'vl'.
De functie genereert een rapport (.html
-bestand) in de working directory
(of opgegeven directory) met informatie en grafieken van de finale
modellen.
Deze functie rendert het bestand dhcurverapport.Rmd
, dat voor elke
boomsoort-domeincombinatie child dhcurve.Rmd
toevoegt.
dhcurvesrapport( OutputIVANHO, Datalijst, Bestandsnaam = "dhcurves.html", KleurUitbreiding = FALSE, verbose = TRUE, PathWD = getwd() )
dhcurvesrapport( OutputIVANHO, Datalijst, Bestandsnaam = "dhcurves.html", KleurUitbreiding = FALSE, verbose = TRUE, PathWD = getwd() )
OutputIVANHO |
Lijst met geschatte hoogte per omtrekklasse (dataframe
zoals gegenereerd door de functie |
Datalijst |
Datasets met gemeten waarden die gebruikt zijn voor de
modellen, zoals gegenereerd door de functie |
Bestandsnaam |
Een naam voor het rapport ( |
KleurUitbreiding |
Moeten de metingen van de uitbreiding in een andere
kleur weergegeven worden?
Default is |
verbose |
Dit geeft de toestand van het systeem aan en zorgt ervoor dat boodschappen niet onnodig gegeven worden. (Defaultwaarde behouden.) |
PathWD |
Het path van de working directory, dus het path waarin het validatierapport opgeslagen moet worden (default wordt het in de op dat moment actieve working directory opgeslagen). |
De functie genereert in de working directory (of opgegeven directory) een rapport (html) met de te controleren modellen. Hierin wordt per model (boomsoort-domeincombinatie) de volgende algemene informatie vermeld: boomsoort, domein (en ID), modeltype, aantal metingen, RMSE en bruikbaar interval.
Daaronder wordt telkens grafisch volgende info weergegeven:
een puntenwolk die de metingen voorstelt (geen individuele metingen, maar een jitter)
curve van het domeinmodel, aangeduid met zwarte ruiten
grenzen van het bruikbaar interval (curves eindigen bij de klassenmiddens die overeenkomen met deze grenzen)
Functie die op basis van de opgegeven dataset een model opstelt per
boomsoort-domeincombinatie door verschuiving van het Vlaams model voor die
boomsoort (afgeleid uit het basismodel). Dit komt overeen met het fitten van
het lineair model
op basis van de opgegeven dataset, waarbij
de hoogteschatting is volgens het
Vlaams model.
fit.afgeleid(Data.afgeleid, Basismodel)
fit.afgeleid(Data.afgeleid, Basismodel)
Data.afgeleid |
De dataframe "Afgeleid" uit de list die teruggegeven
wordt bij de functie |
Basismodel |
Model per boomsoort zoals teruggegeven door de functie
|
List met 2 tibbles:
tibble met velden BMS
(boomsoort), DOMEIN_ID
en Model
(lm
-object van model per boomsoort-domeincombinatie)
tibble met de ingevoerde dataset, waaraan het veld H_VL_finaal
(de
hoogteschatting volgens het Vlaams model) toegevoegd is
Functie die het lineair mixed model
fit op basis van de opgegeven dataset.
fit.basis(Data.basis)
fit.basis(Data.basis)
Data.basis |
De dataframe |
Dataframe (tibble) met de velden BMS
(boomsoort) en
Model
(lme
-object met het gefit mixed model voor die boomsoort)
Functie die het lineair (fixed) model
fit op basis van de opgegeven dataset.
fit.lokaal(Data.lokaal)
fit.lokaal(Data.lokaal)
Data.lokaal |
De dataframe |
Dataframe (tibble) met de velden BMS
(boomsoort), DOMEIN_ID
en
Model
(lm
-object met het gefit lineair model voor die
boomsoort-domeincombinatie).
Functie die de gemiddelde hoogte per omtrekklasse schat voor de domeincurves
en Vlaamse curves van het opgegeven afgeleid model. De teruggegeven
dataframe kan gebruikt worden om grafieken te maken of afwijkende metingen
te bestuderen. Opgelet! In tegenstelling tot de meeste functies van dit
package werkt deze functie op basis van 1 model en de bijhorende
meetgegevens. Zie voorbeeld voor een methode om deze functie te kunnen
toepassen op de volledige dataset Afgeleidmodel
.
hoogteschatting.afgeleid(Domeinsoortmodel, Domeinsoortdata)
hoogteschatting.afgeleid(Domeinsoortmodel, Domeinsoortdata)
Domeinsoortmodel |
verschoven Vlaams model voor 1 boomsoort-domeincombinatie |
Domeinsoortdata |
de gegevens die hierbij horen: meetresultaten voor 1 boomsoort-domeincombinatie |
dataframe met de meetresultaten en de schattingen van de hoogtes voor het domeinmodel en de Vlaamse model
library(dplyr) #Datasets inladen en het basismodel en afgeleid model berekenen Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] Basismodel <- fit.basis(Data.basis) Data.afgeleid <- Datalijst[["Afgeleid"]] Afgeleidmodel <- fit.afgeleid(Data.afgeleid, Basismodel) #De hoogteschatting voor een afgeleid model Afgeleidmodel[[1]] %>% inner_join( Afgeleidmodel[[2]], by = c("BMS", "DOMEIN_ID") ) %>% group_by( .data$BMS, .data$DOMEIN_ID ) %>% do( hoogteschatting.afgeleid(.$Model[[1]], select(., -Model)) ) %>% ungroup()
library(dplyr) #Datasets inladen en het basismodel en afgeleid model berekenen Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] Basismodel <- fit.basis(Data.basis) Data.afgeleid <- Datalijst[["Afgeleid"]] Afgeleidmodel <- fit.afgeleid(Data.afgeleid, Basismodel) #De hoogteschatting voor een afgeleid model Afgeleidmodel[[1]] %>% inner_join( Afgeleidmodel[[2]], by = c("BMS", "DOMEIN_ID") ) %>% group_by( .data$BMS, .data$DOMEIN_ID ) %>% do( hoogteschatting.afgeleid(.$Model[[1]], select(., -Model)) ) %>% ungroup()
Functie die de gemiddelde hoogte per omtrekklasse schat voor de domeincurves
en Vlaamse curves van het opgegeven basismodel. De teruggegeven dataframe
kan gebruikt worden om grafieken te maken of afwijkende metingen te
bestuderen. Opgelet! In tegenstelling tot de meeste functies van dit
package werkt deze functie op basis van 1 model en de bijhorende
meetgegevens. Zie voorbeelden voor een methode om deze functie te kunnen
toepassen op het Basismodel
of het Lokaalmodel
en Data.lokaal
.
hoogteschatting.basis( Soortmodel, Soortdata, Typemodel, BMS, Uitbreiding = FALSE )
hoogteschatting.basis( Soortmodel, Soortdata, Typemodel, BMS, Uitbreiding = FALSE )
Soortmodel |
model voor één boomsoort (basis) of één boomsoort-domeincombinatie (lokaal) |
Soortdata |
meetgegevens van boomsoort (basis) of boomsoort-domeincombinatie (lokaal) |
Typemodel |
"Basis" of "Lokaal"? |
BMS |
Boomsoort |
Uitbreiding |
Gaat het hier over berekening voor een uitbreiding?
(Facultatief argument om met hogere hoogteklassen te kunnen omgaan.)
Default is |
dataframe met de meetresultaten en de schattingen van de hoogtes voor het domeinmodel en de Vlaamse model
library(dplyr) #Dataset inladen en het basismodel berekenen Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] Basismodel <- fit.basis(Data.basis) #De hoogteschatting voor een basismodel Basismodel %>% rowwise() %>% do( hoogteschatting.basis(.$Model, .$Model$data, "Basis", .$BMS) ) %>% ungroup() #Dataset inladen en het lokaal model berekenen Data.lokaal <- Data.basis %>% filter(DOMEIN_ID == "A") Lokaalmodel <- fit.lokaal(Data.lokaal) #De hoogteschatting voor een lokaal model Lokaalmodel %>% inner_join( Data.lokaal, by = c("BMS", "DOMEIN_ID") ) %>% group_by( BMS, DOMEIN_ID ) %>% do( hoogteschatting.basis(.$Model[[1]], select(., -Model), "Lokaal", unique(.$BMS)) ) %>% ungroup()
library(dplyr) #Dataset inladen en het basismodel berekenen Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] Basismodel <- fit.basis(Data.basis) #De hoogteschatting voor een basismodel Basismodel %>% rowwise() %>% do( hoogteschatting.basis(.$Model, .$Model$data, "Basis", .$BMS) ) %>% ungroup() #Dataset inladen en het lokaal model berekenen Data.lokaal <- Data.basis %>% filter(DOMEIN_ID == "A") Lokaalmodel <- fit.lokaal(Data.lokaal) #De hoogteschatting voor een lokaal model Lokaalmodel %>% inner_join( Data.lokaal, by = c("BMS", "DOMEIN_ID") ) %>% group_by( BMS, DOMEIN_ID ) %>% do( hoogteschatting.basis(.$Model[[1]], select(., -Model), "Lokaal", unique(.$BMS)) ) %>% ungroup()
De functie initiatie()
maakt de dataset klaar voor de verdere stappen van
het opstellen van diameter-hoogtecurves: ze berekent de noodzakelijke
variabelen en splitst de dataset op basis van het aantal metingen per
boomsoort-domeincombinatie in 4 delen:
3 delen die als parameter meegegeven kunnen worden voor de
fit.xxx()
-functies per modeltype (basismodel, afgeleid model en lokaal
model), en een vierde deel met de resterende gegevens.
initiatie( Data, Uitzonderingen = data.frame(DOMEIN_ID = "", BMS = "", min_basis = NA_integer_, min_afgeleid = NA_integer_, stringsAsFactors = FALSE), Bestandsnaam = "VerwijderdeGegevensInitiatie.html", verbose = TRUE, PathWD = getwd() )
initiatie( Data, Uitzonderingen = data.frame(DOMEIN_ID = "", BMS = "", min_basis = NA_integer_, min_afgeleid = NA_integer_, stringsAsFactors = FALSE), Bestandsnaam = "VerwijderdeGegevensInitiatie.html", verbose = TRUE, PathWD = getwd() )
Data |
Dataframe met metingen van bomen die als basis moeten dienen om
diameter-hoogtecurves op te stellen. De dataframe moet de velden |
Uitzonderingen |
Lijst met boomsoort-domeincombinaties waarvoor
uitzonderingen gelden voor de limieten van minimum 50 en minimum 10 bomen.
De dataframe moet de velden |
Bestandsnaam |
Een naam voor het validatierapport ( |
verbose |
Dit geeft de toestand van het systeem aan en zorgt ervoor dat boodschappen niet onnodig gegeven worden. (Defaultwaarde behouden.) |
PathWD |
Het path van de working directory, dus het path waarin het validatierapport opgeslagen moet worden (default wordt het in de op dat moment actieve working directory opgeslagen). |
Als er gegevens verwijderd worden, genereert de functie een validatierapport
(.html
-bestand) waarin een overzicht gegeven wordt van de verwijderde
gegevens, dit zijn gegevens met omtrek > 3 m en omtrek < 0.2 m.
De functie geeft een list van dataframes terug, met in elke dataframe
behalve de variabelen uit Data
de berekende variabelen
Omtrek
(= omtrekklasse), logOmtrek
, logOmtrek2
, Q5k
en Q95k
(de
grenzen van het bruikbaar interval), nBomen
(= aantal metingen behalve de
verwijderde gegevens),
nBomenOmtrek05
(aantal metingen met omtrek > 0.5 m en < 2.8 m),
nBomenInterval
(= aantal metingen binnen het bruikbaar interval),
nBomenIntervalOmtrek05
(aantal metingen binnen het bruikbaar interval
met omtrek > 0.5 m)
en nExtra
(aantal metingen boven het bruikbaar interval op basis waarvan
een uitbreiding van de curve naar hogere omtrekklassen gevalideerd zou
kunnen worden)
De 4 dataframes die achtereenvolgens in de list zitten, zijn:
[["Basis"]]
gegevens van boomsoorten waarvoor meer dan 50 metingen
(binnen het bruikbaar interval met omtrek > 0.5 m) beschikbaar zijn in
minimum 6 domeinen, waarbij enkel gegevens worden opgenomen van de
domeinen waarvoor minimum 50 metingen beschikbaar zijn. Op basis van
deze dataset kan een basismodel berekend worden, bestaande uit een
Vlaams model per boomsoort en domeinspecifieke modellen.
[["Afgeleid"]]
gegevens van domeinen met minder metingen (< 50
metingen binnen het bruikbaar interval en > 10 metingen boven 0.5 m)
van boomsoorten waarvoor een Vlaams model berekend kan worden
(dus boomsoorten die in dataset "Basis" voorkomen), op basis
waarvan een afgeleid model berekend kan worden.
[["Lokaal"]]
gegevens van domeinen met veel metingen voor een
boomsoort (> 50 metingen binnen het bruikbaar interval met
omtrek > 0.5 m) waarvan er te weinig domeinen (< 6) zijn
met voldoende metingen om een Vlaams model op te stellen. Voor deze
boomsoort-domeincombinaties kan een lokaal model berekend worden.
[["Rest"]]
metingen van de boomsoort-domeincombinaties die niet tot
de 3 voorgaande categorieën behoren en waar dus geen model voor
opgesteld kan worden.
Voor de eerste en derde dataframe worden metingen binnen het bruikbaar
interval gemarkeerd als VoorModelFit
en ook metingen boven dit interval
tot een omtrek van 3 m worden bijgehouden voor een eventuele uitbreiding van
het model (tot maximaal 10 omtrekklassen);
voor het afgeleid model (2de dataframe) worden de metingen met omtrek tussen
0,5 m en 2,8 m bijgehouden.
In geval er gegevens verwijderd zijn, wordt aan de list een extra dataframe
[["VerwijderdeGegevens"]]
toegevoegd met de gegevens uit het
validatierapport.
Functie die de modelparameters berekent op basis van een opgegeven basismodel, lokaal model of afgeleid model. Ze berekent de parameters voor het domeinmodel en ingeval van het basismodel ook voor het Vlaams model, en geeft ook de grenzen van het bruikbaar interval.
(Deze functie verwijst naar de interne functies modelparameters.basis()
,
modelparameters.lokaal()
of modelparameters.afgeleid()
, afhankelijk van
de situatie)
modelparameters(Basismodel, Data = NULL, Afgeleidmodel = NULL)
modelparameters(Basismodel, Data = NULL, Afgeleidmodel = NULL)
Basismodel |
model per boomsoort (basismodel) of model per boomsoort-domeincombinatie (lokaalmodel) |
Data |
meetgegevens (enkel nodig voor lokaal model) |
Afgeleidmodel |
voor de berekening van de modelparameters van het afgeleid model moeten zowel het basismodel als het afgeleid model gegeven worden, dus in dit geval wordt hier het afgeleid model meegegeven. Voor de andere modellen mag dit argument niet toegevoegd worden. |
Dataframe met parameters voor domeinmodel (Ad
, Bd
en Cd
) en
ingeval van het basismodel de parameters voor Vlaams model (Avl
, Bvl
en
Cvl
).
Ingeval van een afgeleid model worden de parameters voor het Vlaams model
gegeven (Avl
, Bvl
en Cvl
), en een parameter Ad
die de verschuiving
van het Vlaams model naar het afgeleide domeinmodel weergeeft (dus een extra
intercept)
De functie outputIVANHO()
voert de berekeningen uit die leiden tot de
gevraagde tabel om in IVANHO
te importeren: een tabel met per boomsoort,
domein en omtrekklasse een schatting van de hoogte. Als de curve een
maximum hoogte vertoont binnen het bestudeerde interval, wordt deze
maximumwaarde als hoogte meegegeven aan alle omtrekklassen hoger dan de
omtrekklasse van dit maximum. (Dus verschillend van de validatierapporten
daalt de hoogte hier niet terug na het maximum, maar de hoogste waarde wordt
aangehouden.)
Als de curve een minimum hoogte vertoont binnen het bestudeerde interval,
wordt deze minimumwaarde als hoogte meegegeven aan alle omtrekklassen lager
dan de omtrekklasse van dit minimum.
Als voor een bepaalde omtrekklasse de hoogteschatting lager is dan 2,5 m,
dan wordt deze omtrekklasse weggelaten.
Voor deze functie worden volgende hulpfuncties aangeroepen:
hoogteschatting.basis()
, hoogteschatting.afgeleid()
en
curvekarakteristieken()
.
outputIVANHO( Basismodel = NULL, Afgeleidmodel = NULL, Lokaalmodel = NULL, Data.lokaal = NULL, Uitbreiding = NULL )
outputIVANHO( Basismodel = NULL, Afgeleidmodel = NULL, Lokaalmodel = NULL, Data.lokaal = NULL, Uitbreiding = NULL )
Basismodel |
Model per boomsoort zoals teruggegeven door de functie
|
Afgeleidmodel |
Model per boomsoort-domeincombinatie zoals teruggegeven
door de functie |
Lokaalmodel |
Model per boomsoort-domeincombinatie zoals teruggegeven
door de functie |
Data.lokaal |
Dataset op basis waarvan het opgegeven lokaal model berekend is. |
Uitbreiding |
Dataset met velden |
Dataframe met geschatte hoogtes per domein en per boomsoort met velden:
DOMEIN_ID
: domeincode
BOS_BHI
: domeinnaam
IDbms
(identificatienummer van de boomsoort)
BMS
: boomsoort
Modeltype
("basismodel"(= eigen model op basis van mixed model) of
"afgeleid model"(= verschoven Vlaams model, afgeleid van fixed factor uit
basismodel) of
"Vlaams model"(= fixed factor uit basismodel, niet toegevoegd
omdat niet relevant) of "lokaal model"(= apart model voor 1
boomsoort-domeincombinatie) of "geen model"(= boomsoort-domeincombinatie
waarvoor geen model berekend kan worden))
Omtrek
: klassenmidden van omtrekklasse
OmtrekklassetypeID
: het overeenkomstige identificatienummer van de
omtrekklasse
Omtrekklasse
Hoogte
: de geschatte hoogte
RMSE
(root mean square error, zie vignet voor meer info:
vignette("Handleiding", package = "dhcurve")
)
De functie resultaat berekent op basis van de opgegeven modellen voor elke
boomsoort-domeincombinatie de modelparameters A, B en C voor een model van
de vorm
.
Voor deze functie worden volgende hulpfuncties aangeroepen:
modelparameters()
, rsme.basis()
en rsme.afgeleid()
Verder worden parameters A
, B
en C
uit het model gehaald en een
aantal in de functie initiatie()
berekende gegevens toegevoegd.
resultaat( Basismodel = NULL, Afgeleidmodel = NULL, Lokaalmodel = NULL, Data.lokaal = NULL, Data.onbruikbaar = NULL )
resultaat( Basismodel = NULL, Afgeleidmodel = NULL, Lokaalmodel = NULL, Data.lokaal = NULL, Data.onbruikbaar = NULL )
Basismodel |
Model per boomsoort zoals teruggegeven door de functie
|
Afgeleidmodel |
Model per boomsoort-domeincombinatie zoals teruggegeven
door de functie |
Lokaalmodel |
Model per boomsoort-domeincombinatie zoals teruggegeven
door de functie |
Data.lokaal |
Dataset op basis waarvan het opgegeven lokaal model berekend is. |
Data.onbruikbaar |
Evt. lijst met meetresultaten van
boomsoort-domeincombinaties waarvoor geen model opgesteld kan worden, in de
vorm van een dataframe zoals de dataframe |
Dataframe met modellen per domein en per boomsoort met velden:
DomeinID
(identificatienummer voor domein)
BMS
(boomsoort)
Modeltype
("basismodel"(= eigen model op basis van mixed model) of
"afgeleid model"(= verschoven Vlaams model, afgeleid van fixed factor uit
basismodel) of
"Vlaams model"(= fixed factor uit basismodel, niet toegevoegd
omdat niet relevant) of "lokaal model"(= eigen model voor 1
boomsoort-domeincombinatie) of "geen model"(= boomsoort-domeincombinatie
waarvoor minstens 1 boom opgemeten is maar geen model berekend kan
worden))
parameters A
, B
en C
(zie 'Description' bovenaan)
bruikbaar interval (Q5k
en Q95k
, zie vignet voor meer info)
RMSE
(root mean square error, zie vignet voor meer info)
nBomen
(totaal aantal opgemeten bomen met omtrek tussen 0,2 en
3,0 m)
nBomenOmtrek05
(aantal metingen met omtrek tussen 0.5 en 2,8 m,
dus waarop afgeleid model gebaseerd is)
nBomenInterval
(aantal metingen binnen bruikbaar interval, dus
waarop basismodel of lokaal model gebaseerd is)
nBomenIntervalOmtrek05
(aantal metingen binnen bruikbaar interval
met omtrek > 0.5 m, dus waarop RMSE-berekening gebaseerd is)
nExtra
(aantal metingen boven bruikbaar interval waarop een eventuele
uitbreiding gebaseerd is)
evt. kan een tweede dataframe toegevoegd worden met Vlaamse modellen per
boomsoort, of deze kan toegevoegd worden aan de vorige dataframe, waarbij
DomeinID
leeg gelaten wordt of een specifieke waarde
"Vlaams model" krijgt
Deze functie berekent de RMSE door cross-validatie op basis van 6 subsets.
Deze functie kan ook gebruikt worden voor het lokaal model (ze bepaalt het
verschil tussen de datasets op basis van het al dan niet aanwezig zijn van
een veld DOMEIN_ID
in de dataset). Opgelet! In tegenstelling tot de
meeste functies van dit package werkt deze functie op basis van de
meetgegevens van 1 model.
Zie voorbeelden voor een methode om deze functie te kunnen
toepassen vertrekkend van meetgegevens (bv. Data.lokaal
) of vertrekkend van
een model waar de meetgegevens uit gehaald kunnen worden (bv. Basismodel
).
Deze functie berekent de RMSE op basis van testgroepen en omvat de volgende deelstappen:
metingen opdelen in 6 testgroepen (veld testgroep)
modellen fitten voor testgroepen, waarbij ze de functie fit.basis()
6 keer oproept
RMSE berekenen voor domeinmodellen en Vlaams model op basis van de gemeten waarden en schattingen voor de testgroepen
rmse.basis(Data, Typemodel, BMS)
rmse.basis(Data, Typemodel, BMS)
Data |
Meetgegevens van één boomsoort-domeincombinatie (dataframe
zoals de dataframes die in de list teruggegeven worden door de functie
|
Typemodel |
"Basis" of "Lokaal"? |
BMS |
Boomsoort |
Dataframe met RMSE_domein (rmseD
), RMSE_Vlaams (rmseVL
, niet voor
lokaal model) en maxResid
library(dplyr) #Dataset inladen voor het basismodel Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] #De RMSE berekenen voor een basismodel op basis van de dataset Data.basis %>% group_by( BMS ) %>% do( rmse.basis(., "Basis", .data$BMS) ) %>% ungroup() #Dataset inladen voor het lokaal model Data.lokaal <- Data.basis %>% filter(DOMEIN_ID == "A") #De rmse berekenen voor een lokaal model Data.lokaal %>% group_by( BMS, DOMEIN_ID ) %>% do( rmse.basis(., "Lokaal", .data$BMS) ) %>% ungroup()
library(dplyr) #Dataset inladen voor het basismodel Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] #De RMSE berekenen voor een basismodel op basis van de dataset Data.basis %>% group_by( BMS ) %>% do( rmse.basis(., "Basis", .data$BMS) ) %>% ungroup() #Dataset inladen voor het lokaal model Data.lokaal <- Data.basis %>% filter(DOMEIN_ID == "A") #De rmse berekenen voor een lokaal model Data.lokaal %>% group_by( BMS, DOMEIN_ID ) %>% do( rmse.basis(., "Lokaal", .data$BMS) ) %>% ungroup()
Deze functie berekent de RMSE op basis van verschil tussen de hoogteschatting volgens het domeinmodel en de gemeten hoogte (voor omtrekklassen > 0.5 m). Dit is slechts een deel van de totale RMSE van het afgeleid model, want behalve deze RMSE van de verschuiving moet hier ook de RMSE van het Vlaams model (basismodel) in rekening gebracht worden. Opgelet! In tegenstelling tot de meeste functies van dit package werkt deze functie op basis van de meetgegevens van 1 model. Zie voorbeeld voor een methode om deze functie te kunnen toepassen vertrekkend van het berekende model.
rmse.verschuiving(Verschovenmodel, Boomsoort, Domein)
rmse.verschuiving(Verschovenmodel, Boomsoort, Domein)
Verschovenmodel |
Afgeleid model voor één boomsoort-domeincombinatie
( |
Boomsoort |
|
Domein |
|
Dataframe met BMS
(boomsoort), DOMEIN_ID
, RmseVerschuiving
library(dplyr) #Datasets inladen en het basismodel en afgeleid model berekenen Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] Basismodel <- fit.basis(Data.basis) Data.afgeleid <- Datalijst[["Afgeleid"]] Afgeleidmodel <- fit.afgeleid(Data.afgeleid, Basismodel) # De RMSE berekenen voor de verschuiving van het Vlaams model naar een # afgeleid model Afgeleidmodel[[1]] %>% rowwise() %>% do( rmse.verschuiving(.$Model, .$BMS, .$DOMEIN_ID) ) %>% ungroup() #Nota: voor een berekening van de volledige RMSE van een afgeleid model #moet ook de RMSE van het basismodel in rekening gebracht worden
library(dplyr) #Datasets inladen en het basismodel en afgeleid model berekenen Data <- testdataset() Datalijst <- initiatie(Data) Data.basis <- Datalijst[["Basis"]] Basismodel <- fit.basis(Data.basis) Data.afgeleid <- Datalijst[["Afgeleid"]] Afgeleidmodel <- fit.afgeleid(Data.afgeleid, Basismodel) # De RMSE berekenen voor de verschuiving van het Vlaams model naar een # afgeleid model Afgeleidmodel[[1]] %>% rowwise() %>% do( rmse.verschuiving(.$Model, .$BMS, .$DOMEIN_ID) ) %>% ungroup() #Nota: voor een berekening van de volledige RMSE van een afgeleid model #moet ook de RMSE van het basismodel in rekening gebracht worden
Deze functie genereert een testdataset voor 1 domein die voldoet aan de opgegeven vereisten.
testdata1domein( nBomen = 100, minOmtrek = 20, maxOmtrek = 239, A = 30, B = 15, C = 1, sd = 2 )
testdata1domein( nBomen = 100, minOmtrek = 20, maxOmtrek = 239, A = 30, B = 15, C = 1, sd = 2 )
nBomen |
Aantal gemeten bomen voor het domein |
minOmtrek |
Minimale omtrek voor de data |
maxOmtrek |
Maximale omtrek voor de data |
A |
Parameter voor het intercept van de functie |
B |
Parameter voor de eerstegraadsterm |
C |
Parameter voor de tweedegraadsterm |
sd |
foutenmarge t.o.v. model voor de data |
Dataframe met testdata voor 1 boomsoort-domeincombinatie met velden
C13
en HOOGTE
.
Deze functie genereert een testdataset die voldoet aan de opgegeven
vereisten.
De testdataset kan gebruikt worden om het package te testen, ze voldoet als
invoer voor functie initiatie()
testdataset( nBomenDomein = c(200, 100, 500, 100, 100, 100, 50, 20, 8), BMS = "testboom", IDbms = 1, minOmtrek = 20, maxOmtrek = 239 )
testdataset( nBomenDomein = c(200, 100, 500, 100, 100, 100, 50, 20, 8), BMS = "testboom", IDbms = 1, minOmtrek = 20, maxOmtrek = 239 )
nBomenDomein |
Vector met aantal gemeten bomen per domein |
BMS |
Naam van boomsoort |
IDbms |
Identificatienummer van boomsoort |
minOmtrek |
Minimale omtrek voor de data |
maxOmtrek |
Maximale omtrek voor de data |
Dataframe met testdata voor 1 boomsoort met velden BMS
, IDbms
,
DOMEIN_ID
, BOS_BHI
, C13
, HOOGTE
, Status
en ID
.
Functie die de validatie uitvoert op het verschoven Vlaams model en een overzicht geeft van de afwijkende metingen (zodat de gebruiker deze kan valideren).
validatie.afgeleid()
roept meerdere hulpfuncties op:
rmse.basis()
en rmse.verschuiving()
afwijkendeMetingen()
validatierapport()
Voorafgaand aan het uitvoeren van deze laatste functie worden eerst de slechtste modellen opgelijst (op basis van RMSE en afwijkende metingen).
validatie.afgeleid( Basismodel, Afgeleidmodel, AantalDomHogeRMSE = 20, ExtraCurvesRapport = NULL, Bestandsnaam = "Validatie_Afgeleid.html", TypeRapport = "Dynamisch", PathWD = getwd() )
validatie.afgeleid( Basismodel, Afgeleidmodel, AantalDomHogeRMSE = 20, ExtraCurvesRapport = NULL, Bestandsnaam = "Validatie_Afgeleid.html", TypeRapport = "Dynamisch", PathWD = getwd() )
Basismodel |
Model per boomsoort zoals teruggegeven door de functie
|
Afgeleidmodel |
Model per boomsoort-domeincombinatie zoals teruggegeven
door de functie |
AantalDomHogeRMSE |
Standaard worden de 20 domeinen met de hoogste
|
ExtraCurvesRapport |
Optie om een lijst met extra
boomsoort-domeincombinaties op te geven waardoor de curve getoond moet worden
in het validatierapport.
Deze moeten opgegeven worden als een dataframe met velden |
Bestandsnaam |
Een naam voor het validatierapport ( |
TypeRapport |
Default is "Dynamisch", waarbij de figuren in het
|
PathWD |
Het path van de working directory, dus het path waarin het validatierapport opgeslagen moet worden (default wordt het in de op dat moment actieve working directory opgeslagen). |
De functie genereert een validatierapport (.html
-bestand) in de
working directory met informatie en grafieken van de te controleren metingen.
De afwijkende metingen zijn in rood aangeduid (zie ?validatierapport
of
vignet voor meer informatie).
De functie geeft een dataframe terug met de te controleren metingen, met behalve de informatie uit de databank een aantal berekende waarden:
H_D_finaal
: een geschatte hoogte voor de omtrekklasse volgens het
domeinmodel
rsmeD
: de foutenschatting voor het domeinmodel
H_VL_finaal
: een geschatte hoogte voor de omtrekklasse volgens het
Vlaams model waarvan het domeinmodel afgeleid is
rmseVL
: de foutenschatting voor dit Vlaams model
HogeRmse
: TRUE
als het domeinmodel een hoge RMSE heeft, anders NA
Functie die alle nodige validaties uitvoert op het opgegeven (volledige) model en een overzicht geeft van de afwijkende metingen en slechte curves (zodat de gebruiker deze kan valideren).
De functie roept meerdere hulpfuncties op:
rmse.basis()
afwijkendeMetingen()
afwijkendeCurves()
validatierapport()
Voorafgaand aan het uitvoeren van deze laatste functie worden eerst de slechtste modellen opgelijst (op basis van RMSE, afwijkende metingen en afwijkende curves).
validatie.basis( Basismodel, AantalDomHogeRMSE = 20, ExtraCurvesRapport = NULL, GoedgekeurdeAfwijkendeCurves = NULL, Bestandsnaam = "Default", TypeRapport = "Dynamisch", PathWD = getwd() )
validatie.basis( Basismodel, AantalDomHogeRMSE = 20, ExtraCurvesRapport = NULL, GoedgekeurdeAfwijkendeCurves = NULL, Bestandsnaam = "Default", TypeRapport = "Dynamisch", PathWD = getwd() )
Basismodel |
Model per boomsoort zoals teruggegeven door de functie
|
AantalDomHogeRMSE |
Standaard worden de 20 domeinen met de hoogste
|
ExtraCurvesRapport |
Optie om een lijst met extra
boomsoort-domeincombinaties op te geven waardoor de curve getoond moet worden
in het validatierapport.
Deze moeten opgegeven worden als een dataframe met velden |
GoedgekeurdeAfwijkendeCurves |
Optie om goedgekeurde afwijkende curves
niet meer te tonen in het validatierapport zolang er geen extra metingen
toegevoegd zijn voor de boomsoort-domeincombinatie (om als gebruiker enkel de
te keuren curves in het rapport over te houden). De goedgekeurde en dus te
negeren curves moeten opgegeven worden in een dataframe met velden
|
Bestandsnaam |
Een naam voor het validatierapport ( |
TypeRapport |
Default is "Dynamisch", waarbij de figuren in het
|
PathWD |
Het path van de working directory, dus het path waarin het validatierapport opgeslagen moet worden (default wordt het in de op dat moment actieve working directory opgeslagen). |
De functie genereert een validatierapport (.html
-bestand) in de working
directory met informatie en grafieken van de te controleren modellen. De
afwijkende metingen en curvedelen zijn in rood aangeduid; boven de curve is
het probleem ook woordelijk beschreven (zie ?validatierapport
of vignet
voor meer informatie).
De functie geeft een dataframe terug met de te controleren metingen, met behalve de informatie uit de databank een aantal berekende waarden:
H_D_finaal
: een geschatte hoogte voor de omtrekklasse volgens het
domeinmodel (dus specifiek voor de boomsoort-domeincombinatie)
H_VL_finaal
: een geschatte hoogte voor de omtrek volgens het Vlaams
model (dus voor het overkoepelend boomsoort-model)
rmseD
: de foutenschatting voor het domeinmodel
HogeRmse
: TRUE
als het domeinmodel een hoge RMSE heeft, anders
NA
Functie die alle nodige validaties uitvoert op het opgegeven lokaal model en een overzicht geeft van de afwijkende metingen en slechte curves (zodat de gebruiker deze kan valideren).
De functie roept meerdere hulpfuncties op:
rmse.basis()
afwijkendeMetingen()
afwijkendeCurves()
validatierapport()
Voorafgaand aan het uitvoeren van deze laatste functie worden eerst de slechtste modellen opgelijst (op basis van RMSE, afwijkende metingen en afwijkende curves).
validatie.lokaal( Lokaalmodel, Data, AantalDomHogeRMSE = 20, ExtraCurvesRapport = NULL, GoedgekeurdeAfwijkendeCurves = NULL, Bestandsnaam = "Default", TypeRapport = "Dynamisch", PathWD = getwd() )
validatie.lokaal( Lokaalmodel, Data, AantalDomHogeRMSE = 20, ExtraCurvesRapport = NULL, GoedgekeurdeAfwijkendeCurves = NULL, Bestandsnaam = "Default", TypeRapport = "Dynamisch", PathWD = getwd() )
Lokaalmodel |
Model per boomsoort-domeincombinatie zoals teruggegeven
door de functie |
Data |
Dataset op basis waarvan het opgegeven lokaal model berekend is. |
AantalDomHogeRMSE |
Standaard worden de 20 domeinen met de hoogste
|
ExtraCurvesRapport |
Optie om een lijst met extra
boomsoort-domeincombinaties op te geven waardoor de curve getoond moet worden
in het validatierapport.
Deze moeten opgegeven worden als een dataframe met velden |
GoedgekeurdeAfwijkendeCurves |
Optie om goedgekeurde afwijkende curves
niet meer te tonen in het validatierapport zolang er geen extra metingen
toegevoegd zijn voor de boomsoort-domeincombinatie (om als gebruiker enkel de
te keuren curves in het rapport over te houden). De goedgekeurde en dus te
negeren curves moeten opgegeven worden in een dataframe met velden
|
Bestandsnaam |
Een naam voor het validatierapport ( |
TypeRapport |
Default is "Dynamisch", waarbij de figuren in het
|
PathWD |
Het path van de working directory, dus het path waarin het validatierapport opgeslagen moet worden (default wordt het in de op dat moment actieve working directory opgeslagen). |
De functie genereert een validatierapport (.html
-bestand) in de working
directory met informatie en grafieken van de te controleren modellen. De
afwijkende metingen en curvedelen zijn in rood aangeduid; boven de curve is
het probleem ook woordelijk beschreven (zie ?validatierapport
of vignet
voor meer informatie).
De functie geeft een dataframe terug met de te controleren metingen, met behalve de informatie uit de databank een aantal berekende waarden:
H_D_finaal
: een geschatte hoogte voor de omtrekklasse volgens het
domeinmodel
rmseD
: de foutenschatting voor het domeinmodel
HogeRmse
: TRUE
als het domeinmodel een hoge RMSE heeft, anders
NA
Functie die toelaat om de opgegeven basismodellen of lokale modellen te
valideren ter hoogte van omtrekklassen boven het bruikbaar interval ingeval
hiervoor voldoende gegevens beschikbaar zijn.
De functie berekent de waarden diff_min
, diff_mediaan
en diff_max
en
geeft een overzichtsrapport met de 20 slechtste niet eerder afgekeurde
curves (= curves met hoogste absolute waarde voor diff_mediaan
),
waarvan het de bedoeling is dat de gebruiker ze valideert.
validatie.uitbreiding( Model, Dataset, AantalDomValidatie = 20, GoedgekeurdeUitbreidingen = NULL, Bestandsnaam = "Default", TypeRapport = "Dynamisch", PathWD = getwd() )
validatie.uitbreiding( Model, Dataset, AantalDomValidatie = 20, GoedgekeurdeUitbreidingen = NULL, Bestandsnaam = "Default", TypeRapport = "Dynamisch", PathWD = getwd() )
Model |
Basismodel per boomsoort of
lokaal model per boomsoort-domeincombinatie zoals teruggegeven
door de functies |
Dataset |
Dataset zoals teruggegeven door functie |
AantalDomValidatie |
Standaard worden de 20 domeinen met de hoogste
gemiddelde afwijking ( |
GoedgekeurdeUitbreidingen |
Optie om goedgekeurde uitbreidingen
niet meer te tonen in het validatierapport zolang er geen extra metingen
toegevoegd zijn voor de boomsoort-domeincombinatie (om als gebruiker enkel de
te keuren curves in het rapport over te houden). De goedgekeurde en dus te
negeren curves moeten opgegeven worden in een dataframe met velden
|
Bestandsnaam |
Een naam voor het validatierapport ( |
TypeRapport |
Default is "Dynamisch", waarbij de figuren in het
|
PathWD |
Het path van de working directory, dus het path waarin het validatierapport opgeslagen moet worden (default wordt het in de op dat moment actieve working directory opgeslagen). |
De functie genereert een validatierapport (.html
-bestand) in de working
directory met informatie en grafieken van de te controleren modellen.
De weergegeven grafieken zijn gerangschikt van slechtste (= mediaan heeft
grootste afwijking) naar minder slecht.
Idee is om in dit rapport het blauwe deel van de grafiek te valideren.
De functie geeft een dataframe terug met per boomsoort-domeincombinatie de
omtrekklasse tot waar het model uitgebreid kan worden
(met velden BMS
, DOMEIN_ID
en MaxOmtrek
).
Deze tabel kan als argument Uitbreidingen
in functie
outputIVANHO()
toegevoegd worden om deze uitbreidingen mee te nemen voor
het eindresultaat.
Belangrijk is hierbij dat afgekeurde curves eerst verwijderd zijn door
bij initiatie()
via Uitzonderingen
de variabele
min_uitbreiden_model
op te trekken en daarna
validatie.uitbreiding()
opnieuw gerund is met de aangepaste dataset.
De functie genereert een validatierapport (.html
-bestand) in de working
directory (of opgegeven directory) met informatie en grafieken van de te
controleren modellen. De afwijkende metingen en curvedelen zijn in rood
aangeduid; boven de curve is het probleem ook woordelijk beschreven.
Deze functie rendert het bestand Validatierapport.Rmd
, dat afhankelijk van
de opgegeven variabele TypeRapport
voor elke boomsoort-domeincombinatie als
child DomeincurveDynamisch.Rmd
of Domeincurve.Rmd
toevoegt.
validatierapport( SlechtsteModellen, AfwijkendeMetingen, Dataset, Bestandsnaam = "Validatie.html", TypeRapport = c("Dynamisch", "Statisch"), Uitbreidingsrapport = FALSE, verbose = TRUE, PathWD = getwd() )
validatierapport( SlechtsteModellen, AfwijkendeMetingen, Dataset, Bestandsnaam = "Validatie.html", TypeRapport = c("Dynamisch", "Statisch"), Uitbreidingsrapport = FALSE, verbose = TRUE, PathWD = getwd() )
SlechtsteModellen |
Lijst van de slechtste modellen, dit zijn modellen
met hoge RMSE, afwijkende vorm (op basis van extremen en buigpunten) en/of
modellen met afwijkende metingen. Deze dataframe moet volgende velden
bevatten: |
AfwijkendeMetingen |
Lijst met afwijkende metingen (dataframe zoals
gegenereerd door de functie |
Dataset |
Dataset met gemeten waarden en geschatte waarde voor
domeinmodel en Vlaams model (inclusief |
Bestandsnaam |
Een naam voor het validatierapport ( |
TypeRapport |
Default is "Dynamisch", waarbij de figuren in het
|
Uitbreidingsrapport |
Gaat het over een validatierapport voor
|
verbose |
Dit geeft de toestand van het systeem aan en zorgt ervoor dat boodschappen niet onnodig gegeven worden. (Defaultwaarde behouden.) |
PathWD |
Het path van de working directory, dus het path waarin het validatierapport opgeslagen moet worden (default wordt het in de op dat moment actieve working directory opgeslagen). |
De functie genereert in de working directory (of opgegeven directory)
een rapport (.html
) met de te controleren modellen. Hierin wordt per model
(boomsoort-domeincombinatie) de volgende algemene informatie vermeld:
boomsoort, domein (en ID), aantal metingen, RMSE, bruikbaar interval en de
mogelijke problemen die bij het model optreden.
Daaronder wordt telkens grafisch volgende info weergegeven:
een puntenwolk die de metingen voorstelt (geen individuele metingen, maar een jitter)
curve van het Vlaams model (als beschikbaar, dus niet voor het lokaal model)
curve van het domeinmodel
grenzen van het bruikbaar interval (curves eindigen bij de klassenmiddens die overeenkomen met deze grenzen)
afwijkende metingen: in rood (andere metingen in zwart)
afwijkende deel van een curve in rood (rest van curve in zwart)
Bij de keuze voor een uitbreidingsrapport (argument
Uitbreidingsrapport = TRUE
) wijkt het rapport af:
algemene informatie: de RMSE is vervangen door de variabelen DiffMediaan, DiffMin en DiffMax
kleur van grafiek: geen afwijkingen in rood, wel is de uitbreiding weergegeven in blauw (zowel jitter van metingen als curve)