Causal Models For Heterogeneous Data