[R] [FORGED] Error occurring in "emmeans" package for the two data sets I used. Please help.

Rolf Turner r.turner at auckland.ac.nz
Mon Jan 8 22:44:05 CET 2018


On 07/01/18 02:19, Akhilesh Singh wrote:

> I am a Professor of Statistics at Indira Gandhi Krishi Vishwavidyalaya,
> Raipur, India. While teaching in class about analysis of variance using R,
> I was doing a one-way analysis for the two data-sets given below in the
> R-class. I got a typical error in "emmeans" package, please help:
> 
> Data-set-1:
> --------------
> Medley and Clements (1998) investigated the impact of zinc contamination
> (and other heavy metals) on the diversity of diatom species in the USA
> Rocky Mountains. The diversity of diatoms (number of species) and degree of
> zinc contamination (categorized as either of high, medium, low or natural
> background level) were recorded from between four and six sampling stations
> within each of six streams known to be polluted, as given below:
> 
> stream=c("Eagle", "Eagle", "Eagle", "Eagle", "Blue", "Blue",
>           "Blue", "Blue", "Blue", "Blue", "Blue", "Snake", "Snake",
>           "Snake", "Snake", "Snake", "Arkan", "Arkan", "Arkan",
>           "Arkan", "Arkan", "Arkan", "Arkan", "Chalk", "Chalk",
>           "Chalk", "Chalk", "Chalk", "Splat", "Splat", "Splat",
>           "Splat", "Splat", "Splat")
> 
> zinc=c("BACK", "HIGH", "HIGH", "MED", "BACK", "HIGH", "BACK", "BACK",
>         "HIGH", "MED", "MED", "BACK", "MED", "HIGH", "HIGH", "HIGH",
>         "LOW", "LOW", "LOW", "LOW", "MED", "MED", "LOW", "LOW",
>         "HIGH", "HIGH", "MED", "LOW", "BACK", "BACK", "MED", "LOW",
>         "MED", "BACK")
> 
> diversity=c(2.27, 1.25, 1.15, 1.62, 1.7, 0.63, 2.05, 1.98, 1.04,
>              2.19, 2.1, 2.2, 2.06, 1.9, 1.88, 0.85, 1.4, 2.18, 1.83,
>              1.88, 2.02, 1.94, 2.1, 2.38, 1.43, 1.37, 1.75, 2.83,
>              1.53, 0.76, 0.8, 1.66, 0.98, 1.89)
> 
> medley.clementis=data.frame(stream,zinc,diversity)
> 
> I did the one-way anova:
> -------------------------------
> 
> medley.clementis.aov=with(medley.clementis, aov(diversity ~ zinc))
> 
> anova(medley.clementis)
> 
> Then, I tried to do post hoc analysis using "emmeans" package following
> command:
> -----------------------------------------------------------------------------------------------
> 
> emmeans::emmeans(medley.clementis.aov, "zinc")
> 
> 
> This gives following error:
> ----------------------------------
> Error in recover_data.call(fcall, delete.response(terms(object)),
> object$na.action,  :
>    object 'possibly.random' not found
> Error in ref_grid(object, ...) :
>    Perhaps a 'data' or 'params' argument is needed
> 
> 
> 
> Data-set-2:
> ---------------
> Keough and Raimondi (1995) examined the effects of four biofilm types (SL:
> sterile unfilmed substrate, NL: netted laboratory biofilms, UL: unnetted
> laboratory biofilms and F: netted field biofilms) on the recruitment of
> serpulid larvae. Substrates treated with one of the four biofilm types were
> left in shallow marine waters for one week after which the number of newly
> recruited serpulid worms were counted, as given below:
> 
> biofilm=c("SL", "SL", "SL", "SL", "SL", "SL", "SL", "UL", "UL", "UL",
>            "UL", "UL", "UL", "UL", "NL", "NL", "NL", "NL", "NL", "NL",
>            "NL", "F", "F", "F", "F", "F", "F", "F")
> 
> serpulid=c(61, 113, 123, 75, 75, 83, 95, 143, 81, 101, 155, 156, 193,
>             163, 203, 159, 139, 161, 179, 97, 157, 128.5, 204.5,
>             108.5, 116.5, 140.5, 160.5, 87.5)
> 
> keough.raimondi=data.frame(biofilm,serpulid)
> 
> Applied log-transformation:
> -------------------------------------------
> keough.raimondi.ln=transform(keough.raimondi, serpulid.ln=log(serpulid))
> 
> I did the one-way anova, with contrasts defined below:
> ------------------------------------------------------------------------
> contrasts(keough.raimondi.ln$biofilm) <- cbind(c(0, 1, 0, -1),
>                              c(2, -1, 0, -1), c(-1, -1, 3, -1))
> keough.raimondi.ln$biofilm
> 
> keough.contr.list <- list(biofilm = list('NL vs UL' = 1,
>                'F vs (NL & UL)' = 2, 'SL vs (F & NL & UL)' = 3))
> keough.contr.list
> 
> One-way anova:
> ----------------------
> keough.raimondi.ln.aov=with(keough.raimondi.ln, aov(serpulid.ln ~ biofilm))
> 
> summary(keough.raimondi.ln.aov,split=keough.contr.list)
> 
> 
> Then, I tried to do post hoc analysis using "emmeans" package following
> command:
> -----------------------------------------------------------------------------------------------
> 
> emmeans(keough.raimondi.ln.aov, ~ biofilm)
> 
> 
> This gives following error:
> ----------------------------------
> Error in recover_data.call(fcall, delete.response(terms(object)),
> object$na.action,  :
>    object 'possibly.random' not found
> Error in ref_grid(object, ...) :
>    Perhaps a 'data' or 'params' argument is needed
> 
> 
> Help Needed:
> ------------------
> On many other data sets and data frame I successfully used "emmeans"
> package using the help available in R.
> 
> But, for the above two data-sets, I consistently got the same error as
> described above.
> 
> I do not know what is amiss. Where I am missing or whatever is wrong, I
> request the entire R-team to help me to solve above problem.

Well, you don't need the *entire* R-team!!! It probably (in some sense) 
includes millions of people. :-)

> Thanking in advance.

Thanks for your thorough and well set out description of the problem.
Your reproducible examples were flawless.

I am not *completely* certain, but this looks to me like a bug in emmeans.

I have therefore taken the liberty of cc-ing this reply to Russell Lenth 
(the maintainer of emmeans) to get his take on the issue.

cheers,

Rolf Turner

-- 
Technical Editor ANZJS
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276



More information about the R-help mailing list