Correlation of bivariate normal variables with truncated tails

What is the correlation of a bivariate normal distribution after truncating the tails of both variables at $$\alpha$$ standard deviations?

In symbols, what is $$E\left[XY\Big|X| \leq z_{\alpha/2}, |Y| \leq z_{\alpha/2}\right]\ ?$$

I’d like a formula for this; for now, here is a computation in R with $$\alpha = .1$$ and $$\rho = .9$$.

# generating the data set
set.seed(42)
n <- 5000
R <- matrix(c( 1,.9,
.9, 1), 2, 2)
jd <- MASS::mvrnorm(empirical = TRUE,
mu = c(0,0),
Sigma = R,
n = n)

# remove truncated values
alpha <- .10
crit <- qnorm(alpha/2, lower.tail = FALSE)
jd[abs(jd)>(crit)] <- NA
jd <- na.omit(jd)

# Correlation
cor(jd)


The original correlation was .9 and the truncated correlation is .8382. This is not simply sampling variation; with a high sample size I also found find approximately the same difference (.837).

Can this correlation be derived analytically for any $$\alpha$$ and any correlation $$\rho$$?

• This answer maybe helpful: stats.stackexchange.com/questions/517347 It provides links to discussion about truncated nultivariate normals. The answer contains a link to paywalled papers, but the last one is on arXiv and is very thorough: arxiv.org/abs/1206.5387. Jul 12, 2023 at 16:53
• Can you state the problem in math expression? Is $E[XY||X| \leq z_\alpha, |Y| \leq z_\alpha]$ what you want to compute? Jul 12, 2023 at 17:16
• Thank you @Zhanxiong. Yes, it is.
– POC
Jul 12, 2023 at 17:18
• The solution comes down to finding integrals of the type stats.stackexchange.com/questions/498851 and with the same integrand multiplied by $x^2,$ which can be found by differentiating the result twice with respect to $b.$ Yes, it's messy, but taking that derivative is elementary.
– whuber
Jul 18, 2023 at 18:06
• @whuber, an expression with Owen’s T would not be much simpler than the original integral. One could make the “analytical” requirement in the question precise by asking: Does the truncated correlation have an expression in terms of well-known functions of one argument, like $\text{erf}$ or $\Phi$? Then I think the answer would be no. Jul 20, 2023 at 9:42

Thank you for everyone in the comments, I finaly understood how to compute the answer. From Manjunath & Wilhelm and their R package R package, we can get the solution.

alpha <- .10
crit <- qnorm(alpha/2, lower.tail = FALSE)
a <- -c(crit, crit); b <- c(crit,crit)
mu <- c(0,0); sigma <- R
moments <- tmvtnorm::mtmvnorm(mean=mu, sigma=sigma,
lower=a, upper=b)

> moments
$tmean [1] 0 0$tvar
[,1]      [,2]
[1,] 0.5747640 0.4811731
[2,] 0.4811731 0.5747640

> cov2cor(moments\$tvar)
[,1]      [,2]
[1,] 1.0000000 0.8371664
[2,] 0.8371664 1.0000000

• This is just a numerical calculation. Your question explicitly asks for an "analytical solution."
– whuber
Jul 20, 2023 at 20:14