inst/doc/data-fusion.R

## ---- include = FALSE-------------------------------------------------------------------------------------------------------------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
options(width = 180)

## ---- setup-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
library(GeoFIS)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data(tolima)
fusion <- NewFusion(tolima)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
potassium <- NewFusionInput("K", NewMfTrapezoidalSup(0.2, 0.6))
phosphorus <- NewFusionInput("P", NewMfTrapezoidalSup(5, 15))
balance_gap <- NewFusionInput("Bal_Gap", NewMfTrapezoidalInf(0, 0.5), "BalanceGap")
n_gap <- NewFusionInput("N_Gap", NewMfTriangular(0.5, 1, 1.5), "Ngap_N_OpN")
base_sat <- NewFusionInput("Base_Sat", NewMfTrapezoidalSup(0.4, 0.6), "Base_S")
org_matter <- NewFusionInput("OM", NewMfTrapezoidalSup(3, 5))
ph <- NewFusionInput("pH", NewMfTrapezoidal(5, 5.5, 6.5, 7.5))
cadmium <- NewFusionInput("Cd", NewMfTrapezoidalInf(0, 0.43), "Cadmium")

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
macronutrients_fis <- NewFisFusion("MacN", # Fis name
  c("Bal_Gap", "K", "P", "N_Gap", "Base_Sat"), # Fis inputs names
  c(2, 2, 2, 2, 2), # Fis inputs granularities
  "MacN", # Fis output name
  c(0, 0.1, 0.15, 0.2, 0.25, 0.35, 0.4, 0.45,
    0.3, 0.4, 0.45, 0.5, 0.55, 0.65, 0.7, 0.75, 
    0.4, 0.3, 0.4, 0.45, 0.5, 0.55, 0.65, 0.7, 
    0.55, 0.6, 0.7, 0.75, 0.8, 0.85, 0.9, 1) # Fis conclusions
)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
print(macronutrients_fis)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
macronutrients_aggreg <- NewFusionAggreg("MacN", 
  NewAggregFis(macronutrients_fis), 
  balance_gap, potassium, phosphorus, n_gap, base_sat)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nutri_balance_fis <- NewFisFusion("Nutri_Bal", # Fis name 
  c("pH", "OM", "MacN"), # Fis inputs names
  c(2, 2, 2), # Fis inputs granularities
  "Nutri_Bal", # Fis output name
  c(0, 0.2, 0.3, 0.5, 0.4, 0.6, 0.7, 1.0) # Fis conclusions
)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
print(nutri_balance_fis)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nutri_balance_aggreg <- NewFusionAggreg("Nutri_Bal", 
  NewAggregFis(nutri_balance_fis), 
  ph, org_matter, macronutrients_aggreg)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
chemical_aggreg <- NewFusionAggreg("Chemical", 
  NewAggregWam(weights = c(0.3, 0.7)), 
  cadmium, nutri_balance_aggreg)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
print(chemical_aggreg, "aggreg", "mf")

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
fusion$aggregate <- chemical_aggreg

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
fusion$perform()
output <- fusion$output()

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
print(output, digits = 2)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
data(fusion_cars)
print(fusion_cars)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
a <- NewFusionInput("µA", NewMfTrapezoidalInf(4, 20), "A")
v <- NewFusionInput("µV", NewMfTrapezoidalSup(100, 500), "V")
s <- NewFusionInput("µS", NewMfTrapezoidalSup(120, 220), "S")
c <- NewFusionInput("µC", NewMfTrapezoidalInf(6, 16), "C")

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
fusion <- NewFusion(fusion_cars)
fusion$aggregate <- list(a, v, s, c)
fusion$perform()
degrees <- fusion$output()
print(degrees)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
target <- c(0.8, 0.6, 0.6, 0.6)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
target <- c(1, 0, 0, 0)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
wam_weights <- LearnWamWeights(degrees, target)
print(wam_weights)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
wam_aggreg <- NewFusionAggreg("wam", NewAggregWam(wam_weights), a, v, s, c)
fusion$aggregate <- wam_aggreg
fusion$perform()
wam_inferred <- fusion$output()["wam"]
print(wam_inferred)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
owa_weights <- LearnOwaWeights(degrees, target)
print(owa_weights)

## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
owa_aggreg <- NewFusionAggreg("owa", NewAggregOwa(owa_weights), a, v, s, c)
fusion$aggregate <- owa_aggreg
fusion$perform()
owa_inferred <- fusion$output()["owa"]
print(owa_inferred)

Try the GeoFIS package in your browser

Any scripts or data that you put into this service are public.

GeoFIS documentation built on Oct. 5, 2022, 5:06 p.m.