# Causal inference from a cross sectional study design

As far I know, causal inference can be made only from longitudinal study designs. Is there any way to make causal inference from a cross sectional study design? If yes, how can I do this? Please share if any literature is available.

• It would be helpful if you provided some background about you and your problem. For instance, if you're a CS person with a strong math background, I would recommend Judea Pearl's book. If you're a social scientist, I would recommend something like the new Imbens and Rubin book on causal inference. – Dimitriy V. Masterov Apr 21 '15 at 17:20
• I have a cross sectional survey data on childhood malnutrition and social, demographic, health and economic status variables. From this I want find out the causal relationship of these variables with malnutrition. – JRK Apr 23 '15 at 7:56
• Given cross-sectional, non-experimental data, you're essentially left with "regression adjustment" (i.e.: controlling for everything relevant -- unlikely to be possible) and with instrumental variables designs. IV's are often not available, and depend on context. Regression discontinuities are similar to instrumental variables designs. You can try to google each of these things. From experience, one can learn a lot about applied statistics by patiently trying to apply statistics to a particular problem. But there is no guarantee you'll be able to answer the question you started with. – generic_user Apr 23 '15 at 18:16

## 2 Answers

You could also use pcalg package if you are interested in network analysis(graphical modeling) and creating directed causal networks. pcalg has several algorithms for observational(cross sectional) data. With assumption of no hidden variable, you could use "pc" algorithm in the package to estimate the equivalence class of a directed acyclic graph (DAG) from observational data. Depending on your variable having Gaussian distribution, discrete(ordinal) or binary you could use different conditional independence functions in the package. for example using the database that comes with the package(gmG) you could do the following for the above mentioned 3 types of variables (these are modified examples from package pdf):

library(pcalg)
## Using Gaussian Data
##################################################
## Load predefined data
data(gmG)
n <- nrow (gmG8$x) V <- colnames(gmG8$ x) # labels aka node names
## estimate CPDAG
pc.fit <- pc(suffStat = list(C = cor(gmG8$x), n = n), indepTest = gaussCItest, ## indep.test: partial correlations alpha=0.01, labels = V, verbose = TRUE) if (require(Rgraphviz)) { ## show estimated CPDAG ## par(mfrow=c(1,2)) plot(pc.fit, main = "Estimated CPDAG") ## CPDAG stands for completed partially directed acyclic graph(CPDAG) or ## basically what pc algorithm computes for you. } ################################################## ## Using discrete data ################################################## ## Load data data(gmD) V <- colnames(gmD$x)
## define sufficient statistics
suffStat <- list(dm = gmD$x, nlev = c(3,2,3,4,2), adaptDF = FALSE) ## estimate CPDAG pc.D <- pc(suffStat, ## independence test: G^2 statistic indepTest = disCItest, alpha = 0.01, labels = V, verbose = TRUE) if (require(Rgraphviz)) { ## show estimated CPDAG ## par(mfrow = c(1,2)) plot(pc.D, main = "Estimated CPDAG") ## plot(gmD$g, main = "True DAG")
}
##################################################
## Using binary data
##################################################
## Load binary data
data(gmB)
V <- colnames(gmB$x) ## estimate CPDAG pc.B <- pc(suffStat = list(dm = gmB$x, adaptDF = FALSE),
indepTest = binCItest, alpha = 0.01, labels = V, verbose = TRUE)
pc.B
if (require(Rgraphviz)) {
## show estimated CPDAG
plot(pc.B, main = "Estimated CPDAG")
## plot(gmB\$g, main = "True DAG")
}
###########


To quote John Tukey:

The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.

That is, there does not exist a statistical method that is a simple as

causal_effect y x, int_validity="high" ext_validity="high"

If any one claims to have something like this, it's most likely snake oil. In some special settings, you can occasionally learn something about some types of causal effects from a cross-section, but your description is much too vague to recommend a particular course of action.

To start down this road, I would take a gander at:

1. Lance, P., D. Guilkey, A. Hattori and G. Angeles. (2014). How do we know if a program made a difference? A guide to statistical methods for program impact evaluation. Chapel Hill, North Carolina: MEASURE Evaluation.
2. Morgan, Stephen L. and Christopher Winship. 2015. Counterfactuals and Causal Inference: Methods and Principles for Social Research (Second Edition, Revised and Enlarged). Cambridge: Cambridge University Press.

The first is an accessible free pdf, the second is a more challenging book.

• This is the answer to the OP's question. – Alexis May 4 at 23:40