Fox, John
2019-Sep-04 14:19 UTC
[R] [effects] allEffects does not accept integer value for xlevels
Dear Gerrit, Yes, that appears to be a bug in Effect() -- too bad that it wasn't discovered earlier because a new version of the package was submitted yesterday, but thank you for the bug report. We'll fix the bug, but until then a work-around is to specify the number of levels for each numeric predictor, as in allEffects(mod.cowles, xlevels=list(neuroticism=4, extraversion=4)) I used 4 levels here to verify that this works correctly, since 5 is the default. As well, although unrelated to this bug, you might take a look at predictorEffects(), which we recommend in preference to allEffects(). Best, John -------------------------------------- John Fox, Professor Emeritus McMaster University Hamilton, Ontario, Canada Web: socialsciences.mcmaster.ca/jfox/> -----Original Message----- > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Gerrit > Eichner > Sent: Wednesday, September 4, 2019 9:25 AM > To: r-help at r-project.org > Subject: [R] [effects] allEffects does not accept integer value for > xlevels > > Dear list, > > citing from allEffects' help page (of package effects 4.1-2): > "If xlevels=n is an integer, then each numeric predictor is represented by > n equally spaced values rounded to 'nice' numbers." > > > However, adapting the first example from allEffects' help page throws an > an error: > > mod.cowles <- glm(volunteer ~ sex + neuroticism*extraversion, > data=Cowles, family=binomial) allEffects(mod.cowles, > xlevels=5) Error in xlevels[[name]] : subscript out of bounds > > > It appears to me that the cause is buried in effects:::Analyze.model > > in or close to the the lines > > if (is.numeric(xlevels) & length(xlevels) == 1L) { > levs <- xlevels > for (name in focal.predictors) xlevels[[name]] <- levs > } > > > > where xlevels -- while not being a list in this case -- is subscripted by > xlevels[[name]]. > > Is anyone aware of a workaround (without having to specify all numeric > predictors of the used model explicitly in a list and giving it to xlevels > when calling allEffects), and without having to write my own Analyze.model > function? ;-) > > > Thx in advance and best regards -- Gerrit > > > > PS: sessionInfo() > > R version 3.6.1 (2019-07-05) > Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 > (build 18362) > > Matrix products: default > > Random number generation: > RNG: Mersenne-Twister > Normal: Inversion > Sample: Rounding > > locale: > [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 [3] > LC_MONETARY=German_Germany.1252 LC_NUMERIC=C [5] > LC_TIME=German_Germany.1252 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] effects_4.1-2 carData_3.0-2 > > loaded via a namespace (and not attached): > [1] Rcpp_1.0.2 lattice_0.20-38 MASS_7.3-51.4 grid_3.6.1 > > [5] DBI_1.0.0 nlme_3.1-141 survey_3.36 > estimability_1.3 > [9] minqa_1.2.4 nloptr_1.2.1 Matrix_1.2-17 boot_1.3-23 > > [13] splines_3.6.1 lme4_1.1-21.9001 survival_2.44-1.1 compiler_3.6.1 > [17] colorspace_1.4-1 mitools_2.4 nnet_7.3-12 > > > --------------------------------------------------------------------- > Dr. Gerrit Eichner Mathematical Institute, Room 212 > gerrit.eichner at math.uni-giessen.de Justus-Liebig-University Giessen > Tel: +49-(0)641-99-32104 Arndtstr. 2, 35392 Giessen, Germany > http://www.uni-giessen.de/eichner > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Rolf Turner
2019-Sep-04 21:39 UTC
[R] [effects] allEffects does not accept integer value for xlevels
I'm obviously not understanding something here, but it seems to me that the conjecture>>> It appears to me that the cause is buried in effects:::Analyze.model >>> >>> in or close to the the lines >>> >>> if (is.numeric(xlevels) & length(xlevels) == 1L) { >>> levs <- xlevels >>> for (name in focal.predictors) xlevels[[name]] <- levs >>> } >>> >>> >>> >>> where xlevels -- while not being a list in this case -- >>> is subscripted by xlevels[[name]].is not correct. There is no problem with using [[...]] to extract entries from vectors. E.g.: x <- 1:3 names(x) <- c("mung","gorp","clyde") x[["gorp"]] produces [1] 2 cheers, Rolf On 5/09/19 2:19 AM, Fox, John wrote:> Dear Gerrit, > > Yes, that appears to be a bug in Effect() -- too bad that it wasn't discovered earlier because a new version of the package was submitted yesterday, but thank you for the bug report. > > We'll fix the bug, but until then a work-around is to specify the number of levels for each numeric predictor, as in > > allEffects(mod.cowles, xlevels=list(neuroticism=4, extraversion=4)) > > I used 4 levels here to verify that this works correctly, since 5 is the default. > > As well, although unrelated to this bug, you might take a look at predictorEffects(), which we recommend in preference to allEffects(). > > Best, > John > > -------------------------------------- > John Fox, Professor Emeritus > McMaster University > Hamilton, Ontario, Canada > Web: socialsciences.mcmaster.ca/jfox/ > > > >> -----Original Message----- >> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Gerrit >> Eichner >> Sent: Wednesday, September 4, 2019 9:25 AM >> To: r-help at r-project.org >> Subject: [R] [effects] allEffects does not accept integer value for >> xlevels >> >> Dear list, >> >> citing from allEffects' help page (of package effects 4.1-2): >> "If xlevels=n is an integer, then each numeric predictor is represented by >> n equally spaced values rounded to 'nice' numbers." >> >> >> However, adapting the first example from allEffects' help page throws an >> an error: >> >> mod.cowles <- glm(volunteer ~ sex + neuroticism*extraversion, >> data=Cowles, family=binomial) allEffects(mod.cowles, >> xlevels=5) Error in xlevels[[name]] : subscript out of bounds >> >> >> It appears to me that the cause is buried in effects:::Analyze.model >> >> in or close to the the lines >> >> if (is.numeric(xlevels) & length(xlevels) == 1L) { >> levs <- xlevels >> for (name in focal.predictors) xlevels[[name]] <- levs >> } >> >> >> >> where xlevels -- while not being a list in this case -- is subscripted by >> xlevels[[name]]. >> >> Is anyone aware of a workaround (without having to specify all numeric >> predictors of the used model explicitly in a list and giving it to xlevels >> when calling allEffects), and without having to write my own Analyze.model >> function? ;-) >> >> >> Thx in advance and best regards -- Gerrit >> >> >> >> PS: sessionInfo() >> >> R version 3.6.1 (2019-07-05) >> Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 >> (build 18362) >> >> Matrix products: default >> >> Random number generation: >> RNG: Mersenne-Twister >> Normal: Inversion >> Sample: Rounding >> >> locale: >> [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 [3] >> LC_MONETARY=German_Germany.1252 LC_NUMERIC=C [5] >> LC_TIME=German_Germany.1252 >> >> attached base packages: >> [1] stats graphics grDevices utils datasets methods base >> >> other attached packages: >> [1] effects_4.1-2 carData_3.0-2 >> >> loaded via a namespace (and not attached): >> [1] Rcpp_1.0.2 lattice_0.20-38 MASS_7.3-51.4 grid_3.6.1 >> >> [5] DBI_1.0.0 nlme_3.1-141 survey_3.36 >> estimability_1.3 >> [9] minqa_1.2.4 nloptr_1.2.1 Matrix_1.2-17 boot_1.3-23 >> >> [13] splines_3.6.1 lme4_1.1-21.9001 survival_2.44-1.1 compiler_3.6.1 >> [17] colorspace_1.4-1 mitools_2.4 nnet_7.3-12 >> >> >> --------------------------------------------------------------------- >> Dr. Gerrit Eichner Mathematical Institute, Room 212 >> gerrit.eichner at math.uni-giessen.de Justus-Liebig-University Giessen >> Tel: +49-(0)641-99-32104 Arndtstr. 2, 35392 Giessen, Germany >> http://www.uni-giessen.de/eichner >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. >-- Honorary Research Fellow Department of Statistics University of Auckland Phone: +64-9-373-7599 ext. 88276