The diagram is a causal Bayes net which is a DAG so it can’t contain cycles. Your diagram contains a cycle between R and Z. The diagram I had in mind when writing the post was something like:
which is a thermostat over a single timestep.
If you wanted to have a feedback loop over multiple timesteps, you could conjoin several of these diagrams:
Each node along the top row is the temperature at successive times. Each node along the bottom row is the controller state at different times.
The diagram is a causal Bayes net which is a DAG so it can’t contain cycles. Your diagram contains a cycle between R and Z.
Indeed. So much the worse for causal Bayes nets. People have tried to extend Pearl-type causal analysis to cyclic causal graphs, but have not got very far. The limits of our tools are not the limits of the world.
I am not convinced by the idea of unrolling the graph in time. Outside of digital electronics, time is continuous [1]. There is no time step for the room thermostat. For more complicated systems, the causal relationships you see when you discretise time may vary depending on the chosen time step. Continuous time and differential equations are the right abstraction.
Outside of digital electronics, time is continuous
Oh, I see the misunderstanding! So, what you can do here is fix the issue by taking the limit as the time step goes to 0, or equivalently, saying (Temperature) directly affects both and (Regulator), while affects .
What we need to do here is remember that both and are (possibly continuous) functions of (time), and think of these as showing at one point in time. The important fact about this system is can’t affect directly/instantaneously (which violates causality), but it can affect (or in discrete time, ). For example, your thermostat might control how much electricity travels through a coil to heat your room. However, it can’t instantly bump the temperature up by 20 degrees. This would be a logical contradiction— clearly can’t force to be 20 degrees higher than… . just doesn’t work.
The unrolled loop still should not have the arrow between S and R, and should have the feedback, because the controller is sensing the outcome. Unrolled it should go: S1 → Z1, R1->Z1, Z1 → R2, R2 → Z2, S2-> Z2 …
The diagram is a causal Bayes net which is a DAG so it can’t contain cycles. Your diagram contains a cycle between R and Z. The diagram I had in mind when writing the post was something like:
which is a thermostat over a single timestep.
If you wanted to have a feedback loop over multiple timesteps, you could conjoin several of these diagrams:
Each node along the top row is the temperature at successive times. Each node along the bottom row is the controller state at different times.
Indeed. So much the worse for causal Bayes nets. People have tried to extend Pearl-type causal analysis to cyclic causal graphs, but have not got very far. The limits of our tools are not the limits of the world.
I am not convinced by the idea of unrolling the graph in time. Outside of digital electronics, time is continuous [1]. There is no time step for the room thermostat. For more complicated systems, the causal relationships you see when you discretise time may vary depending on the chosen time step. Continuous time and differential equations are the right abstraction.
It would not be helpful to bring up speculations about the ultimately discrete nature of space-time on the Planck scale.
Oh, I see the misunderstanding! So, what you can do here is fix the issue by taking the limit as the time step goes to 0, or equivalently, saying (Temperature) directly affects both and (Regulator), while affects .
What we need to do here is remember that both and are (possibly continuous) functions of (time), and think of these as showing at one point in time. The important fact about this system is can’t affect directly/instantaneously (which violates causality), but it can affect (or in discrete time, ). For example, your thermostat might control how much electricity travels through a coil to heat your room. However, it can’t instantly bump the temperature up by 20 degrees. This would be a logical contradiction— clearly can’t force to be 20 degrees higher than… . just doesn’t work.
The unrolled loop still should not have the arrow between S and R, and should have the feedback, because the controller is sensing the outcome. Unrolled it should go: S1 → Z1, R1->Z1, Z1 → R2, R2 → Z2, S2-> Z2 …