Fox, John
2019-Sep-04 22:32 UTC
[R] [effects] allEffects does not accept integer value for xlevels
Dear Rolf,
Thanks for trying to help. The bug wasn't in AnalyzeModel().
There was a bug in Effect.lm(), Effect.multinom(), and Effect.polr() in how
xlevels=n (e.g., xlevels=4) was handled, now fixed in the development version of
the effects package on R-Forge, from which it can be installed via
install.packages("effects",
repos="http://R-Forge.R-project.org"). Despite my implication to the
contrary, xlevels=n works properly in predictorEffect() in the version of
effects currently on CRAN.
I'll wait for a decent interval before updating effects again on CRAN.
Best,
John
> -----Original Message-----
> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Rolf
> Turner
> Sent: Wednesday, September 4, 2019 5:39 PM
> To: Fox, John <jfox at mcmaster.ca>
> Cc: r-help at r-project.org; sandy at umn.edu
> Subject: Re: [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
>
> ______________________________________________
> 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.
Gerrit Eichner
2019-Sep-05 08:14 UTC
[R] [effects] allEffects does not accept integer value for xlevels
Dear John, thank you for the quick response and fix! Sorry, that I didn't detect the bug earlier, but everything had run smoothly sofar. ;-) (I am aware of predictorEffects. I have in fact switched to it recently. Excellent functionality; thx a lot for it! Actually, experimenting with its ...levels arguments lead me to the respective attempts with allEffects out of curiosity.) Dear Rolf, my conjecture was not about a "problem with using [[...]] to *extract* entries from vectors", but about assigning a value to a list component of an object which is not a list. I was referring to xlevels[[name]] <- levs where xlevels is an integer. (But that doesn't matter anymore because my conjecture pointed to the wrong function anyway.) Best regards -- Gerrit --------------------------------------------------------------------- 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 --------------------------------------------------------------------- Am 05.09.2019 um 00:32 schrieb Fox, John:> Dear Rolf, > > Thanks for trying to help. The bug wasn't in AnalyzeModel(). > > There was a bug in Effect.lm(), Effect.multinom(), and Effect.polr() in how xlevels=n (e.g., xlevels=4) was handled, now fixed in the development version of the effects package on R-Forge, from which it can be installed via install.packages("effects", repos="http://R-Forge.R-project.org"). Despite my implication to the contrary, xlevels=n works properly in predictorEffect() in the version of effects currently on CRAN. > > I'll wait for a decent interval before updating effects again on CRAN. > > Best, > John > >> -----Original Message----- >> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Rolf >> Turner >> Sent: Wednesday, September 4, 2019 5:39 PM >> To: Fox, John <jfox at mcmaster.ca> >> Cc: r-help at r-project.org; sandy at umn.edu >> Subject: Re: [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 >> >> ______________________________________________ >> 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. >