Load the package in the workspace.
Load other useful packages in the workspace.
Load the ant traits data in the workspace and define the response
matrix Y and covariate matrices X and
Z.
# install.packages("mvabund")
# data(antTraits, package = "mvabund")
load(url("https://raw.githubusercontent.com/cran/mvabund/master/data/antTraits.RData"))
Y = as.matrix(antTraits$abund)
X = as.matrix(antTraits$env[,-3])
Z = matrix(1, nrow = ncol(Y), ncol = 1)
attr(Y, "dimnames") = NULL
attr(X, "dimnames") = NULL
attr(Z, "dimnames") = NULL
n = nrow(Y)
m = ncol(Y)Set the model family to Poisson since the response matrix contain count data.
suppressWarnings({
  init_glm_dev = sgdGMF::sgdgmf.init(Y, X, Z, ncomp = 2, family = family, method = "glm", type = "deviance")
  init_glm_prs = sgdGMF::sgdgmf.init(Y, X, Z, ncomp = 2, family = family, method = "glm", type = "pearson")
  init_glm_lnk = sgdGMF::sgdgmf.init(Y, X, Z, ncomp = 2, family = family, method = "glm", type = "link")
  init_ols_dev = sgdGMF::sgdgmf.init(Y, X, Z, ncomp = 2, family = family, method = "ols", type = "deviance")
  init_ols_prs = sgdGMF::sgdgmf.init(Y, X, Z, ncomp = 2, family = family, method = "ols", type = "pearson")
  init_ols_lnk = sgdGMF::sgdgmf.init(Y, X, Z, ncomp = 2, family = family, method = "ols", type = "link")
})data.frame(
  "Method" = rep(c("GLM", "OLS"), each = 3),
  "Resid" = rep(c("Deviance", "Pearson", "Link"), times = 2),
  "Deviance" = 
    list(init_glm_dev, init_glm_prs, init_glm_lnk, init_ols_dev, init_ols_prs, init_ols_lnk) |> 
    lapply(function (obj) round(100 * deviance(obj, normalize = TRUE), 2)) |> unlist() |> drop()
)
#>   Method    Resid Deviance
#> 1    GLM Deviance    37.16
#> 2    GLM  Pearson    27.65
#> 3    GLM     Link    45.47
#> 4    OLS Deviance    43.52
#> 5    OLS  Pearson    49.72
#> 6    OLS     Link    42.71