[R] mixed models

David Winsemius dwinsemius at comcast.net
Fri May 27 20:49:55 CEST 2016


> On May 27, 2016, at 10:07 AM, James Henson <jfhenson1 at gmail.com> wrote:
> 
> Greetings Jeff,
> You are correct that the unequal number of levels is not the problem.
> I revised the data frame so that the number of levels was equal and
> the same error message occurred.  The code is below, and the
> Eboni2.txt file is attached. This problem baffles me.  I appreciate
> any help.
> Best regards,
> James
> Eboni2 <- read.csv("Eboni2.csv", header = TRUE)
> 
> library("nlme")
> 
> str(Eboni2)
> 
> head(Eboni2)
> 
> model1 <- lme(preDawn ~ Irrigation, random=~season_order|treeNo, data=Eboni2)

I downloaded the attached file to your first posting that was called a "csv" file but it was tab-separated (as could be clearly seen with the str output, so would only load properly with read.delim rather than read.csv. Running then with the lme call, it produced this message

> model1 <- lme(preDawn ~ Irrigation, random=~season_order|treeNo, data=Eboni2)
Error in na.fail.default(list(season_order = c(5L, 5L, 5L, 5L, 5L, 5L,  : 
  missing values in object

And looking at the str result made it clear that there were many NA's in the file.

> head(Eboni2)
  number Location   Season season_order Month  treeID treeNo preDawn midday
1      1      UCC November            5   Nov UCCLO 1     60     1.4    1.3
2      2      UCC November            5   Nov UCCLO 2     72     1.2    1.3
3      3      UCC November            5   Nov UCCLO 3     78     1.1    1.2
4      4      UCC November            5   Nov UCCLO 4     79     1.1    2.1
5      5      UCC November            5   Nov UCCLO 5     80     1.4    1.3
6      6      UCC November            5   Nov UCCLO 6     81     0.6    1.8
  Irrigation Pnet        Gs        E      WUE d15N   d13C Nper  Cper include2
1          N    9 0.2907004 3.766207 2.389672   NA     NA   NA    NA       no
2          N   11 0.3262582 3.120574 3.524993   NA     NA   NA    NA       no
3          N    8 0.2870957 1.693821 4.723050 3.00 -27.44 2.12 52.12      yes
4          N   10 0.2475180 1.839343 5.436724 3.61 -29.50 1.42 51.97      yes
5          N   13 0.3009228 3.082278 4.217660   NA     NA   NA    NA       no
6          N   17 0.3487337 2.534550 6.707304 2.79 -30.50 1.49 49.94      yes

And even more importantly, there was one NA in your outcome variable:
> sum( is.na(Eboni2$Irrigation))
[1] 0
> sum( is.na(Eboni2$preDawn))
[1] 1

So after restricting to complete.cases, I then formed the hypothesis that you reversed the order of the variables in the formula for the random parameter:

> table(Eboni2$season_order)

 1  2  3  4  5 
83 83 83 83 83 
> length( Eboni2$treeNo)
[1] 415

So it seemed unreasonable to have a "grouping" on variable with only one item per group.

> model1 <- lme(preDawn ~ Irrigation, random=~treeNo|season_order, data=Eboni2[ complete.cases( Eboni2[ , c('preDawn','Irrigation','season_order','treeNo')]), ] )
> model1
Linear mixed-effects model fit by REML
  Data: Eboni2[complete.cases(Eboni2[, c("preDawn", "Irrigation", "season_order",      "treeNo")]), ] 
  Log-restricted-likelihood: -183.4708
  Fixed: preDawn ~ Irrigation 
(Intercept) IrrigationY 
 1.04520145 -0.06037706 

Random effects:
 Formula: ~treeNo | season_order
 Structure: General positive-definite, Log-Cholesky parametrization
            StdDev      Corr  
(Intercept) 0.140239324 (Intr)
treeNo      0.003766019 -0.725
Residual    0.365678898       

Number of Observations: 414
Number of Groups: 5 

(Warning, I'm not a frequent user of this package or any of the mixed effects packages.)



Just to correct some misinformation that appeared earlier: You can attach "csv" or "tsv" files as long as you name them with an .txt extension so the mail clients and servers consider them to be MIME-text.

-- 
David.


> On Wed, May 25, 2016 at 6:23 PM, Jeff Newmiller
> <jdnewmil at dcn.davis.ca.us> wrote:
>> Please keep the mailing list in the loop by using reply-all.
>> 
>> I don't think there is a requirement that the number of levels is equal, but
>> there may be problems if you don't have the minimum number of records
>> corresponding to each combination of levels specified in your model.
>> 
>> You can change the csv extension to txt and attach for the mailing list. Or,
>> better yet, you can use the dput function to embed the data directly in your
>> sample code.
>> 
>> Also, please learn to post plain text email to avoid corruption of R code by
>> the HTML formatting.
>> --
>> Sent from my phone. Please excuse my brevity.
>> 
>> On May 25, 2016 2:26:54 PM PDT, James Henson <jfhenson1 at gmail.com> wrote:
>>> 
>>> Good afternoon Jeff,
>>> The sample sizes for levels of the factor "Irrigation" are not equal. If
>>> 'nlme' requires equal sample sizes this may be the problem. The same data
>>> frame runs in 'lme4' without a problem.
>>> 
>>> Best regards,
>>> James
>>> 
>>> 
>>> On Wed, May 25, 2016 at 3:41 PM, James Henson <jfhenson1 at gmail.com> wrote:
>>>> 
>>>> Good afternoon Jeff,
>>>> 
>>>> When working with this data frame, I just open the .csv file in R Studio.
>>>> But, we should not send .csv file to R_help.  What should I send?
>>>> 
>>>> Best regards,
>>>> James
>>>> 
>>>> On Wed, May 25, 2016 at 2:52 PM, Jeff Newmiller
>>>> <jdnewmil at dcn.davis.ca.us> wrote:
>>>>> 
>>>>> You forgot to show the commands to us that you used to read the data in
>>>>> with (your example is not "reproducible"). This step can make all the
>>>>> difference in the world as to whether your analysis commands will work or
>>>>> not.
>>>>> --
>>>>> Sent from my phone. Please excuse my brevity.
>>>>> 
>>>>> On May 25, 2016 11:59:06 AM PDT, James Henson <jfhenson1 at gmail.com>
>>>>> wrote:
>>>>>> 
>>>>>> Greetings R community,
>>>>>> 
>>>>>> My aim is to analyze a mixed-effects model with temporal
>>>>>> pseudo-replication
>>>>>> (repeated measures on the same experimental unit) using ‘nlme’.
>>>>>> However,
>>>>>> my code returns the error message “Error in na.fail.default’, even
>>>>>> though
>>>>>> the data frame does not contain missing values. My code is below, and
>>>>>> the
>>>>>> data file is attached as ‘Eboni2.txt.
>>>>>> 
>>>>>> library("nlme")
>>>>>> 
>>>>>> str(Eboni2)
>>>>>> 
>>>>>> head(Eboni2)
>>>>>> 
>>>>>> model1 <- lme(preDawn ~ Irrigation, random=~season_order|treeNo,
>>>>>> data=Eboni2)
>>>>>> 
>>>>>> I am genuinely confused.  Hope someone can help.
>>>>>> 
>>>>>> Best regards,
>>>>>> 
>>>>>> James F. Henson
>>>>>> 
>>>>>> ________________________________
>>>>>> 
>>>>>> 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.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list