-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
do durational terms inside (any) operators produce reasonable summary stats? #42
Comments
I tried On the other hand, replacing
with results
Anyway, if we could get durational terms (primarily non-operators like |
Maybe related to use of Can these By the way, what are |
Okay, might be due to calls to the C_FN outside of |
With d532a3b results look more reasonable:
|
What durational terms' statistics mean inside operators that modify the network is an open question, and it's sometimes not 100% clear what they should be because they may depend on what happened before the last toggle.
|
For the purposes of the release, we may have to prioritise:
Also, I'm pretty sure I've rigged things so that if you try to initialise a term that requires |
@krivit, @chad-klumb i think this issue needs to be resolved before release. either these durational terms can be used in operators, or they can't (for now). the docs need to state what is currently true. |
@martinamorris , simply put, some combinations have ambiguous interpretations, that we need to think a lot more about. The priority as I see it is to make sure that the change statistics work correctly inside operator terms, which as far as I can tell they do, and that summary statistics work well outside of dynamic operators (e.g., Before 4.0, some terms would outright refuse to be used in a summary or target stat formula, and others in the formation and dissolution formulas. What we have here is therefore already a uniform gain in functionality. |
I don't think the behavior is correct in general, either for changestats or summary stats. The issue is not limited to durational terms inside durational operators, but would also occur for durational terms inside some types of cross-sectional operators. One basic problem is that propagating the top-level lasttoggle information on initialization and having terms inside operators take that at face value is fundamentally incorrect, at least for any reasonable interpretation of durational terms inside operators (including purely cross-sectional operators) that I can think of. To make progress on this would require deciding what durational terms inside operators should mean. In cases where the operator evaluates its submodel on some transformation of the network (possibly depending on network history in the durational operator case), I think the behavior of durational terms should match that of cross-sectional terms, in that everything is defined with respect to this transformed network. For example, A similar problem can arise with purely cross-sectional operators. Suppose we have a network with two node types, You can easily come up with cross-sectional examples where the nodes are the same but the edges are (in general) different, again showing that the current initialization is problematic. To fix this problem in general would, I think, require at least as big a change as suggested in statnet/ergm#325 (comment). There may also be operators that the above discussion does not neatly apply to, which would only complicate the matter further. Overall, I think fixing this now is not possible. The full scope of the problem should be carefully considered, and when a good solution is available, we can work on implementing it, but that will not be a 4.0 thing. |
thanks for the detailed response @chad-klumb. i agree with you, and i think this is actually (another) paper. so, the question remains:
i'm in favor of 3. |
I think if they're made available, people will use them, even if we tell them not to. For that reason I'd prefer 1., but any option is fine with me, as long as we're clear about them not working in general. |
How hard would it be to implement (1)? |
Actually, 1. would be problematic for removing offsets in EGMME (now done via operator terms) if a durational target is also included, so let's go with one of the other options :) |
@chad-klumb , thanks for the detailed write-up. This is exactly what I mean when I write above that it's not always clear what durational statistics mean in the operators. This is also why I only implemented extended state and signal propagation for a handful of operator terms in As you write, operators that manipulate network nodes will require some kind of a remapping API and a operators that manipulate edges require precisely defining what is wanted. This will have to wait until later. |
What can't wait is the documentation. What do we want that to say?
|
I would say it's not supported and produces undefined behavior. |
Agreed with @chad-klumb; in particular, we should warn the user not to nest temporal operators. We probably also want to add some tests (e.g., |
By "nest temporal operators" are you referring to this:
|
No, more like |
So I'm going to say that the use of durational terms during estimation is not currently supported but they can be used as targets, monitors, etc.. Is that correct? |
What's confusing me is that the stub currently says:
That reflects some partial editing. So I can't tell if these terms are
|
I think some of them might work at this point, but the capability is largely untested. |
Ok, for now I'm going with this:
|
I think that's a bit misleading, since they are fine during estimation; it's just not always clear what they mean when inside operators. |
If we can't say what they mean -- i.e., how to interpret the coefficients, I would say they are "unsupported". I'm imagining someone writing to This should just push us to understand, and incorporate in our materials, the interpretation of these terms. |
The way I see it, "does not support" doesn't have the same connotations as "is unsupported". |
ok then. for now, it's not a distinction we need to parse. |
If not, this may be a problem for #19, because the targets formula may, in general, have durational terms (e.g.
mean.age
).To give a trivial example,
produces
The first value is presumably correct. The others, not so much. I am surprised that basically trivial cross-sectional operators don't work here (#19 would be a similarly trivial operator, not anything with its own complicated durational content).
The text was updated successfully, but these errors were encountered: