[R] passing an extra argument to an S3 generic
Michael Friendly
friendly at yorku.ca
Thu Feb 9 21:42:00 CET 2012
I'm trying to write some functions extending influence measures to
multivariate linear models and also
allow subsets of size m>=1 to be considered for deletion diagnostics.
I'd like these to work roughly parallel
to those functions for the univariate lm where only single case deletion
(m=1) diagnostics are considered.
Corresponding to stats::hatvalues.lm, the S3 method for class "lm" objects,
> hatvalues <-function (model, ...)
UseMethod("hatvalues")
> hatvalues.lm <-
function (model, infl = lm.influence(model, do.coef = FALSE), ...)
{
hat <- infl$hat
names(hat) <- names(infl$wt.res)
hat
}
I have, for class "mlm" objects
hatvalues.mlm <- function(model, m=1, infl=mlm.influence(model, m=m,
do.coef = FALSE), ...)
{
hat <- infl$H
m <- infl$m
names(hat) <- if(m==1) infl$subsets else apply(infl$subsets,1,
paste, collapse=',')
hat
}
where mlm.influence() does the calculations, but also allows the m=
argument to specify subset size.
Yet when I test this I can't seem to pass the m= argument directly, so
that it gets stuffed in to the infl=
call to mlm.influence.
# fit an mlm
library(heplots)
Rohwer2 <- subset(Rohwer, subset=group==2)
rownames(Rohwer2)<- 1:nrow(Rohwer2)
Rohwer.mod <- lm(cbind(SAT, PPVT, Raven) ~ n+s+ns+na+ss, data=Rohwer2)
> class(Rohwer.mod)
[1] "mlm" "lm"
## this doesn't work, as I would like it to, calling the hatvalues.mlm
method, but passing m=2:
> hatvalues(Rohwer.mod, m=2)
Error in UseMethod("hatvalues") :
no applicable method for 'hatvalues' applied to an object of class
"c('double', 'numeric')"
I don't understand why this doesn't just call hatvalues.mlm, since
Rohwer.mod is of class "mlm".
# These work -- calling hatvalues.mlm explicitly, or passing the infl=
argument with the call to
# mlm.influence
> hatvalues.mlm(Rohwer.mod, m=2)
> hatvalues(Rohwer.mod, infl=mlm.influence(Rohwer.mod,m=2))
Can someone help me understand what is wrong and how to make the .mlm
method allow m= to be passed
directly to the infl= computation?
thx,
-Michael
--
Michael Friendly Email: friendly AT yorku DOT ca
Professor, Psychology Dept.
York University Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street Web: http://www.datavis.ca
Toronto, ONT M3J 1P3 CANADA
More information about the R-help
mailing list