tests/testthat/test-SAR.R

test_that("SAR model with spatio-temporal dynamics works", {
  library(igraph)
  options("tinyVAST.verbose" = FALSE)
  data( salmon_returns )

  # Transform data
  salmon_returns$Biomass_nozeros = ifelse( salmon_returns$Biomass==0,
                                           NA, salmon_returns$Biomass )
  Data = na.omit(salmon_returns)

  # Define graph for SAR process
  unconnected_graph = make_empty_graph( nlevels(Data$Region) )
  V(unconnected_graph)$name = levels(Data$Region)

  # Define SEM for AR2 process
  dsem = "
    sockeye -> sockeye, -1, lag1_sockeye
    sockeye -> sockeye, -2, lag2_sockeye

    pink -> pink, -1, lag1_pink
    pink -> pink, -2, lag2_pink

    chum -> chum, -1, lag1_chum
    chum -> chum, -2, lag2_chum
  "

  # Fit tinyVAST model
  suppressWarnings({
    mytiny0 = tinyVAST(
      formula = Biomass_nozeros ~ 0 + Species + Region,
      data = Data,
      spacetime_term = dsem,
      variable_column = "Species",
      time_column = "Year",
      space_column = "Region",
      distribution_column = "Species",
      family = list( "chum" = lognormal(),
        "pink" = lognormal(),
        "sockeye" = lognormal() ),
      spatial_domain = unconnected_graph,
      control = tinyVASTcontrol( profile="alpha_j" ) )
  })

  # Summarize output
  Summary = summary(mytiny0, what="spacetime_term")
  expect_equal(sum(is.na(Summary$Std_Error)), 0L)
  expect_equal(Summary$Estimate[1:5],
    c(0.8075069, 0.1946127, 0.05004454, 0.8819951, 0.6749841), tolerance = 1e-3)
})

Try the tinyVAST package in your browser

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

tinyVAST documentation built on April 4, 2025, 2:43 a.m.