cmu-phil/tetrad

PC-LiNGAM Search Algorithm Availability

philosophiekatt opened this issue · 12 comments

Hello Tetrad Community & Developers,

I would like to use the PC-LiNGAM search algorithm. I see the source java file in tetrad > tetrad-lib > src > main > java > edu > cmu > tetrad > search > PcLingam.java. However, I have yet to determine how to locate this search algorithm in the Tetrad GUI.

I suspect I am not providing the correct inputs for the PC-LiNGAM algorithm to show up. The code suggests I need to provide a CPDAG and a dataset. However, prior to performing a search algorithm, I do not understand how I would be able to generate a CPDAG with my dataset without a preliminary search algorithm or manually linking each vertex with undirected edges. Even when I created a toy dataset and a CPDAG I did not see the PC-LiNGAM algorithm in the Search Box options.

Attached below is a 1) “toy” CPDAG I created from a subset of my real dataset and by manually connecting all vertices with undirected edges. And 2) the available search algorithms when I connect my “toy” dataset and my “toy” CPDAG to a search box.

1_toy_cpdag

2_search_algorithms

I’m performing a study similar to this one link wherein “the PC-LiNGAM algorithm implemented in the TETRAD V causal inference package was used to deduce a causal relationship between the spectral shift and the features included in the set provided by the results of the CBFS algorithm.” The dataset given to Tetrad in my current study and in the linked study are the chosen parameters resulting from a correlation-based feature selection (CBFS) analysis.

Is the PC-LiNGAM search algorithm still available in Tetrad 7.5.0? If so, is it possible to provide an example of the type of input required and/or provide feedback on what you recommend I try differently?

Thank you!
Sophia

You're right, it's not in the GUI! I recall I was going to look at that some time back but didn't. Let me double-check to make sure it's working correctly and put it in there.

Joe

Can I ask a question? Did you need the exact PcLiNGAM algorithm from the original paper or simply an algorithm that starts with a CPDAG generated by some algorithm and then orients the undirected edges using a non-Gaussian orientation? The issue is, we've learned a lot since that paper was published, and I think I could give a very nice algorithm now for that idea that improves performance. I could code that up in the next few days and make it available in a snapshot build.

We know a lot more now than we did about CPDAG search, and we also know a lot more than we did about pairwise non-Gaussian orientation.

Hello, a nice question! We do not need PCLiNGAM specifically. It was a method we had used in our group in the past and it had proven effective for generating causal relationship data from observational data taken our chemical simulation studies. However, if you have an idea for an improved methodology that could take a dataset, generate a CPDAG, and then utilize non-Gaussianity to suggest a DAG that would be great. I would be happy to test your idea and provide feedback! Thank you very much.

Sorry I ended up getting busy and dropped some issues. I'll try to work on this in the next few days.

Totally understandable, no worries. Thank you!

Hmm.... this issue just got deprioritized me from supervisor... I'll try to get to it when I have time later...

Ok thank you! Even if you're able just to re-instate the existing PC-LiNGAM algorithm into the GUI that would be incredibly helpful!

I looked at it this morning and realized what the issue was; the old algorithm was not that accurate and did not scale. So, I took a few minutes to fix the issues in it. As I said, we've learned a lot about CPDAG search in the last year and a half or so; I use the BOSS algorithm instead of PC for that now. Also, we've learned a lot about orienting undirected edges based on non-Gussianity judgments; I'm using the FASK left-right rule for it now.

I just put this back in the interface (PC-LiNGAM that is). I'm planning to release a new version of Tetrad early next week and will include this.

Thank you! I can also try the algorithms you suggest here and I will be on the lookout for the new version of Tetrad in the near future. Thank you again for your support and insight.

@philosophiekatt I Thought I'd let you know that for the version of Tetrad I just published, 7.6.1, I changed the name of PC-LiNGAM to BOSS-LiNGAM at the request of a colleague, who pointed out that it's using BOSS instead of PC now.

Let me know if I can close this issue now--I'm hoping for a sense of progress. ;-)

Looks like I can close it. If you have more questions, please open a new issue. :-)