## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(moderncor)

## ----setup-data---------------------------------------------------------------
set.seed(123)
x <- runif(100, -1, 1)
y <- x^2 + rnorm(100, sd = 0.1)

## ----pearson------------------------------------------------------------------
moderncor(x, y, method = "pearson")

## ----modern, eval = requireNamespace("energy", quietly = TRUE)----------------
# Distance Correlation (captures non-linear dependencies)
moderncor(x, y, method = "dcor")

## ----xi, eval = requireNamespace("XICOR", quietly = TRUE)---------------------
# Chatterjee's Xi (captures functional dependence)
moderncor(x, y, method = "xi")

## ----classical----------------------------------------------------------------
moderncor(x, y, method = "spearman")
moderncor(x, y, method = "kendall")

## ----matrix-input-------------------------------------------------------------
# Compute Spearman correlation matrix for iris dataset
res_mat <- moderncor(iris[, 1:4], method = "spearman")
res_mat

## ----as-data-frame------------------------------------------------------------
# Convert correlation matrix to tidy data frame
df <- as.data.frame(res_mat)
head(df)

## ----no-pvalue, eval = requireNamespace("energy", quietly = TRUE)-------------
# Compute only the estimate, without p-values
moderncor(x, y, method = "dcor", p_value = FALSE)

## ----biweight-----------------------------------------------------------------
set.seed(42)
x_out <- c(rnorm(95), rnorm(5, mean = 10))  # 5% outliers
y_out <- c(rnorm(95), rnorm(5, mean = 10))

moderncor(x_out, y_out, method = "biweight")

## ----biweight-vs-pearson------------------------------------------------------
moderncor(x_out, y_out, method = "pearson")

## ----percentage-bend, eval = requireNamespace("WRS2", quietly = TRUE)---------
moderncor(x_out, y_out, method = "percentage_bend")

## ----winsorized, eval = requireNamespace("WRS2", quietly = TRUE)--------------
moderncor(x_out, y_out, method = "winsorized")

## ----polychoric, eval = requireNamespace("psych", quietly = TRUE)-------------
# Simulate ordinal data (e.g., Likert scale responses)
set.seed(1)
z1 <- rnorm(200)
z2 <- 0.7 * z1 + rnorm(200, sd = sqrt(1 - 0.7^2))
x_ord <- cut(z1, breaks = c(-Inf, -1, 0, 1, Inf), labels = FALSE)
y_ord <- cut(z2, breaks = c(-Inf, -1, 0, 1, Inf), labels = FALSE)

moderncor(x_ord, y_ord, method = "polychoric")

## ----tetrachoric, eval = requireNamespace("psych", quietly = TRUE)------------
x_bin <- as.integer(z1 > 0)
y_bin <- as.integer(z2 > 0)

moderncor(x_bin, y_bin, method = "tetrachoric")

## ----partial, eval = requireNamespace("ppcor", quietly = TRUE)----------------
set.seed(7)
z <- rnorm(100)
x_p <- 0.6 * z + rnorm(100, sd = 0.8)  # x correlates with z
y_p <- 0.6 * z + rnorm(100, sd = 0.8)  # y correlates with z

# Raw correlation (inflated by shared z)
moderncor(x_p, y_p, method = "pearson")

## ----partial-controlled, eval = requireNamespace("ppcor", quietly = TRUE)-----
# Partial correlation controlling for z
moderncor(x_p, y_p, method = "partial", z = z)

## ----semi-partial, eval = requireNamespace("ppcor", quietly = TRUE)-----------
moderncor(x_p, y_p, method = "semi_partial", z = z)

## ----partial-spearman, eval = requireNamespace("ppcor", quietly = TRUE)-------
moderncor(x_p, y_p, method = "partial", z = z, method_partial = "spearman")

## ----ball, eval = requireNamespace("Ball", quietly = TRUE)--------------------
moderncor(x, y, method = "ball")

## ----tau-star, eval = requireNamespace("TauStar", quietly = TRUE)-------------
moderncor(x, y, method = "tau_star")

## ----available-methods--------------------------------------------------------
available_methods()

## ----method-info--------------------------------------------------------------
method_info("dcor")

## ----categorical-preview, eval = requireNamespace("DescTools", quietly = TRUE)----
# Quick preview: Cramér's V for two factor variables
moderncor_cat(factor(mtcars$cyl), factor(mtcars$gear), method = "cramers_v")

