What is the difference of a prediction that is made with a causal model and a
non-causal model? Suppose we intervene on the predictor variables or change the
whole environment. The predictions from a causal model will in general work as
well under interventions as for observational data. In contrast, predictions
from a non-causal model can potentially be very wrong if we actively intervene
on variables. Here, we propose to exploit this invariance of a prediction under
a causal model for causal inference: given different experimental settings (for
example various interventions) we collect all models that do show invariance in
their predictive accuracy across settings and interventions. The causal model
will be a member of this set of models with high probability. This approach
yields valid confidence intervals for the causal relationships in quite general
scenarios. We examine the example of structural equation models in more detail
and provide sufficient assumptions under which the set of causal predictors
becomes identifiable. We further investigate robustness properties of our
approach under model misspecification and discuss possible extensions. The
empirical properties are studied for various data sets, including large-scale
gene perturbation experiments