Comments (8)
Sorry, I should say, if you can find a published reference for it, use that. Or at least describe the procedure in the documentation. I think.
from causal-learn.
Sure, thanks so much for your suggestions. I've added your paper as the reference for maxP and definiteMaxP (uc_rule). Please let me know if anything is wrong.
BTW, I'm not totally sure that our default setting is PCMAX, since the default value for 'uc_rule' is 0, as follows:
def pc( data: ndarray, alpha=0.05, indep_test=fisherz, stable: bool = True, uc_rule: int = 0, uc_priority: int = 2, mvpc: bool = False, correction_name: str = 'MV_Crtn_Fisher_Z', background_knowledge: BackgroundKnowledge | None = None, verbose: bool = False, show_progress: bool = True, node_names: List[str] | None = None, ):
where
uc_rule: how unshielded colliders are oriented. Default: 0.
0: run uc_sepset.
1: run maxP. Orient an unshielded triple X-Y-Z as a collider with an additional CI test.
2: run definiteMaxP. Orient only the definite colliders in the skeleton and keep track of all the definite non-colliders as well.
It's very likely that I misunderstood something, as I'm not familiar with PCMAX. It might be the case that we are using PCMAX somewhere else?
from causal-learn.
Here is the performance profile I get--before I grabbed the latest repository CL I was getting near identical performance between default PC_CL ("causality Lab") and Tetrad PCMAX_CC ("causal-cmd" = Tetrad); now it goes back and forth a little (though that could just be statistical variation do due a difference of the order in which operations are done). I include some other CC algorithms as well in the comparison. Maybe I don't understand what "UC" is--let me look it up.
`Algorithms:
- PC_CL
- PC_CC
- PCMAX_CC
- FGES_CC
- GRaSP_CC
Weighting of Statistics:
Write weighting here
AVERAGE STATISTICS:
All edges
Alg AP AR AHP AHPCE AHR AHRCE McAdj McArr F1Adj F1Arr SHD E
1 0.97 0.69 0.81 0.84 0.51 0.76 0.78 0.62 0.80 0.63 16.10
2 0.96 0.69 0.44 0.46 0.31 0.45 0.78 0.31 0.80 0.36 25.10
3 0.96 0.69 0.84 0.88 0.56 0.82 0.78 0.66 0.80 0.67 15.70
4 0.84 0.84 0.69 0.81 0.68 0.81 0.79 0.65 0.83 0.68 18.80
4 0.99 0.87 0.99 0.99 0.84 0.96 0.91 0.90 0.93 0.91 5.40`
from causal-learn.
Sorry, this is for a problem with 20 nodes, 40 edges, 1000 samples, averaged over 10 runs.
p = 20
a = 4
d = a / (p - 1)
n = 1000
runnum = 10
from causal-learn.
Sorry, linear, Gaussian, using Fisher Z for PC_CL and PCMAX_CC--but perhaps the tests are behaving differently in the two platforms--I'll look into it...
from causal-learn.
Anyway, I am very curious about this. If you are getting PCMAX performance from the PC sepsets step alone (without maxp) that is something I don't know how to do. Wayne Lam did a study of this for his MA thesis in Python and didn't see how to do it either, with several variants of the procedure. So I need to figure out exactly what the CL code is doing. I'll forward future comments offline and close this.
from causal-learn.
Hi Joe, thanks for this great discovery! I'm also very curious about that. I've asked several contributors of PC-CL and we are not aware of the reason yet, as we thought only by selecting 'maxP' or 'definiteMaxP' as the 'uc_rule' (how to orient unshielded colliders) can we perform strategies based on the maximization of the P-value.
We are looking into the detailed code to see the reason and will update you ASAP.
from causal-learn.
Yeah I get the same performance whether I set ucrule to 0 or 1. Setting it to 2 gives a better result, close to GRASP_CC but with lower recalls.
Alg AP AR AHP AHPCE AHR AHRCE McAdj McArr F1Adj F1Arr SHD E 1 1.00 0.71 0.95 0.95 0.52 0.73 0.81 0.68 0.83 0.67 12.40
from causal-learn.
Related Issues (20)
- [RFC, META-ISSUE] Complete continuous integration (CI) for unit-testing, documentation, and test coverage HOT 4
- QUESTION: To get DAG/Graph from FCM-based methods HOT 1
- Add Error Handling for cit.py line 165/166 HOT 3
- Derivation of the Fisher-z independence test HOT 1
- the direct of two nodes in adjacency matrix which is result of ICALiNGAM HOT 3
- Passing required domain knowledge using add_required_by_node HOT 3
- GeneralGraph.subgraph bug HOT 1
- math domain error HOT 6
- I could add cluster background knowledge HOT 2
- p-values for edges using FCI HOT 1
- operands could not be broadcast together with shapes error with GES HOT 1
- PC algorithm graph matrix syntax
- GES graph node names issue HOT 1
- PC algorithm logic HOT 2
- Generalized score with mixed data HOT 1
- Using background knowledge makes FCI algorithm slower HOT 4
- Using scoring function 'local_score_marginal_multi' on ges() function gives error HOT 5
- PC algorithm and Meek rules HOT 9
- FAS does not use required edges anymore HOT 3
- Question: Clarification on Edge properties from FCI algo HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from causal-learn.