Thanks for the quick response! And apologies for not posting the full code and data. Data are here and code is attached.
Good to know exactly what the tolerance argument is in reference to (I assumed it was computer arithmetic but didn't know exactly how that related to comparing nesting of models).
A brief summary of the experiment:
These are data from a transplant experiment with Clarkia xantiana in southern California, similar in design to the experiment Ryan Briscoe Runquist was analyzing with Aster previously. I had six sites (with six blocks per site), three seed sources (populations), and a caging treatment to test for effects of biotic interactions across the species' geographic range. The aster LHS graph is: germination, early survival, late survival, survival to flowering, any fruits produced, total seeds produced.
Re: nesting terms:
I believe R / aster may be handling the "/" operator correctly -- as I understand it, its functionality for nesting works in base R (eg, lm()). In this case, I think it just translates to site:block, but keeps each set of blocks within each site, since the blocks are not uniquely coded (i.e., blocks are simply labeled 1-6 in each site). If my blocks were uniquely coded (eg, s1.1, s1.2,...s4.1, s4.2,...), I could simply include site + site:block_unique to nest block properly. I include an example in the attached file. Indeed, the models using site/block and site:block_unique appear to be the same model.
Interestingly, however, while the "/" operator seems to "alert" R / aster that it shouldn't try to include block interactions across sites (ie, it keeps blocks within their sites), when I use unique block IDs, the "nonsense" predictor variables (eg, site1 : site2.block1, site2 : site3.block4) are identified as aliased and dropped. It seems aster tries to include them but then drops them (but maybe that's what R does behind the scenes and doesn't tell us).
Re: aliased terms
I think I understand why total_seeds:siteWB would be aliased, as there were 0 seeds collected from that site, so it would be aliased with the total_seeds:siteWB:Seed variables in that site, which, obviously, had zero seeds collected. I guess I'm a little unclear when we should care much about aliased terms (beyond examples like those in the aster tutorial) -- is it sometimes simply unavoidable?
Re: tolerance, I still have to adjust the argument exponent to 0.7 even when testing main effects in simple models like,
t1a.mains <- aster(resp ~ varb +
total_seeds:site +
total_seeds:Seed +
total_seeds:Caged,