Nothing
## ----setup, include = FALSE---------------------------------------------------
options(rmarkdown.html_vignette.check_title = FALSE)
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----sgdgmf-------------------------------------------------------------------
library(sgdGMF)
## ----libraries----------------------------------------------------------------
library(ggplot2)
library(ggpubr)
library(reshape2)
## ----data---------------------------------------------------------------------
# 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)
n = nrow(Y)
m = ncol(Y)
## ----family-------------------------------------------------------------------
family = poisson()
## ----rank---------------------------------------------------------------------
ncomp = sgdgmf.rank(Y = Y, X = X, Z = Z, family = family, method = "onatski")$ncomp
cat("Selected rank: ", ncomp)
## ----crossval-----------------------------------------------------------------
# Uncomment to run cross-validation
# crossval = sgdgmf.cv(Y = Y, X = X, Z = Z, family = family, ncomps = seq(1,5,1),
# method = "sgd", sampling = "block", control.cv = list(refit = FALSE))
## ----fit----------------------------------------------------------------------
gmf = sgdgmf.fit(Y, X, Z, ncomp = ncomp, family = family, method = "sgd", sampling = "block")
## ----cor----------------------------------------------------------------------
yhat_glm = fitted(gmf, type = "response", partial = TRUE) # VGLM model without matrix factorization
yhat_gmf = fitted(gmf, type = "response", partial = FALSE) # complete GMF model
cat(" VGLM: ", 100 * round(cor(c(Y), c(yhat_glm)), 4), "\n",
" GMF: ", 100 * round(cor(c(Y), c(yhat_gmf)), 4), "\n", sep = "")
## ----hist, fig.width = 7, fig.height = 5--------------------------------------
plt.res.fit.glm = plot(gmf, type = "res-fit", partial = TRUE)
plt.res.hist.glm = plot(gmf, type = "hist", partial = TRUE)
plt.res.fit.gmf = plot(gmf, type = "res-fit", partial = FALSE)
plt.res.hist.gmf = plot(gmf, type = "hist", partial = FALSE)
ggpubr::ggarrange(
plt.res.fit.glm + ggtitle("Residuals vs Fitted values (VGLM)"),
plt.res.hist.glm + ggtitle("Histogram of the residuals (VGLM)"),
plt.res.fit.gmf + ggtitle("Residuals vs Fitted values (GMF)"),
plt.res.hist.gmf + ggtitle("Histogram of the residuals (GMF)"),
nrow = 2, ncol = 2, align = "hv")
## ----spectrum, fig.width = 7, fig.height = 3----------------------------------
plt.eig.glm = screeplot(gmf, partial = TRUE) + ggtitle("Residual screeplot (VGLM)")
plt.eig.gmf = screeplot(gmf, partial = FALSE) + ggtitle("Residual screeplot (GMF)")
ggpubr::ggarrange(plt.eig.glm, plt.eig.gmf, nrow = 1, ncol = 2, align = "hv")
## ----pred, fig.width = 7, fig.height = 3.5------------------------------------
plt.ant = image(gmf, limits = range(c(Y)), type = "data")
plt.fit = image(gmf, limits = range(c(Y)), type = "response")
ggpubr::ggarrange(
plt.ant + labs(x = "Species", y = "Environments", title = "Observed abundance"),
plt.fit + labs(x = "Species", y = "Environments", title = "Predicted abundance"),
nrow = 1, ncol = 2, common.legend = TRUE, legend = "bottom", align = "hv")
## ----resid2, fig.width = 7, fig.height = 3.5----------------------------------
plt.dev = image(gmf, type = "deviance", resid = TRUE, symmetric = TRUE)
plt.prs = image(gmf, type = "pearson", resid = TRUE, symmetric = TRUE)
ggpubr::ggarrange(
plt.dev + labs(x = "Species", y = "Environments", title = "Deviance residuals"),
plt.prs + labs(x = "Species", y = "Environments", title = "Pearson residuals"),
nrow = 1, ncol = 2, common.legend = FALSE, legend = "bottom", align = "hv")
## ----scores, fig.width = 7, fig.height = 4------------------------------------
biplot(gmf, titles = c("Environments", "Species"))
## -----------------------------------------------------------------------------
# Scores
head(coef(gmf, type = "scores"))
# Loadings
head(coef(gmf, type = "loadings"))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.