R/bio_model.R

#' Fit a generalized linear model
#'
#' @description This fits a linear model with the form of Indicador ~ Ano + Zona + Post * Zona + Temperatura + Visibilidad + Profundidad to the data. Depending on the specified covars, Temperature, Visibility and Depth can be dropped from the model. Use define_covars to identify which covariates to keep or specify them manually.
#'
#' @param data A data.frame containing at least the columns for Indicador, Ano, Zona, Post, Temperature, Visibility, and Profundidad. The indicator can be any of the biophysical indicators generated by shannon(), density(), fish_biomass(), trophic(), fish_size()
#'
#' @param covars a character vector specifying which covariates to keep. Options are Temperatura, Profundidad, Visibilidad or None (to drop all covariates).
#'
#' @return An object of class lm containing the fitted model
#'
#' @export
#'
#' @author VillaseƱor-Derbez, J.C. <jvillasenor@turfeffect.org>
#'
#' @importFrom magrittr %>%
#'

bio_model <- function(data, covars = c("Temperatura", "Visibilidad", "Profundidad")){

  # using all covariates
  if (length(covars) == 3){
    model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona + Temperatura + Visibilidad + Profundidad, data = data)
  }

  # for only one variable
  if(length(covars) == 1 & !"None" %in% covars){

    # using only T
    if (covars == c("Temperatura")){
      model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona + Temperatura, data = data)
    }

    # using only V
    if (covars == c("Visibilidad")){
      model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona + Visibilidad, data = data)
    }

    # using only P
    if (covars == c("Profundidad")){
      model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona + Profundidad, data = data)
    }

  }

  if (length(covars) == 2){
  
  covars2 <- paste(covars[1], covars[2])

    # using T and V
    if (covars2 == c("Temperatura Visibilidad")){
      model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona + Temperatura + Visibilidad, data = data)
    }

    # using T and P
    if (covars2 == c("Temperatura Profundidad")){
      model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona + Temperatura + Profundidad, data = data)
    }

    # using V and P
    if (covars2 == c("Profundidad Visibilidad")){
      model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona + Visibilidad + Profundidad, data = data)
    }

  }

  # dropping all covariates
  if ("None" %in% covars){
    model <- lm(formula = Indicador ~ Ano + Zona + Post * Zona, data = data)
  }

  return(model)

}
turf-reserves/mpa.tools documentation built on June 1, 2019, 2:55 a.m.