1) Linear relationship (baseline)

We choose a linear model with noise and record correlations.

n <- 400
x <- rnorm(n)

# Linear signal + noise
y_lin_signal <- 2 * x
y_lin <- y_lin_signal + rnorm(n, sd=0.9)

corr_lin <- corr_table(x, y_lin)
corr_lin
plot(x, y_lin, pch=16, cex=0.6,
     main="Linear: y = 2x + noise",
     xlab="x", ylab="y")
abline(lm(y_lin ~ x), lwd=2)

2) Monotone nonlinear relationship

2.1) (bounded) with matched Spearman

Use a monotone nonlinear transform: tanh(a x), which saturates.

a <- 2.0
y_non_signal <- tanh(a * x)   # bounded in (-1, 1), strictly increasing in x

# Tune noise so Spearman(x, y_non) is close to Spearman(x, y_lin)
target_s <- cor(x, y_lin, method="spearman")

tuned <- tune_noise_for_spearman(x, y_non_signal, target=target_s, grid=seq(0, 1.5, length.out=61))

y_non <- tuned$y

corr_non <- corr_table(x, y_non)
corr_non
plot(x, y_non, pch=16, cex=0.6,
     main=paste0("Monotone nonlinear: y = tanh(",a,"x) + noise (tuned)"),
     xlab="x", ylab="y")

rbind(
  Linear = corr_lin,
  Nonlinear_Monotone = corr_non
)

2.2) A more extreme example

Another monotone but nonlinear relationship is \(y = \exp(kx)\).

k_values <- c(1, 2, 3, 5)

results <- do.call(rbind, lapply(k_values, function(k){
  y <- exp(k*x)  # monotone transform, no extra noise
  cbind(k = k, corr_table(x, y))
}))

results

Pearson correlation can drop arbitrarily which Spearman and Kendall’s tau are kept at 1.

If we add some noise: \(y = \exp(2x) + \text{noise}\)

k <- 2
eps <- rnorm(n, sd = 0.05 * sd(exp(k*x)))
y_noisy <- exp(k*x + eps)

corr_table(x, y_noisy)
plot(x, y_noisy, pch=16, cex=0.7,
     main="Monotone nonlinear + noise: y = exp(2x) + noise",
     xlab="x", ylab="y", log = "y")

3) U-shaped (non-monotone comparison)

x3 <- rnorm(n)
y3 <- (x3^2) + rnorm(n, sd = 0.5)

corr_table(x3, y3)
plot(x3, y3, pch=16, cex=0.6,
     main="U-shaped: y = x^2 + noise",
     xlab="x", ylab="y")

LS0tCnRpdGxlOiAiTGVjdHVyZSAxIFF1aWNrIERlbW86IFBlYXJzb24gdnMgU3BlYXJtYW4gdnMgS2VuZGFsbCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UpCnNldC5zZWVkKDEyMykKCiMjIEhlbHBlciBmdW5jdGlvbnMKY29ycl90YWJsZSA8LSBmdW5jdGlvbih4LCB5KSB7CiAgZGF0YS5mcmFtZSgKICAgIFBlYXJzb24gID0gY29yKHgsIHksIG1ldGhvZCA9ICJwZWFyc29uIiksCiAgICBTcGVhcm1hbiA9IGNvcih4LCB5LCBtZXRob2QgPSAic3BlYXJtYW4iKSwKICAgIEtlbmRhbGwgID0gY29yKHgsIHksIG1ldGhvZCA9ICJrZW5kYWxsIikKICApCn0KCiMgU2VhcmNoIGZvciBub2lzZSBzZCBzbyBTcGVhcm1hbiBpcyBuZWFyIGEgdGFyZ2V0CnR1bmVfbm9pc2VfZm9yX3NwZWFybWFuIDwtIGZ1bmN0aW9uKHgsIHlfc2lnbmFsLCB0YXJnZXQ9MC44NSwgZ3JpZD1zZXEoMCwgMiwgbGVuZ3RoLm91dD02MSkpIHsKICBiZXN0IDwtIGxpc3Qoc2Q9TkEsIHNwZWFybWFuPU5BLCB5PU5VTEwsIGVycj1JbmYpCiAgZm9yIChzZCBpbiBncmlkKSB7CiAgICB5IDwtIHlfc2lnbmFsICsgcm5vcm0obGVuZ3RoKHgpLCBzZD1zZCkKICAgIHMgPC0gY29yKHgsIHksIG1ldGhvZD0ic3BlYXJtYW4iKQogICAgZXJyIDwtIGFicyhzIC0gdGFyZ2V0KQogICAgaWYgKGVyciA8IGJlc3QkZXJyKSBiZXN0IDwtIGxpc3Qoc2Q9c2QsIHNwZWFybWFuPXMsIHk9eSwgZXJyPWVycikKICB9CiAgYmVzdAp9CmBgYAoKIyAxKSBMaW5lYXIgcmVsYXRpb25zaGlwIChiYXNlbGluZSkKCldlIGNob29zZSBhIGxpbmVhciBtb2RlbCB3aXRoIG5vaXNlIGFuZCByZWNvcmQgY29ycmVsYXRpb25zLgoKYGBge3J9Cm4gPC0gNDAwCnggPC0gcm5vcm0obikKCiMgTGluZWFyIHNpZ25hbCArIG5vaXNlCnlfbGluX3NpZ25hbCA8LSAyICogeAp5X2xpbiA8LSB5X2xpbl9zaWduYWwgKyBybm9ybShuLCBzZD0wLjkpCgpjb3JyX2xpbiA8LSBjb3JyX3RhYmxlKHgsIHlfbGluKQpjb3JyX2xpbgpgYGAKCmBgYHtyfQpwbG90KHgsIHlfbGluLCBwY2g9MTYsIGNleD0wLjYsCiAgICAgbWFpbj0iTGluZWFyOiB5ID0gMnggKyBub2lzZSIsCiAgICAgeGxhYj0ieCIsIHlsYWI9InkiKQphYmxpbmUobG0oeV9saW4gfiB4KSwgbHdkPTIpCmBgYAoKIyAyKSBNb25vdG9uZSBub25saW5lYXIgcmVsYXRpb25zaGlwCgojIyAyLjEpIChib3VuZGVkKSB3aXRoIG1hdGNoZWQgU3BlYXJtYW4KVXNlIGEgbW9ub3RvbmUgbm9ubGluZWFyIHRyYW5zZm9ybTogdGFuaChhIHgpLCB3aGljaCBzYXR1cmF0ZXMuCmBgYHtyfQphIDwtIDIuMAp5X25vbl9zaWduYWwgPC0gdGFuaChhICogeCkgICAjIGJvdW5kZWQgaW4gKC0xLCAxKSwgc3RyaWN0bHkgaW5jcmVhc2luZyBpbiB4CgojIFR1bmUgbm9pc2Ugc28gU3BlYXJtYW4oeCwgeV9ub24pIGlzIGNsb3NlIHRvIFNwZWFybWFuKHgsIHlfbGluKQp0YXJnZXRfcyA8LSBjb3IoeCwgeV9saW4sIG1ldGhvZD0ic3BlYXJtYW4iKQoKdHVuZWQgPC0gdHVuZV9ub2lzZV9mb3Jfc3BlYXJtYW4oeCwgeV9ub25fc2lnbmFsLCB0YXJnZXQ9dGFyZ2V0X3MsIGdyaWQ9c2VxKDAsIDEuNSwgbGVuZ3RoLm91dD02MSkpCgp5X25vbiA8LSB0dW5lZCR5Cgpjb3JyX25vbiA8LSBjb3JyX3RhYmxlKHgsIHlfbm9uKQpjb3JyX25vbgpgYGAKCmBgYHtyfQpwbG90KHgsIHlfbm9uLCBwY2g9MTYsIGNleD0wLjYsCiAgICAgbWFpbj1wYXN0ZTAoIk1vbm90b25lIG5vbmxpbmVhcjogeSA9IHRhbmgoIixhLCJ4KSArIG5vaXNlICh0dW5lZCkiKSwKICAgICB4bGFiPSJ4IiwgeWxhYj0ieSIpCmBgYAoKYGBge3J9CnJiaW5kKAogIExpbmVhciA9IGNvcnJfbGluLAogIE5vbmxpbmVhcl9Nb25vdG9uZSA9IGNvcnJfbm9uCikKYGBgCgojIyAyLjIpIEEgbW9yZSBleHRyZW1lIGV4YW1wbGUKQW5vdGhlciBtb25vdG9uZSBidXQgbm9ubGluZWFyIHJlbGF0aW9uc2hpcCBpcyAkeSA9IFxleHAoa3gpJC4KYGBge3J9CmtfdmFsdWVzIDwtIGMoMSwgMiwgMywgNSkKCnJlc3VsdHMgPC0gZG8uY2FsbChyYmluZCwgbGFwcGx5KGtfdmFsdWVzLCBmdW5jdGlvbihrKXsKICB5IDwtIGV4cChrKngpICAjIG1vbm90b25lIHRyYW5zZm9ybSwgbm8gZXh0cmEgbm9pc2UKICBjYmluZChrID0gaywgY29ycl90YWJsZSh4LCB5KSkKfSkpCgpyZXN1bHRzCmBgYAoKUGVhcnNvbiBjb3JyZWxhdGlvbiBjYW4gZHJvcCBhcmJpdHJhcmlseSB3aGljaCBTcGVhcm1hbiBhbmQgS2VuZGFsbCdzIHRhdSBhcmUga2VwdCBhdCAxLgoKCklmIHdlIGFkZCBzb21lIG5vaXNlOiAkeSA9IFxleHAoMngpICsgXHRleHR7bm9pc2V9JApgYGB7cn0KayA8LSAyCmVwcyA8LSBybm9ybShuLCBzZCA9IDAuMDUgKiBzZChleHAoayp4KSkpCnlfbm9pc3kgPC0gZXhwKGsqeCArIGVwcykKCmNvcnJfdGFibGUoeCwgeV9ub2lzeSkKYGBgCgpgYGB7cn0KcGxvdCh4LCB5X25vaXN5LCBwY2g9MTYsIGNleD0wLjcsCiAgICAgbWFpbj0iTW9ub3RvbmUgbm9ubGluZWFyICsgbm9pc2U6IHkgPSBleHAoMngpICsgbm9pc2UiLAogICAgIHhsYWI9IngiLCB5bGFiPSJ5IiwgbG9nID0gInkiKQpgYGAKCgojIDMpIFUtc2hhcGVkIChub24tbW9ub3RvbmUgY29tcGFyaXNvbikKYGBge3J9CngzIDwtIHJub3JtKG4pCnkzIDwtICh4M14yKSArIHJub3JtKG4sIHNkID0gMC41KQoKY29ycl90YWJsZSh4MywgeTMpCmBgYAoKYGBge3J9CnBsb3QoeDMsIHkzLCBwY2g9MTYsIGNleD0wLjYsCiAgICAgbWFpbj0iVS1zaGFwZWQ6IHkgPSB4XjIgKyBub2lzZSIsCiAgICAgeGxhYj0ieCIsIHlsYWI9InkiKQpgYGA=