[R] [effects] allEffects does not accept integer value for xlevels

Gerrit Eichner gerr|t@e|chner @end|ng |rom m@th@un|-g|e@@en@de
Thu Sep 5 10:14:05 CEST 2019


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 using 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 using r-project.org] On Behalf Of Rolf
>> Turner
>> Sent: Wednesday, September 4, 2019 5:39 PM
>> To: Fox, John <jfox using mcmaster.ca>
>> Cc: r-help using r-project.org; sandy using 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 using r-project.org] On Behalf Of
>>>> Gerrit Eichner
>>>> Sent: Wednesday, September 4, 2019 9:25 AM
>>>> To: r-help using 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 using 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 using 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 using 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 using 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 using 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.
>



More information about the R-help mailing list