diff --git a/docs/src/library.md b/docs/src/library.md index 9c48270..b29f1fc 100644 --- a/docs/src/library.md +++ b/docs/src/library.md @@ -5,6 +5,7 @@ ```@docs dsep cpdag +alt_cpdag vskel has_recanting_witness backdoor_criterion @@ -72,3 +73,24 @@ CausalInference.ordered_edges CausalInference.insorted CausalInference.removesorted! ``` + +## Adjustment +```@docs +ancestors +descendants +alt_test_dsep +test_covariate_adjustment +alt_test_backdoor +find_dsep +find_min_dsep +find_covariate_adjustment +find_backdoor_adjustment +find_frontdoor_adjustment +find_min_covariate_adjustment +find_min_backdoor_adjustment +find_min_frontdoor_adjustment +list_dseps +list_covariate_adjustment +list_backdoor_adjustment +list_frontdoor_adjustment +``` diff --git a/src/CausalInference.jl b/src/CausalInference.jl index 80c61c4..5eecbbe 100644 --- a/src/CausalInference.jl +++ b/src/CausalInference.jl @@ -4,7 +4,7 @@ using Graphs.SimpleGraphs using Combinatorics using Base.Iterators -export ancestors, descendants, alt_test_dsep, test_covariate_adjustment, alt_test_backdoor, find_dsep, find_min_dsep, find_covariate_adjustment, find_backdoor_adjustment, find_min_covariate_adjustment, find_min_backdoor_adjustment, find_frontdoor_adjustment, list_dseps, list_covariate_adjustment, list_backdoor_adjustment, list_frontdoor_adjustment +export ancestors, descendants, alt_test_dsep, test_covariate_adjustment, alt_test_backdoor, find_dsep, find_min_dsep, find_covariate_adjustment, find_backdoor_adjustment, find_frontdoor_adjustment, find_min_covariate_adjustment, find_min_backdoor_adjustment, find_min_frontdoor_adjustment, list_dseps, list_covariate_adjustment, list_backdoor_adjustment, list_frontdoor_adjustment export dsep, skeleton, gausscitest, dseporacle, partialcor export unshielded, pcalg, vskel export cpdag, alt_cpdag diff --git a/src/gensearch.jl b/src/gensearch.jl index 02f48f5..384e0bc 100644 --- a/src/gensearch.jl +++ b/src/gensearch.jl @@ -164,7 +164,7 @@ end """ find_covariate_adjustment(g, X, Y, I = Set{eltype(g)}(), R = setdiff(Set(vertices(g)), X, Y)) -Find a covariate adjustment set `Z` with ``I ⊆ Z subseteq ⊆ R`` for sets of vertices `X` and `Y` in `g`, else return `false`. +Find a covariate adjustment set `Z` with ``I ⊆ Z ⊆ R`` for sets of vertices `X` and `Y` in `g`, else return `false`. Based on the algorithmic approach proposed in https://arxiv.org/abs/1803.00116. """ diff --git a/test/gensearch.jl b/test/gensearch.jl index 1d5e216..827b79e 100644 --- a/test/gensearch.jl +++ b/test/gensearch.jl @@ -34,9 +34,10 @@ Yvec = [4] @test find_min_dsep(g1, X, Y) == Set([2,5]) @test find_covariate_adjustment(g1, Xint, Yint) == Set([5,6]) @test find_backdoor_adjustment(g1, X, Y) == Set([5,6]) + @test find_frontdoor_adjustment(g1, X, Y) == Set([2,3,7]) @test find_min_covariate_adjustment(g1, Xvec, Yvec) == Set(5) @test find_min_backdoor_adjustment(g1, Xint, Yvec) == Set(5) - @test find_frontdoor_adjustment(g1, X, Y) == Set([2,3,7]) + @test find_min_frontdoor_adjustment(g1, X, Y) == Set(3) @test Set(list_dseps(g1, Xvec, Y)) == Set([Set([3,6]), Set([2,6]), Set([2,3,6]), Set([3,6,7]), Set([2,6,7]), Set([2,3,6,7]), Set([3,5]), Set([2,5]), Set([2,3,5]), Set([3,5,7]), Set([2,5,7]), Set([2,3,5,7]), Set([3,5,6]), Set([2,5,6]), Set([2,3,5,6]), Set([3,5,6,7]), Set([2,5,6,7]), Set([2,3,5,6,7])]) @test Set(list_covariate_adjustment(g1, X, Yint)) == Set([Set([5,7]), Set([5]), Set([6]), Set([6,7]), Set([5,6]), Set([5,6,7])]) @test Set(list_backdoor_adjustment(g1, Xvec, Yint)) == Set([Set([5]), Set([6]), Set([5,6])]) @@ -67,8 +68,10 @@ Y = Set(8) @test find_covariate_adjustment(g2, X, Y, Set(7), Set([1,2,3,4,5])) == false @test find_covariate_adjustment(g2, X, Y, Set{Int64}(), Set([3,4,5,7])) == Set([3,4,5]) @test find_backdoor_adjustment(g2, X, Y) == Set([1,2,3,4,5]) + @test find_frontdoor_adjustment(g2, X, Y) == Set(7) @test find_min_covariate_adjustment(g2, X, Y) == Set([3,4]) @test find_min_backdoor_adjustment(g2, X, Y) == Set([3,4]) + @test find_min_frontdoor_adjustment(g2, X, Y) == Set(7) @test Set(list_dseps(g2, X, Y, Set{Int64}(), Set{Int64}([3,4,5,7]))) == Set([Set([4, 7, 3]), Set([5, 4, 7]), Set([5, 4, 7, 3])]) @test Set(list_covariate_adjustment(g2, Set([6]), Set([8]), Set(Int[]), setdiff(Set(1:8), [1,2]))) == Set([Set([3,4]), Set([4,5]), Set([3,4,5])]) @test Set(list_backdoor_adjustment(g2, Set([6]), Set([8]), Set(Int[]), setdiff(Set(1:8), [1,2]))) == Set([Set([3,4]), Set([4,5]), Set([3,4,5])])