[R] lme error: Error in getGroups.data.frame(dataMix, groups)

John Sorkin jsorkin at grecc.umaryland.edu
Tue Mar 1 00:44:48 CET 2011


Dennis,
Thank you,
John




John David Sorkin M.D., Ph.D.
Chief, Biostatistics and Informatics
University of Maryland School of Medicine Division of Gerontology
Baltimore VA Medical Center
10 North Greene Street
GRECC (BT/18/GR)
Baltimore, MD 21201-1524
(Phone) 410-605-7119
(Fax) 410-605-7913 (Please call phone number above prior to faxing)>>> Dennis Murphy <djmuser at gmail.com> 2/28/2011 4:08 PM >>>
Hi:

On Mon, Feb 28, 2011 at 8:42 AM, John Sorkin <jsorkin at grecc.umaryland.edu>wrote:

> R 2.10.0
> Windows XP
>
> I am trying to run lme. I receive the following error message:
> My lme code is:
> fitRandom <- lme(values ~ factor(subject),
> data=withindata)
>

Where's the random factor? Perhaps you mean

lme(values ~ 1, random = ~ 1 | subject, data = withindata)

or in lme4,

lmer(values ~ 1 + (1 | subject), data = withindata)

HTH,
Dennis

PS: Use of dput() output is more helpful than copying from the console, as
it retains the same classes you have on your end.


> dput(withindata)
structure(list(subject = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L),
    values = c(2.3199639, -8.5795802, -4.1901241, 0.4588128,
    16.9128232, 8.9856358, 1.9303254, -1.4320313, -15.4225123,
    5.9293529, -29.2014153, -8.9684986, -11.906217, 13.2133887,
    1.2491941, -8.0613768, -5.6340179, 3.1916857, -7.7447932,
    2.2316354, 0.6444938, 4.6912677, 20.9135073, 2.1433533, -0.8057022,
    -13.0187979, 8.9634065, 13.4815344, 4.6148061, -18.4781373,
    15.5263564, -2.1993412, 5.183026, 16.2311097, -2.5781897,
    -3.016729, -0.1119353, 1.1983126, -8.8212143, 3.8895263)), .Names =
c("subject",
"values"), class = "data.frame", row.names = c("1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26",
"27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37",
"38", "39", "40"))

Below I have printed the console output, and at the bottom of this message,
> I have printed my code.
> I hope someone can tell my what I am doing wrong.
> Thank you,
> John
>
> > print(withindata)
>   subject      values
> 1        1   2.3199639
> 2        1  -8.5795802
> 3        1  -4.1901241
> 4        1   0.4588128
> 5        1  16.9128232
> 6        1   8.9856358
> 7        1   1.9303254
> 8        1  -1.4320313
> 9        1 -15.4225123
> 10       1   5.9293529
> 11       2 -29.2014153
> 12       2  -8.9684986
> 13       2 -11.9062170
> 14       2  13.2133887
> 15       2   1.2491941
> 16       2  -8.0613768
> 17       2  -5.6340179
> 18       2   3.1916857
> 19       2  -7.7447932
> 20       2   2.2316354
> 21       3   0.6444938
> 22       3   4.6912677
> 23       3  20.9135073
> 24       3   2.1433533
> 25       3  -0.8057022
> 26       3 -13.0187979
> 27       3   8.9634065
> 28       3  13.4815344
> 29       3   4.6148061
> 30       3 -18.4781373
> 31       4  15.5263564
> 32       4  -2.1993412
> 33       4   5.1830260
> 34       4  16.2311097
> 35       4  -2.5781897
> 36       4  -3.0167290
> 37       4  -0.1119353
> 38       4   1.1983126
> 39       4  -8.8212143
> 40       4   3.8895263
> > fitRandom <- lme(values ~ factor(subject),
> + data=withindata)
> Error in getGroups.data.frame(dataMix, groups) :
>  Invalid formula for groups
> > summary(fitRandom)
> Error in summary(fitRandom) : object 'fitRandom' not found
> >
>
> My code:
>
> library(nlme)
>
> # Define essential constants.
> # Number of subject studied.
> NSubs <- 4
> # Number of observations per subject.
> NObs <- 10
> # Between study SD
> tau <- 4
> # Within study SD.
> sigma <- 8
> # END Define essential constants.
>
> # Define between subject variation
> between <- matrix(nrow=10,ncol=1)
> between <- rnorm(NSubs,0,tau)
> between
> # END Define between subject variation.
>
> # Define within subject varation.
> within <- matrix(nrow=NObs*NSubs,ncol=2)
> for (subject in 1:NSubs) {
>  # Create a variable defining subject.
>  within[c(1:NObs)+((subject-1)*NObs),1] <- subject
>  # Create within subject variation.
>  within[c(1:NObs)+((subject-1)*NObs),2] <-
> rnorm(NObs,between[subject],sigma)
> }
> # END Define within subject variation.
>
> # Create a dataframe to hold values.
> withindata <- data.frame(subject=within[,1],values=within[,2])
> print(withindata[1:4,])
>
> print(withindata)
> fitRandom <- lme(values ~ subject,
> data=withindata)
> summary(fitRandom)
>
>
>
> John David Sorkin M.D., Ph.D.
> Chief, Biostatistics and Informatics
> University of Maryland School of Medicine Division of Gerontology
> Baltimore VA Medical Center
> 10 North Greene Street
> GRECC (BT/18/GR)
> Baltimore, MD 21201-1524
> (Phone) 410-605-7119
> (Fax) 410-605-7913 (Please call phone number above prior to faxing)
>
> Confidentiality Statement:
> This email message, including any attachments, is for ...{{dropped:17}}



More information about the R-help mailing list