Skip to contents

Utility function that accepts a fitted Diversity-Interactions (DI) model object along with a data frame and adds the necessary interaction structures to the data for making predictions using the model object specified in `model`.

Usage

add_interaction_terms(data, model)

Arguments

data

A data-frame with species proportions that sum to 1 to create the appropriate interaction structures.

model

A Diversity Interactions model object fit using the DI() or autoDI() functions from the DImodels or DImulti() from the DImodelsMulti R packages.

Value

The original data-frame with additional columns appended at the end describing the interactions terms present in the model object.

Examples

library(DImodels)
data(sim1)

# Fit different DI models
mod1 <- DI(y = "response", prop = 3:6, data = sim1, DImodel = "AV")
#> Fitted model: Average interactions 'AV' DImodel
mod2 <- DI(y = "response", prop = 3:6, data = sim1, DImodel = "FULL")
#> Fitted model: Separate pairwise interactions 'FULL' DImodel
mod3 <- DI(y = "response", prop = 3:6, data = sim1, DImodel = "ADD")
#> Fitted model: Additive species contributions to interactions 'ADD' DImodel
mod4 <- DI(y = "response", prop = 3:6, data = sim1,
           FG = c("G", "G", "H", "H"), DImodel = "FG")
#> Fitted model: Functional group effects 'FG' DImodel

# Create new data for adding interaction terms
newdata <- sim1[sim1$block == 1, 3:6]
print(head(newdata))
#>      p1   p2   p3   p4
#> 1  0.70 0.10 0.10 0.10
#> 5  0.10 0.70 0.10 0.10
#> 9  0.10 0.10 0.70 0.10
#> 13 0.10 0.10 0.10 0.70
#> 17 0.25 0.25 0.25 0.25
#> 21 0.40 0.40 0.10 0.10

add_interaction_terms(data = newdata, model = mod1)
#>      p1   p2   p3   p4    AV
#> 1  0.70 0.10 0.10 0.10 0.240
#> 5  0.10 0.70 0.10 0.10 0.240
#> 9  0.10 0.10 0.70 0.10 0.240
#> 13 0.10 0.10 0.10 0.70 0.240
#> 17 0.25 0.25 0.25 0.25 0.375
#> 21 0.40 0.40 0.10 0.10 0.330
#> 25 0.40 0.10 0.40 0.10 0.330
#> 29 0.40 0.10 0.10 0.40 0.330
#> 33 0.10 0.40 0.40 0.10 0.330
#> 37 0.10 0.40 0.10 0.40 0.330
#> 41 0.10 0.10 0.40 0.40 0.330
#> 45 1.00 0.00 0.00 0.00 0.000
#> 49 0.00 1.00 0.00 0.00 0.000
#> 53 0.00 0.00 1.00 0.00 0.000
#> 57 0.00 0.00 0.00 1.00 0.000
add_interaction_terms(data = newdata, model = mod2)
#>      p1   p2   p3   p4  p1:p2  p1:p3  p1:p4  p2:p3  p2:p4  p3:p4
#> 1  0.70 0.10 0.10 0.10 0.0700 0.0700 0.0700 0.0100 0.0100 0.0100
#> 5  0.10 0.70 0.10 0.10 0.0700 0.0100 0.0100 0.0700 0.0700 0.0100
#> 9  0.10 0.10 0.70 0.10 0.0100 0.0700 0.0100 0.0700 0.0100 0.0700
#> 13 0.10 0.10 0.10 0.70 0.0100 0.0100 0.0700 0.0100 0.0700 0.0700
#> 17 0.25 0.25 0.25 0.25 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625
#> 21 0.40 0.40 0.10 0.10 0.1600 0.0400 0.0400 0.0400 0.0400 0.0100
#> 25 0.40 0.10 0.40 0.10 0.0400 0.1600 0.0400 0.0400 0.0100 0.0400
#> 29 0.40 0.10 0.10 0.40 0.0400 0.0400 0.1600 0.0100 0.0400 0.0400
#> 33 0.10 0.40 0.40 0.10 0.0400 0.0400 0.0100 0.1600 0.0400 0.0400
#> 37 0.10 0.40 0.10 0.40 0.0400 0.0100 0.0400 0.0400 0.1600 0.0400
#> 41 0.10 0.10 0.40 0.40 0.0100 0.0400 0.0400 0.0400 0.0400 0.1600
#> 45 1.00 0.00 0.00 0.00 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 49 0.00 1.00 0.00 0.00 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 53 0.00 0.00 1.00 0.00 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
#> 57 0.00 0.00 0.00 1.00 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
add_interaction_terms(data = newdata, model = mod3)
#>      p1   p2   p3   p4 p1_add p2_add p3_add p4_add
#> 1  0.70 0.10 0.10 0.10 0.2100 0.0900 0.0900 0.0900
#> 5  0.10 0.70 0.10 0.10 0.0900 0.2100 0.0900 0.0900
#> 9  0.10 0.10 0.70 0.10 0.0900 0.0900 0.2100 0.0900
#> 13 0.10 0.10 0.10 0.70 0.0900 0.0900 0.0900 0.2100
#> 17 0.25 0.25 0.25 0.25 0.1875 0.1875 0.1875 0.1875
#> 21 0.40 0.40 0.10 0.10 0.2400 0.2400 0.0900 0.0900
#> 25 0.40 0.10 0.40 0.10 0.2400 0.0900 0.2400 0.0900
#> 29 0.40 0.10 0.10 0.40 0.2400 0.0900 0.0900 0.2400
#> 33 0.10 0.40 0.40 0.10 0.0900 0.2400 0.2400 0.0900
#> 37 0.10 0.40 0.10 0.40 0.0900 0.2400 0.0900 0.2400
#> 41 0.10 0.10 0.40 0.40 0.0900 0.0900 0.2400 0.2400
#> 45 1.00 0.00 0.00 0.00 0.0000 0.0000 0.0000 0.0000
#> 49 0.00 1.00 0.00 0.00 0.0000 0.0000 0.0000 0.0000
#> 53 0.00 0.00 1.00 0.00 0.0000 0.0000 0.0000 0.0000
#> 57 0.00 0.00 0.00 1.00 0.0000 0.0000 0.0000 0.0000
add_interaction_terms(data = newdata, model = mod4)
#>      p1   p2   p3   p4 FG_.bfg_G_H FG_.wfg_G FG_.wfg_H
#> 1  0.70 0.10 0.10 0.10      0.1600    0.0700    0.0100
#> 5  0.10 0.70 0.10 0.10      0.1600    0.0700    0.0100
#> 9  0.10 0.10 0.70 0.10      0.1600    0.0100    0.0700
#> 13 0.10 0.10 0.10 0.70      0.1600    0.0100    0.0700
#> 17 0.25 0.25 0.25 0.25      0.2500    0.0625    0.0625
#> 21 0.40 0.40 0.10 0.10      0.1600    0.1600    0.0100
#> 25 0.40 0.10 0.40 0.10      0.2500    0.0400    0.0400
#> 29 0.40 0.10 0.10 0.40      0.2500    0.0400    0.0400
#> 33 0.10 0.40 0.40 0.10      0.2500    0.0400    0.0400
#> 37 0.10 0.40 0.10 0.40      0.2500    0.0400    0.0400
#> 41 0.10 0.10 0.40 0.40      0.1600    0.0100    0.1600
#> 45 1.00 0.00 0.00 0.00      0.0000    0.0000    0.0000
#> 49 0.00 1.00 0.00 0.00      0.0000    0.0000    0.0000
#> 53 0.00 0.00 1.00 0.00      0.0000    0.0000    0.0000
#> 57 0.00 0.00 0.00 1.00      0.0000    0.0000    0.0000