You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First we demonstrate our implementation of equation 69 (simple_augmentation_mechanism) and Algorithm 2 (augment_from_mechanism) on a simple example, applying Algorithm 2 and equation 69 to the graph in Figure A3 (g) to obtain the graph in Figure A3 (h)
Second, we demonstrate our implementation on a more sophisticated example, applying Algorithm 2 and equation 69 to the graph in Figure A3 (m), but in this case, we do not obtain Figure A3 (n).
We argue for why we believe this is due to a flaw in equation 69 (or our understanding of it), and suggest a fix. Augmentation Mechanisms #256
In the HCM paper, a subunit variable $\nu$ with a non-empty subunit parent set $\text{pa}_s(\nu)$ is promoted to a conditional $Q$ variable $Q^{\nu | \text{pa}_s(\nu)}$. For simplicity, let's consider the case where we want an unconditional promoted variable $\tilde{Q}^\nu$ (i.e. script R in (69) is empty), and so must augment it into the collapsed model.
Algorithm 2 in the paper specifies how to augment the collapsed model. It explicitly says the desired augmented variable $\tilde{Q}$ must be given as an input. However, it also assumes the mechanism for $\tilde{Q}$ is known. Because they don't give an explicit algorithm for deriving the mechanism, it should be also treated as an input to the algorithm. With the mechanism also given as input, Algorithm 2 is easy enough to implement (it is called augment_from_mechanism in the code shown below).
Although not explicitly stated as an Algorithm, one could read J.1 from the appendix as the derivation of the mechanism for an augmented variable. From Equation (69), the mechanism for $Q^\nu$ consists of the promoted $Q$ variables of $\nu$ and its subunit parents $\text{pa}_s(\nu)$. This is easily implemented as:
For simple cases, this combined with augment_from_mechanism reproduces the examples in the paper. For instance, consider Figure A3 (h), which augments variable Y to the HCM in A3 (g).
The collapsed model is:
The simple augmentation mechanism code finds the mechanism shown in A3 (h), and together with augment_from_mechanism reproduces A3 (h) (the rendering of NxMixedGraph.draw() is a bit weird, so I also printed the edges)
Now let's look at collapsing and augmenting A3 (m) to get A3 (n). This example has two augmented variables, $Q^a$ and $Q^y$, and importantly the augmented $Q^a$ is in the mechanism of the augmented $Q^y$. Because of this, let's first augment $Q^a$ and then augment $Q^y$.
The HCM and collapsed model are:
If we use the mechanisms shown in Figure A3 (n), we reproduce A3 (n) after two steps of augmentation:
However, if we use the simple_augmentation_mechanism code derived from Equation (69), we do not reproduce A3 (n)!
In particular, the mechanism for the promoted $Q^y$ variable is incorrect. Note that Equation (69), and hence also simple_augmentation_mechanism is based on the subunit graph, which is not modified by the first augmentation of $Q^a$. Therefore, $Q^a$ cannot appear in the mechanism of $Q^y$: only $Q^{a|z}$ because Z is a subunit parent of A. Similarly, Z is not a subunit direct ancestor of Y in the HCM A3 (m), $Q^z$ should not be in the mechanism for the augmented $Q^y$, according to (69). However, in their Figure A3 (n) $Q^z$is in the mechanism of $Q^y$ indirectly through $Q^a$. Remember that $Q^a$ is a deterministic function of its parents, so $Q^a$ can be equivalently replaced by its parents in the mechanism of $Q^y$.
I am working on a recursive algorithm for augmentation to address this inconsistency, discussed in Issue #248 (Augmented variable mechanism)
The text was updated successfully, but these errors were encountered:
When applying the correct augmentation mechanism (I originally did not catch the distinction between 'subunit parents' and 'direct subunit ancestors'), these are consistent. There is, however, an ambiguity in the order in which you augment the two variables here. They are ultimately equivalent, due to the deterministic relations, but resulting graph topologies are different and therefore the order matters for identification. Thus when searching over possible augmentations, will need to check different orderings when augmenting multiple variables.
This issue contains 3 parts.
First we demonstrate our implementation of equation 69 (

simple_augmentation_mechanism
) and Algorithm 2 (augment_from_mechanism
) on a simple example, applying Algorithm 2 and equation 69 to the graph in Figure A3 (g) to obtain the graph in Figure A3 (h)Second, we demonstrate our implementation on a more sophisticated example, applying Algorithm 2 and equation 69 to the graph in Figure A3 (m), but in this case, we do not obtain Figure A3 (n).

We argue for why we believe this is due to a flaw in equation 69 (or our understanding of it), and suggest a fix. Augmentation Mechanisms #256
In the HCM paper, a subunit variable$\nu$ with a non-empty subunit parent set $\text{pa}_s(\nu)$ is promoted to a conditional $Q$ variable $Q^{\nu | \text{pa}_s(\nu)}$ . For simplicity, let's consider the case where we want an unconditional promoted variable $\tilde{Q}^\nu$ (i.e. script R in (69) is empty), and so must augment it into the collapsed model.
Algorithm 2 in the paper specifies how to augment the collapsed model. It explicitly says the desired augmented variable$\tilde{Q}$ must be given as an input. However, it also assumes the mechanism for $\tilde{Q}$ is known. Because they don't give an explicit algorithm for deriving the mechanism, it should be also treated as an input to the algorithm. With the mechanism also given as input, Algorithm 2 is easy enough to implement (it is called
augment_from_mechanism
in the code shown below).Although not explicitly stated as an Algorithm, one could read J.1 from the appendix as the derivation of the mechanism for an augmented variable. From Equation (69), the mechanism for$Q^\nu$ consists of the promoted $Q$ variables of $\nu$ and its subunit parents $\text{pa}_s(\nu)$ . This is easily implemented as:

For simple cases, this combined with



augment_from_mechanism
reproduces the examples in the paper. For instance, consider Figure A3 (h), which augments variable Y to the HCM in A3 (g).The collapsed model is:
The simple augmentation mechanism code finds the mechanism shown in A3 (h), and together with
augment_from_mechanism
reproduces A3 (h) (the rendering of NxMixedGraph.draw() is a bit weird, so I also printed the edges)Now let's look at collapsing and augmenting A3 (m) to get A3 (n). This example has two augmented variables,$Q^a$ and $Q^y$ , and importantly the augmented $Q^a$ is in the mechanism of the augmented $Q^y$ . Because of this, let's first augment $Q^a$ and then augment $Q^y$ .
The HCM and collapsed model are:
If we use the mechanisms shown in Figure A3 (n), we reproduce A3 (n) after two steps of augmentation:
However, if we use the
simple_augmentation_mechanism
code derived from Equation (69), we do not reproduce A3 (n)!In particular, the mechanism for the promoted$Q^y$ variable is incorrect. Note that Equation (69), and hence also $Q^a$ . Therefore, $Q^a$ cannot appear in the mechanism of $Q^y$ : only $Q^{a|z}$ because Z is a subunit parent of A. Similarly, Z is not a subunit direct ancestor of Y in the HCM A3 (m), $Q^z$ should not be in the mechanism for the augmented $Q^y$ , according to (69). However, in their Figure A3 (n) $Q^z$ is in the mechanism of $Q^y$ indirectly through $Q^a$ . Remember that $Q^a$ is a deterministic function of its parents, so $Q^a$ can be equivalently replaced by its parents in the mechanism of $Q^y$ .
simple_augmentation_mechanism
is based on the subunit graph, which is not modified by the first augmentation ofI am working on a recursive algorithm for augmentation to address this inconsistency, discussed in Issue #248 (Augmented variable mechanism)
The text was updated successfully, but these errors were encountered: