Do you have controversial (interesting) issue involving whether x1 causes x2 or x2 causes x1 with possibly control variables? if so, Try R function `causeSummary(cbind(x1,x2))' to get an answer. I can run it for you if you like.
------------------------------
Hrishikesh Vinod
------------------------------
Original Message:
Sent: 06-12-2017 18:45
From: Hrishikesh Vinod
Subject: Causal Paths in from observational data and endogeneity testing
Since causal paths from data are important for all sciences, Ver. 1.0.4 of `generalCorr' R package has a convenient `causeSummary' function. The Ozone air pollution is known to be caused by solar radiation, wind, temp etc. We correctly find all causal paths. It also helps identify endogenous variables. See details explaining why it works (we use three sophisticated criteria) and simulations, Vinod, H. D., "Causal Paths and Exogeneity Tests ...": https://ssrn.com/abstract=2982128
Hrishikesh (Rick) D. Vinod
Professor of Economics, Fordham University