inst/doc/getting_started.R

## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE, comment = "#>",
  fig.width = 7, fig.height = 5,
  warning = FALSE, message = FALSE
)
library(SQIpro)

## ----install, eval=FALSE------------------------------------------------------
# # From CRAN (once published)
# install.packages("SQIpro")
# 
# # Development version from GitHub
# # install.packages("remotes")
# remotes::install_github("yourname/SQIpro")

## ----data---------------------------------------------------------------------
data(soil_data)
dim(soil_data)
head(soil_data)

## ----data-summary-------------------------------------------------------------
table(soil_data$LandUse, soil_data$Depth)

## ----validate-----------------------------------------------------------------
result <- validate_data(
  soil_data,
  group_cols = c("LandUse", "Depth")
)
result$n_per_group

## ----config-------------------------------------------------------------------
cfg <- make_config(
  variable    = c("pH",   "EC",   "BD",   "OC",   "MBC",
                  "PMN",  "Clay", "WHC",  "DEH",  "AP",  "TN"),
  type        = c("opt",  "less", "less", "more", "more",
                  "more", "opt",  "more", "more", "more","more"),
  opt_low     = c(6.0,   NA,     NA,     NA,     NA,
                  NA,     20,     NA,     NA,     NA,    NA),
  opt_high    = c(7.0,   NA,     NA,     NA,     NA,
                  NA,     35,     NA,     NA,     NA,    NA),
  description = c(
    "Soil pH (H2O 1:2.5)",
    "Electrical Conductivity (dS/m)",
    "Bulk Density (g/cm3)",
    "Organic Carbon (%)",
    "Microbial Biomass Carbon (mg/kg)",
    "Potentially Mineralizable N (mg/kg)",
    "Clay content (%)",
    "Water Holding Capacity (%)",
    "Dehydrogenase Activity (ug TPF/g/day)",
    "Available Phosphorus (mg/kg)",
    "Total Nitrogen (%)"
  )
)
print(cfg)

## ----scoring-curves, fig.height=7---------------------------------------------
plot_scoring_curves(soil_data, cfg,
                    group_cols = c("LandUse", "Depth"))

## ----score--------------------------------------------------------------------
scored <- score_all(soil_data, cfg,
                    group_cols = c("LandUse", "Depth"))
head(scored[, c("LandUse", "Depth", "pH", "OC", "MBC")])

## ----mds----------------------------------------------------------------------
mds <- select_mds(scored,
                  group_cols     = c("LandUse", "Depth"),
                  load_threshold = 0.6)
mds$mds_vars

## ----linear-------------------------------------------------------------------
res_lin <- sqi_linear(scored, cfg,
                      group_cols = c("LandUse", "Depth"),
                      mds_vars   = mds$mds_vars)
print(res_lin)

## ----regression---------------------------------------------------------------
res_reg <- sqi_regression(scored, cfg,
                           dep_var    = "OC",
                           group_cols = c("LandUse", "Depth"),
                           mds_vars   = mds$mds_vars)
print(res_reg)

## ----pca----------------------------------------------------------------------
res_pca <- sqi_pca(scored, cfg,
                   group_cols = c("LandUse", "Depth"),
                   mds        = mds)
print(res_pca)

## ----fuzzy--------------------------------------------------------------------
res_fuz <- sqi_fuzzy(scored, cfg,
                     group_cols = c("LandUse", "Depth"),
                     mds_vars   = mds$mds_vars,
                     operator   = "mean")
print(res_fuz)

## ----entropy------------------------------------------------------------------
res_ent <- sqi_entropy(scored, cfg,
                       group_cols = c("LandUse", "Depth"),
                       mds_vars   = mds$mds_vars)
print(res_ent)
cat("\nEntropy weights:\n")
print(attr(res_ent, "entropy_weights"))

## ----topsis-------------------------------------------------------------------
res_top <- sqi_topsis(scored, cfg,
                      group_cols = c("LandUse", "Depth"),
                      mds_vars   = mds$mds_vars)
print(res_top)

## ----compare------------------------------------------------------------------
comparison <- sqi_compare(scored, cfg,
                           group_cols = c("LandUse", "Depth"),
                           dep_var    = "OC",
                           mds        = mds)
print(comparison)

## ----heatmap------------------------------------------------------------------
plot_scores(scored, cfg,
            group_cols = c("LandUse", "Depth"),
            group_by   = "LandUse",
            facet_by   = "Depth")

## ----bar----------------------------------------------------------------------
plot_sqi(res_lin,
         sqi_col   = "SQI_linear",
         group_col = "LandUse",
         fill_col  = "Depth")

## ----radar, fig.height=6, eval=requireNamespace("fmsb", quietly=TRUE)---------
# # Requires the 'fmsb' package: install.packages("fmsb")
# plot_radar(scored, cfg,
#            group_col  = "LandUse",
#            group_cols = c("LandUse", "Depth"))

## ----biplot-------------------------------------------------------------------
plot_pca_biplot(mds, scored, group_col = "LandUse")

## ----anova--------------------------------------------------------------------
# Compute per-observation index
scored$SQI_obs <- rowMeans(scored[, mds$mds_vars], na.rm = TRUE)

aov_res <- sqi_anova(scored,
                     sqi_col   = "SQI_obs",
                     group_col = "LandUse")
cat("ANOVA significant:", aov_res$significant, "\n")
print(aov_res$compact_letters)

## ----sensitivity--------------------------------------------------------------
sa <- sqi_sensitivity(scored, cfg,
                       group_cols = c("LandUse", "Depth"),
                       method     = "linear",
                       mds_vars   = mds$mds_vars)
print(sa)

## ----tornado------------------------------------------------------------------
plot_sensitivity(sa)

## ----bib, echo=FALSE----------------------------------------------------------

Try the SQIpro package in your browser

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

SQIpro documentation built on April 20, 2026, 5:06 p.m.