## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")

## ----data---------------------------------------------------------------------
library(pams)

example_data <- as.data.frame(USArrests[1:12, ])
example_names <- colnames(example_data)

## ----preliminary--------------------------------------------------------------
standardized <- scale(example_data)
proximity <- dist(t(standardized))
preliminary <- smacof::smacofSym(proximity, ndim = 2, type = "ordinal")
preliminary$stress
preliminary$conf

## ----fit----------------------------------------------------------------------
set.seed(2026)
fit <- suppressWarnings(BootSmacof(
  testdata = example_data,
  participant = 1:3,
  mds = "smacof",
  type = "ordinal",
  distance = "euclid",
  scale = TRUE,
  nprofile = 2,
  direction = c(1, 1),
  cl = 0.95,
  nBoot = 10,
  testname = example_names
))

## ----summary------------------------------------------------------------------
summary(fit)
round(fit$MDSsummary[[1]], 3)
round(fit$Weight[1:5, ], 3)

## ----plot, fig.width=7, fig.height=4------------------------------------------
plot(fit, profiles = 1:2, interval = "BCa")

## ----comparison---------------------------------------------------------------
c(preliminary = preliminary$stress, BootSmacof = fit$MDS$stress)

signs <- sign(diag(cor(preliminary$conf, fit$MDS$conf)))
signs[signs == 0] <- 1
aligned_preliminary <- sweep(preliminary$conf, 2, signs, `*`)
max(abs(aligned_preliminary - fit$MDS$conf))

## ----tidyverse----------------------------------------------------------------
fit |> summary()

if (requireNamespace("tibble", quietly = TRUE)) {
  weights_tbl <- tibble::as_tibble(fit$Weight, rownames = "participant")
  weights_tbl
}

