mice_impute(df, m, method)

Impute missing trait values using MICE (Multiple Imputation by Chained Equations). Returns a completed data frame averaged over m imputations.

imputationstatistics
Args:df — species × traitsm=5 — number of imputationsmethod="pmm" — imputation method
mice_impute <- function(df, m = 5, method = "pmm", seed = 42) {
  if (!requireNamespace("mice", quietly = TRUE)) install.packages("mice")
  library(mice)
  
  sp_col <- if ("species" %in% names(df)) "species" else rownames(df)
  num_cols <- names(df)[sapply(df, is.numeric)]
  
  imp <- mice(df[, num_cols], m = m, method = method,
              seed = seed, printFlag = FALSE)
  
  # Average over all imputations
  completed <- Reduce("+", lapply(1:m, function(i) complete(imp, i))) / m
  df[, num_cols] <- completed
  df
}

# Example
# mice_impute(trait_matrix, m = 10)