% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/pcaSDI.R
\name{pcaSDI}
\alias{pcaSDI}
\title{PCA-Based Slow Digestibility Index}
\usage{
pcaSDI(Data, type)
}
\arguments{
\item{Data}{A data frame or object coercible to a data frame. The first
column must contain candidate names. The remaining numeric columns must
follow this sequence: TS \%, Aratio, TAC\%, TAPC\%, RDS \%, SDS\%, RS\%, IGP\%,
RC\%, Total Protein, Total Oil, Total Phenolic, PV, PT, HS, and FV.}

\item{type}{A character vector containing \code{+} and \code{-} signs to indicate
benefit and cost criteria, respectively. Its length must match the number
of criteria columns.}
}
\value{
A list with three components:
\describe{
\item{SelectedPC}{A data frame containing the selected principal components,
their eigen values, and variance proportions.}
\item{PCAWeight}{A data frame containing PCA-derived weights for each criterion.}
\item{Index}{A data frame containing normalized score and rank for each candidate.}
}
}
\description{
Computes the PCA-based slow digestibility index using only principal
components with eigen values greater than 1.
}
\details{
The function first transforms cost criteria into benefit form, then
standardizes the data and performs principal component analysis. Only those
principal components with eigen values greater than 1 are retained. The
criterion weights are derived from the absolute loadings weighted by the
proportion of explained variance of the selected components. The final
candidate score is min-max normalized and ranked in descending order.
}
\examples{
\donttest{
simulate_new_crop_data <- function(n_rep = 20, seed = 123) {
crop_names <- c("Sample 1", "Sample 2", "Sample 3", "Sample 4", "Sample 5")
 sim_one_crop <- function(crop, n) {
   data.frame(
     Crop = rep(crop, n),
     `TS \%` = runif(n, 40, 80),
     Aratio = runif(n, 0.30, 2.50),
     `TAC\%` = runif(n, 20, 35),
     `TAPC\%` = runif(n, 10, 60),
     `RDS \%` = runif(n, 35, 75),
     `SDS\%` = runif(n, 5, 25),
     `RS\%` = runif(n, 10, 45),
     `IGP\%` = runif(n, 65, 100),
     `RC\%` = runif(n, 15, 35),
     `Total Protein` = runif(n, 5, 25),
     `Total Oil` = runif(n, 1, 10),
     `Total Phenolic` = runif(n, 0.5, 7.5),
     PV = runif(n, 800, 6000),
     PT = runif(n, 60, 75),
     HS = runif(n, 700, 5000),
     FV = runif(n, 1500, 9000),
     check.names = FALSE
   )
 }
 simulated_data <- do.call(
   rbind,
   lapply(crop_names, sim_one_crop, n = n_rep)
 )
 numeric_cols <- setdiff(names(simulated_data), "Crop")
 simulated_data[numeric_cols] <- round(simulated_data[numeric_cols], 3)
  rownames(simulated_data) <- NULL
  simulated_data
}
Data <- simulate_new_crop_data(n_rep = 1, seed = 123)
tp <- c("+", "+", "+", "-", "-", "+", "+", "-", "+", "+", "+", "+", "-", "+", "+", "+")
pcaSDI(Data, type = tp)
}
}
\references{
Pandey, S., Goswami, D., Vinutha, T., Goswami, S., Kumar, R. R., Singh, S. P., ... & Krishnan, V. (2026). Molecular and microstructural cues for starch digestive heterogeneity in Indian pearl millet (Pennisetum Glaucum). Journal of Functional Foods, 138, 107208.
}
