Dear Ivan,

Thank you for addressing my questions with your usual thoroughness. Please see below:

On 2024-09-21 2:51 p.m., Ivan Krylov wrote:
[You don't often get email from ikry...@disroot.org. Learn why this is 
important at https://aka.ms/LearnAboutSenderIdentification ]

Caution: External email.


Dear Prof. John Fox,

В Sat, 21 Sep 2024 12:47:49 -0400
John Fox <j...@mcmaster.ca> пишет:

      NextMethod(formula(object),  data=eval(object$call$data),
                 contrasts.arg=object$contrasts)

The use of NextMethod worries me a bit. It will work as intended as
long as everyone gives fully-named arguments to the generic, without
relying on positional or partial matching, but may give unexpected
results otherwise:

That's not an issue for car:::model.matrix.lme(), which isn't registered and so isn't accessible to users, but could be a problem if model.matrix.lme() is incorporated in the nlme package, as I suggested. An alternative that I think should work would be to call

model.matrix(formula(object), data=eval(object$call$data),
                 contrasts.arg=object$contrasts, ...)

rather than NextMethod() from model.matrix.lme().

. . .

Evaluating object$call$data in the environment of the suggested
nlme:::model.matrix.lme function may also not work right. Without an
explicit copy of the data, the best environment to evaluate it in would
be parent.frame().

I'm afraid that I don't understand the suggestion. Isn't parent.frame() the default for the envir argument of eval()? Do you mean the parent frame of the call to model.matrix.lme()?

I tested car:::Anova.lme()/model.matrix.lme() with models fit to data in the global environment, in an attach()ed data frame, and within another function(), and didn't encounter any problems. For example:

------ snip -----

> f <- function(){
+   OD <- Orthodont
+   m7 <- with(OD, lme(distance ~ Sex, random = ~ 1 | Subject,
+                      contrasts=list(Sex=contr.sum)))
+   Anova(m7, type=3)
+ }

> f()
Analysis of Deviance Table (Type III tests)

Response: distance
                Chisq Df Pr(>Chisq)
(Intercept) 3910.8377  1  < 2.2e-16
Sex            9.2921  1   0.002301

------ snip -----

Best,
 John


--
Best regards,
Ivan

[1] https://github.com/HenrikBengtsson/Wishlist-for-R/issues/44

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to