Hi everybody,

in chapter 15 of the user guide under "Generating lists of transformed variables" there is an explanation of how to use the "^" operator to create a list of interaction effects. This is nice, but to the average user it might be surprising to read in the footnote "this construct does not work if neither D nor Z are of the the list type." The reason for this, AFAIK, is that if both D and Z are series objects, then D^Z is just the exponentiation of the corresponding values of D by Z, and so we get a single series in return with a totally different meaning. (And since this series is then anonymous, trying to assign it to a list type yields an error.)

I believe there are some little problems with this situation.

1) This is not my main point, but there might be a danger of inadvertently doing the exponentiation although it wasn't intended. Example:

<hansl>
open mroz87.gdt
# KL6 is a discrete number of children, WA is (pseudo-) continuous
inter = KL6 ^ WA    # note no explicit "list" type is indicated
</hansl>

This will create a series "inter" which has nothing to do with interaction effects. Possibly this could imply subtle bugs, if "inter" is mistakenly treated as a regressor list down the road.

Possible solutions for this problem: Perhaps mention this danger explicitly in the documentation. Also, why actually is the "^" operator overloaded with these very different things? Couldn't the interaction thing be indicated through, say, "^^" instead?

2) It's a bit of a pity that interactions through this mechanism aren't possible for single series, i.e. that 'list inter = KL6 ^ WA' currently must fail. It would be nice if this could be generalized, no?

Possible solutions for this second point: Agani, if we had a different and exclusive operator like "^^", then it would seem to be fairly easy to implement, right? Apart from that, I guess that a pretty straightforward workaround could be mentioned in the guide, namely something like:

list H = deflist(D) ^ Z

(which in the specific context above becomes: list inter = deflist(KL6) ^ WA, tested as working).

OK, so bottom line, I think we should add some remarks to the documentation, and then maybe discuss the pros and cons of having a separate operator.

thanks

sven
_______________________________________________
Gretl-devel mailing list -- gretl-devel@gretlml.univpm.it
To unsubscribe send an email to gretl-devel-le...@gretlml.univpm.it
Website: 
https://gretlml.univpm.it/postorius/lists/gretl-devel.gretlml.univpm.it/

Reply via email to