# biprobit: Recusrive Bivariate Probit Model In endogeneity: Recursive Two-Stage Models to Address Endogeneity

## Description

Estimate two probit models with bivariate normally distributed error terms. This command still works if the first-stage dependent variable is not a regressor in the second stage.

## Usage

 ```1 2 3 4 5 6 7 8 9``` ```biprobit( form1, form2, data = NULL, par = NULL, method = "BFGS", verbose = 0, accu = 10000 ) ```

## Arguments

 `form1` Formula for the first probit model `form2` Formula for the second probit model `data` Input data, a data frame `par` Starting values for estimates `method` Optimization algorithm. Default is BFGS `verbose` Level of output during estimation. Lowest is 0. `accu` 1e12 for low accuracy; 1e7 for moderate accuracy; 10.0 for extremely high accuracy. See optim

## Value

A list containing the results of the estimated model

## References

Peng, Jing. (2022) Identification of Causal Mechanisms from Randomized Experiments: A Framework for Endogenous Mediation Analysis. Information Systems Research (Forthcoming), Available at SSRN: https://ssrn.com/abstract=3494856

Other endogeneity: `bilinear()`, `biprobit_latent()`, `biprobit_partial()`, `pln_linear()`, `pln_probit()`, `probit_linear_latent()`, `probit_linear_partial()`, `probit_linear()`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```library(MASS) N = 2000 rho = -0.5 set.seed(1) x = rbinom(N, 1, 0.5) z = rnorm(N) e = mvrnorm(N, mu=c(0,0), Sigma=matrix(c(1,rho,rho,1), nrow=2)) e1 = e[,1] e2 = e[,2] y1 = as.numeric(1 + x + z + e1 > 0) y2 = as.numeric(1 + x + z + y1 + e2 > 0) est = biprobit(y1~x+z, y2~x+z+y1) est\$estimates ```