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.
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))
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] 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