Yes. Are you arguing that the world does not have causal relationships? Such a world doesn't even make sense to me.
HN user
mistersheik
If you were to stop all of those things, you could surely stop the rain as well.
By the way, this is not true in general. Suppose B…F are sampled from Boolean variables with bias 0.5. A Boolean circuit like A = (sum(B,C,D,E,F)>3) + (not B and not C and… not F). A is correlated with all of its causes B through F. However, stopping all of its causes, causes A to turn on.
If you were to stop all of those things, you could surely stop the rain as well.
But, you typically can't intervene everywhere. For example, you may not have any power over the gardener who normally turns the sprinkler on. The point of interventions (like turning a sprinkler on) is that you can reason about what would happen.
We do have a great formalization of causality, which is Pearl's book.
Causal models are more powerful than associational models because they support interventions. That means that you can answer questions about what would happen if you were to "do(x)". This is different than asking the question about what would happen if you were to observe "x".
Let's look at a concrete example. Suppose in the real world, the gardener leaves the sprinkler off, the ground is dry.
If you were to observe that the sprinkler is on, you would deduce that the ground is wet. If you were to observe the wet ground, you would "abduce" that the sprinkler is on.
However, the interventional question: what if I were to turn on the sprinkler requires a causal model. In this case, the direction is critical. Turning on the sprinkler, wets the ground. Wetting the ground, does not turn on the sprinkler!
Causal models also have better invariants: unobserved causal children (say WetGround) leave their parents (say Sprinkler and Rain) independent. This is not necessarily true in an associational model. If Rain is correlated with WetGround is correlated with Sprinkler, then even when WetGround is unobserved, Rain gives you information about Sprinkler. Since our model has no other elements (such as a common cause between Sprinkler and Rain), then this transmission of information is totally wrong.
I couldn't tell if you were arguing against the utility of causal models or whether the real world exhibits causal relationships. If it's the latter, then it is ultimately a leap of faith based on our intuitive understanding of the world. All scientific experiments rely on the notion of cause and effect and interventional reasoning (experiments).
The example I use is the sprinkler. Then you don't need God to intervene :)
This is really well-written, so I looked up the author, and no surprise it's Judea Pearl.
Joshua, you're not just the PEP writer: You also helped a lot with the implementation! Anyway, it also makes me happy :) By the way, we really need someone to document our feature.
Hi, I implemented most of PEP448. We actually implemented
[*range(i) for i in range(5)]
and {**d for d in ds}
but it was removed ultimately because people in dev-python found it confusing. If you're interested in seeing that construction in Python, I suggest waiting until 3.5 gains some traction and then making a suggestion in python-ideas.