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

## -----------------------------------------------------------------------------
library(matrixCorr)

set.seed(40)
ref <- rnorm(50, mean = 100, sd = 10)
m1 <- ref + rnorm(50, sd = 2)
m2 <- ref + 1.2 + rnorm(50, sd = 3)

fit_ba <- ba(m1, m2)
fit_ccc <- ccc(data.frame(m1 = m1, m2 = m2), ci = TRUE)

print(fit_ba)
summary(fit_ccc)
estimate(fit_ccc)
confint(fit_ccc)
ci(fit_ccc)
tidy(fit_ccc)

## -----------------------------------------------------------------------------
fit_ba_pairwise <- ba(data.frame(m1 = m1, m2 = m2, m3 = ref - 0.8 + rnorm(50, sd = 2.5)))
print(fit_ba_pairwise)
summary(fit_ba_pairwise)

## -----------------------------------------------------------------------------
wide_methods <- data.frame(
  J1 = ref + rnorm(50, sd = 1.5),
  J2 = ref + 4.0 + rnorm(50, sd = 1.8),
  J3 = ref - 3.0 + rnorm(50, sd = 2.0),
  J4 = ref + rnorm(50, sd = 1.6)
)

fit_icc_pair <- icc(
  wide_methods,
  model = "twoway_random",
  type = "agreement",
  unit = "single",
  scope = "pairwise"
)

fit_icc_overall <- icc(
  wide_methods,
  model = "twoway_random",
  type = "agreement",
  unit = "single",
  scope = "overall",
  ci = TRUE
)

print(fit_icc_pair, digits = 2)
summary(fit_icc_pair)
print(fit_icc_overall)

## -----------------------------------------------------------------------------
fit_icc_cons <- icc(
  wide_methods,
  model = "twoway_random",
  type = "consistency",
  unit = "single",
  scope = "overall",
  ci = FALSE
)

fit_icc_agr <- icc(
  wide_methods,
  model = "twoway_random",
  type = "agreement",
  unit = "single",
  scope = "overall",
  ci = FALSE
)

data.frame(
  type = c("consistency", "agreement"),
  selected_coefficient = c(
    attr(fit_icc_cons, "selected_coefficient"),
    attr(fit_icc_agr, "selected_coefficient")
  ),
  estimate = c(
    attr(fit_icc_cons, "selected_row")$estimate,
    attr(fit_icc_agr, "selected_row")$estimate
  )
)

## ----echo = FALSE-------------------------------------------------------------
agreement_summary <- data.frame(
  Function = c(
    "`ccc()`",
    "`ccc_rm_reml()`",
    "`ccc_rm_ustat()`",
    "`icc()`",
    "`icc_rm_reml()`",
    "`cia()`",
    "`cia_rm()`"
  ),
  `Index family` = c(
    "Lin CCC",
    "Repeated-measures CCC",
    "Repeated-measures CCC",
    "Classical ICC",
    "Repeated-measures ICC",
    "CIA",
    "Repeated-measures CIA"
  ),
  `Target question` = c(
    "Pairwise concordance combining precision and accuracy",
    "Pairwise repeated-measures concordance from fitted variance components",
    "Pairwise repeated-measures concordance from U-statistic distances",
    "Reliability or agreement under the selected ICC model, type, and unit",
    "Pairwise repeated-measures reliability/agreement from fitted variance components",
    "Individual agreement/interchangeability relative to within-method replicate disagreement",
    "Individual agreement/interchangeability across matched repeated conditions"
  ),
  `Data/design supported` = c(
    "Numeric wide data; rows are paired observational units",
    "Long repeated-measures data; subject plus optional method/time structure",
    "Long repeated-measures data; balanced method/time coverage per pair",
    "Numeric wide data; pairwise or overall all-column scope",
    "Long repeated-measures data; subject plus optional method/time structure",
    "Long replicated method-comparison data with replicate identifiers",
    "Long matched repeated-measures data with one observation per subject-method-condition cell"
  ),
  `Estimation approach` = c(
    "Moment CCC with Lin delta-method/Fisher-z CI when requested",
    "REML mixed-model variance components and fixed-effect bias term",
    "Nonparametric U-statistic estimator with Fisher-z CI when requested",
    "Classical ANOVA mean-square formulas",
    "REML mixed-model variance components and fixed-effect bias term",
    "Method-of-moments disagreement ratios; optional bounded variance-component variant",
    "Categorical-condition ANOVA estimator"
  ),
  `Inference reported` = c(
    "Estimate; optional confidence interval",
    "Estimate; optional confidence interval; variance-component diagnostics",
    "Estimate; optional confidence interval",
    "Pairwise: estimate and optional CI. Overall: coefficient table with F statistic, df, p-value, and optional CI",
    "Estimate; optional confidence interval; variance-component diagnostics",
    "Estimate; optional confidence interval",
    "Estimate; optional confidence interval; homogeneity F statistic and p-value"
  ),
  `Formal hypothesis test implemented? Yes/No/Requires verification` = c(
    "No",
    "No for the CCC parameter; variance-component selection tests are not CCC tests",
    "No",
    "Requires verification for overall p-values; no pairwise ICC test is documented",
    "No for the ICC parameter; variance-component selection tests are not ICC tests",
    "No",
    "Yes: homogeneity of agreement across conditions"
  ),
  check.names = FALSE
)

knitr::kable(agreement_summary, escape = FALSE)

