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.
Best Answer
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") } ###########
Similar Posts:
- Solved – Causal inference from a cross sectional study design
- Solved – Causal inference from a cross sectional study design
- Solved – remedy for removing autocorrelations from residuals of seasonally fitted ARIMA model
- Solved – remedy for removing autocorrelations from residuals of seasonally fitted ARIMA model
- Solved – Visualizing results from multiple latent class models