1 Trivariate Gaussian distribution

Let \((y_i,x_i,z_i)\) for \(i=1,\ldots,n\) be a random sample from a trivariate Gaussian distribution, as follows:

\[ (y_i,x_i,z_i)' \sim N\left( \begin{bmatrix}0 \\ 0 \\ 0\end{bmatrix}, \begin{bmatrix} 1 & \sigma_{yx} & \sigma_{yz} \\ \sigma_{yx} & 1 & \rho \\ \sigma_{yz} & \rho & 1\\ \end{bmatrix} \right). \]

1.1 Conditional distribution of \(y_i|x_i,z_i\)

Basic multivariate normal properties lead to the following distribution for \(y_i\) given \(x_i\) and \(y_i\): \[ y_i \mid x_i,z_i \sim N\left(\frac{(\sigma_{xy} - \sigma_{yz}\rho)}{1-\rho^2}x + \frac{(\sigma_{yz} - \sigma_{xy}\rho)}{1-\rho^2}z, \; \frac{1 - \rho - \sigma_{xy}^2 - \sigma_{yz}^2 + 2\sigma_{xy}\sigma_{yz}\rho}{1 - \rho^2} \right), \] or \[ y_i|x_i,z_i = \beta x_i + \gamma z_i + \varepsilon_i \qquad \varepsilon_i \sim N(0,\tau^2), \] for \(\beta\), \(\gamma\) and \(\tau^2\) defined in the previous expression.

1.2 Conditional distribution of \(y_i|x_i,z_i\) when \(\rho=0\)

Notice that, when \(cor(x_i,z_i)=\rho=0\), it follows that \[ y_i|x_i,z_i = \sigma_{xy} x_i + \sigma_{zy} z_i + \varepsilon_i \qquad \varepsilon_i \sim N(0,1-(\sigma_{xy}^2+\sigma_{zy}^2)), \]

#install.packages("MASS")
library(MASS)
set.seed(123)
  
n     = 30
beta  = 0.75
gamma = 1.20
N     = 1000
rhos = seq(0.0,0.95,by=0.05)
coefs = matrix(0,length(rhos),N)
coefs1 = matrix(0,length(rhos),N)

j = 0
for (rho in rhos){
  Sigma = matrix(c(1,rho,rho, 1),2,2)
  j     = j + 1
  for (i in 1:N){
    draw = mvrnorm(n,c(0,0),Sigma)
    x = draw[,1]
    z = draw[,2]
    y = beta*x+gamma*z + rnorm(n)
    coefs[j,i] = lm(y~x-1)$coef[1]
    coefs1[j,i] = lm(y~x+z-1)$coef[1]
  }
}

2 Fitted model: \(y_i = \beta x_i + \gamma z_i + \epsilon_i\)

par(mfrow=c(1,1))
boxplot(t(coefs1),outline=FALSE,xlab="corr(x,z)",ylab="OLS estimate of beta",names=rhos)
title("Fitted model: y=beta*x+gamma*z+error")
abline(h=beta,col=2,lwd=2)
legend("topleft",legend=paste("Data generating process: y=",beta,"*x+",gamma,"*z+epsilon",sep=""))

3 Fitted model: \(y_i = \beta x_i + \epsilon_i\)

par(mfrow=c(1,1))
boxplot(t(coefs),outline=FALSE,xlab="corr(x,z)",ylab="OLS estimate of beta",names=rhos)
title("Fitted model: y=beta*x+error")
abline(h=beta,col=2,lwd=2)
legend("topleft",legend=paste("Data generating process: y=",beta,"*x+",gamma,"*z+epsilon",sep=""))

LS0tCnRpdGxlOiAgICAiTGluZWFyIHJlZ3Jlc3Npb24iCnN1YnRpdGxlOiAiVGhlIG9tbWl0dGVkIHZhcmlhYmxlIHByb2JsZW0iCmF1dGhvcjogICAiSGVkaWJlcnQgRnJlaXRhcyBMb3BlcyIKZGF0ZTogIjEwLzExLzIwMjUiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB0cnVlCiAgICB0b2NfZGVwdGg6IDMKICAgIHRvY19jb2xsYXBzZWQ6IHRydWUKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2RlcHRoOiAnMycKCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIFRyaXZhcmlhdGUgR2F1c3NpYW4gZGlzdHJpYnV0aW9uCkxldCAkKHlfaSx4X2ksel9pKSQgZm9yICRpPTEsXGxkb3RzLG4kIGJlIGEgcmFuZG9tIHNhbXBsZSBmcm9tIGEgdHJpdmFyaWF0ZSBHYXVzc2lhbiBkaXN0cmlidXRpb24sIGFzIGZvbGxvd3M6CgokJAooeV9pLHhfaSx6X2kpJyBcc2ltIE5cbGVmdCgKXGJlZ2lue2JtYXRyaXh9MCBcXCAwIFxcIDBcZW5ke2JtYXRyaXh9LApcYmVnaW57Ym1hdHJpeH0KMSAmIFxzaWdtYV97eXh9ICYgXHNpZ21hX3t5en0gXFwKXHNpZ21hX3t5eH0gJiAxICYgXHJobyBcXApcc2lnbWFfe3l6fSAmIFxyaG8gJiAxXFwKXGVuZHtibWF0cml4fQpccmlnaHQpLgokJAoKIyMgQ29uZGl0aW9uYWwgZGlzdHJpYnV0aW9uIG9mICR5X2l8eF9pLHpfaSQKCkJhc2ljIG11bHRpdmFyaWF0ZSBub3JtYWwgcHJvcGVydGllcyBsZWFkIHRvIHRoZSBmb2xsb3dpbmcgZGlzdHJpYnV0aW9uIGZvciAkeV9pJCBnaXZlbiAkeF9pJCBhbmQgJHlfaSQ6IAokJAp5X2kgXG1pZCB4X2ksel9pIFxzaW0gCk5cbGVmdChcZnJhY3soXHNpZ21hX3t4eX0gLSBcc2lnbWFfe3l6fVxyaG8pfXsxLVxyaG9eMn14ICsgClxmcmFjeyhcc2lnbWFfe3l6fSAtIFxzaWdtYV97eHl9XHJobyl9ezEtXHJob14yfXosClw7ClxmcmFjezEgLSBccmhvIC0gXHNpZ21hX3t4eX1eMiAtIFxzaWdtYV97eXp9XjIgKyAyXHNpZ21hX3t4eX1cc2lnbWFfe3l6fVxyaG99ezEgLSBccmhvXjJ9ClxyaWdodCksCiQkCm9yIAokJAp5X2l8eF9pLHpfaSA9IFxiZXRhIHhfaSArIFxnYW1tYSB6X2kgKyBcdmFyZXBzaWxvbl9pIFxxcXVhZCBcdmFyZXBzaWxvbl9pIFxzaW0gTigwLFx0YXVeMiksCiQkCmZvciAkXGJldGEkLCAkXGdhbW1hJCBhbmQgJFx0YXVeMiQgZGVmaW5lZCBpbiB0aGUgcHJldmlvdXMgZXhwcmVzc2lvbi4gIAoKIyMgQ29uZGl0aW9uYWwgZGlzdHJpYnV0aW9uIG9mICR5X2l8eF9pLHpfaSQgd2hlbiAkXHJobz0wJAoKTm90aWNlIHRoYXQsIHdoZW4gJGNvcih4X2ksel9pKT1ccmhvPTAkLCBpdCBmb2xsb3dzIHRoYXQgCiQkCnlfaXx4X2ksel9pID0gXHNpZ21hX3t4eX0geF9pICsgXHNpZ21hX3t6eX0gel9pICsgXHZhcmVwc2lsb25faSBccXF1YWQgXHZhcmVwc2lsb25faSBcc2ltIE4oMCwxLShcc2lnbWFfe3h5fV4yK1xzaWdtYV97enl9XjIpKSwKJCQKCmBgYHtyfQojaW5zdGFsbC5wYWNrYWdlcygiTUFTUyIpCmxpYnJhcnkoTUFTUykKc2V0LnNlZWQoMTIzKQogIApuICAgICA9IDMwCmJldGEgID0gMC43NQpnYW1tYSA9IDEuMjAKTiAgICAgPSAxMDAwCnJob3MgPSBzZXEoMC4wLDAuOTUsYnk9MC4wNSkKY29lZnMgPSBtYXRyaXgoMCxsZW5ndGgocmhvcyksTikKY29lZnMxID0gbWF0cml4KDAsbGVuZ3RoKHJob3MpLE4pCgpqID0gMApmb3IgKHJobyBpbiByaG9zKXsKICBTaWdtYSA9IG1hdHJpeChjKDEscmhvLHJobywgMSksMiwyKQogIGogICAgID0gaiArIDEKICBmb3IgKGkgaW4gMTpOKXsKICAgIGRyYXcgPSBtdnJub3JtKG4sYygwLDApLFNpZ21hKQogICAgeCA9IGRyYXdbLDFdCiAgICB6ID0gZHJhd1ssMl0KICAgIHkgPSBiZXRhKngrZ2FtbWEqeiArIHJub3JtKG4pCiAgICBjb2Vmc1tqLGldID0gbG0oeX54LTEpJGNvZWZbMV0KICAgIGNvZWZzMVtqLGldID0gbG0oeX54K3otMSkkY29lZlsxXQogIH0KfQpgYGAKCiMgRml0dGVkIG1vZGVsOiAkeV9pID0gXGJldGEgeF9pICsgXGdhbW1hIHpfaSArIFxlcHNpbG9uX2kkCmBgYHtyIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9Nn0KcGFyKG1mcm93PWMoMSwxKSkKYm94cGxvdCh0KGNvZWZzMSksb3V0bGluZT1GQUxTRSx4bGFiPSJjb3JyKHgseikiLHlsYWI9Ik9MUyBlc3RpbWF0ZSBvZiBiZXRhIixuYW1lcz1yaG9zKQp0aXRsZSgiRml0dGVkIG1vZGVsOiB5PWJldGEqeCtnYW1tYSp6K2Vycm9yIikKYWJsaW5lKGg9YmV0YSxjb2w9Mixsd2Q9MikKbGVnZW5kKCJ0b3BsZWZ0IixsZWdlbmQ9cGFzdGUoIkRhdGEgZ2VuZXJhdGluZyBwcm9jZXNzOiB5PSIsYmV0YSwiKngrIixnYW1tYSwiKnorZXBzaWxvbiIsc2VwPSIiKSkKYGBgCgojIEZpdHRlZCBtb2RlbDogJHlfaSA9IFxiZXRhIHhfaSArIFxlcHNpbG9uX2kkCmBgYHtyIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9Nn0KcGFyKG1mcm93PWMoMSwxKSkKYm94cGxvdCh0KGNvZWZzKSxvdXRsaW5lPUZBTFNFLHhsYWI9ImNvcnIoeCx6KSIseWxhYj0iT0xTIGVzdGltYXRlIG9mIGJldGEiLG5hbWVzPXJob3MpCnRpdGxlKCJGaXR0ZWQgbW9kZWw6IHk9YmV0YSp4K2Vycm9yIikKYWJsaW5lKGg9YmV0YSxjb2w9Mixsd2Q9MikKbGVnZW5kKCJ0b3BsZWZ0IixsZWdlbmQ9cGFzdGUoIkRhdGEgZ2VuZXJhdGluZyBwcm9jZXNzOiB5PSIsYmV0YSwiKngrIixnYW1tYSwiKnorZXBzaWxvbiIsc2VwPSIiKSkKYGBgCg==