You do not provide mlm.influence() so your code can't be reproduced. Or did you mean to put lm.influence() in the formals to your hatvalues.mlm ?
If yes, then 1) you have a typo 2) lm.influence doesn't allow you to pass on arguments, maybe try influence.lm instead. Elai On Thu, Feb 9, 2012 at 1:42 PM, Michael Friendly <frien...@yorku.ca> wrote: > 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 > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.