R/multivariate_helpers.R

Defines functions multi_linear_displayer correlation_calculator multi_linear_analyzer normalit

Documented in correlation_calculator multi_linear_analyzer multi_linear_displayer

normalit<-function(m){
  (m - min(m))/(max(m)-min(m))
}

#'multi_linear_analyzer
#' @description t.b.d
#' @author Farid Azouaou
#' @param tisefka input data
#' @param target_variable target_variable
#' @param date_var date_var
#' @export
multi_linear_analyzer <- function(tisefka = NULL, target_variable = NULL, date_var = "date"){
  rf_formula <- as.formula(paste0(target_variable, "~ . "))
  rf_model <- tisefka%>%
    dplyr::select(-!!date_var)%>%
    randomForest::randomForest(formula= rf_formula, data = ., na.action=na.fail)
    # stats::glm(formula = glm_formula, data = .)
  return(rf_model)
}

#' correlation_calculator
#' @description calculate numeric matrix correlation
#' @param tisefka input data
#' @param date_var date_var
#' @export
correlation_calculator <- function(tisefka = NULL,generate_chart = TRUE,  date_var = "date"){
  corr_results <- list()
  corr_results$correlation <- tisefka%>%
    dplyr::select(-!!date_var)%>%
    cor()
  if(generate_chart == TRUE){
    corr_results$corr_chart <- plotly::plot_ly(x = colnames(corr_results$correlation),y = rownames(corr_results$correlation),
      z = corr_results$correlation , type = "heatmap",colors =  colorRamp(c("maroon","orange" ,"grey", "lightblue","navy"))
    )%>%
      plotly::colorbar(limits = c(-1,1))
  }
  return(corr_results)
}

#' multi_linear_displayer
#' @description display multivariate linear impact
#' @param liner_mod linear model
#' @export
multi_linear_displayer <- function(lin_mod = NULL, target_variable = NULL){
  contribution_res <- list()
  if("randomForest" %in% class(lin_mod)){
    contribution <-data.frame(variables = rownames(lin_mod$importance), contribution = lin_mod$importance[,1])%>%
      dplyr::mutate(contribution = normalit(contribution))
  }
  contribution_res$contribution <- contribution
  contribution_res$contribution_chart <- contribution%>%
    plotly::plot_ly(data = . , type ="bar", x = ~variables, y = ~ contribution, color = ~variables)%>%
    plotly::layout(title= "Interdependencies and potential contribution" )
  return(contribution_res)
}
Aqvayli06/SaldaeForecasting documentation built on Sept. 9, 2023, 7:21 p.m.