[R] an error to call 'gee' function in R
Thomas Lumley
tlumley at u.washington.edu
Mon Sep 8 00:41:16 CEST 2008
From the gee() help page:
Data are assumed to be sorted so that observations
on a cluster are contiguous rows for all entities in the formula.
-thomas
On Sun, 7 Sep 2008, Qinglin Wu wrote:
> Dear List:
>
> I found an error when I called the 'gee' function. I cannot solve and explain it. There are no errors when I used the 'geeglm' function. Both functions fit the gee model. The project supervisor recommends me to use the 'gee' function. But I cannot explain to him why this error happens. Would you help me solve this problem? I appreciate your help.
>
> In this project I will use the 'gee' or 'geeglm' and 'glmer' to fit the simulated multivariate count responses. I generated the data like this:
>
> Set ¦Â0 = ¦Â1 = 1, ¦Ì0 = 3, and n = 50.
> For each 1 ¡Ü i ¡Ü n,
> Simulate xi from N (1, 1).
> Simulate zi0 and zit from
> zi0 follows i.d. Poisson (¦Ì0) ,
> zit | xi follows i.d. Poisson (¦Ìit) , 1 ¡Ü t ¡Ü 3,
> log (¦Ìit) = log(E (zit | xi)) = ¦Â0t + xi¦Â1t = 1+xi.
> Let yit = zi0 + zit, 1 ¡Ü t ¡Ü 3.
>
> So my data frame, let me call it 'simdata', the first 10 rows look like this:
> id y.1 y.2 y.3 x
> 1 3 5 6 -0.06588626
> 2 6 7 6 -0.08265981
> 3 6 8 13 0.58307719
> 4 22 21 28 2.21099940
> 5 5 12 8 1.06299869
> 6 8 21 24 1.47615784
> 7 11 8 9 0.83748390
> 8 16 15 16 1.67011313
> 9 9 7 7 -0.14181264
> 10 31 37 40 2.56751453
>
>
> This is the longitudinal data. I will change its shape to analyze it.
> The changed 'newdata' looks like this:
> id x time y
> 1 -0.06588626 1 3
> 2 -0.08265981 1 6
> 3 0.58307719 1 6
> 4 2.21099940 1 22
> 5 1.06299869 1 5
> 6 1.47615784 1 8
> 7 0.83748390 1 11
> 8 1.67011313 1 16
> 9 -0.14181264 1 9
> 10 2.56751453 1 31
> ...........................
> 1 -0.06588626 2 5
> 2 -0.08265981 2 7
> 3 0.58307719 2 8
> 4 2.21099940 2 21
> 5 1.06299869 2 12
> 6 1.47615784 2 21
> 7 0.83748390 2 8
> 8 1.67011313 2 15
> 9 -0.14181264 2 7
> 10 2.56751453 2 37
> ...........................
> 1 -0.06588626 3 6
> 2 -0.08265981 3 6
> 3 0.58307719 3 13
> 4 2.21099940 3 28
> 5 1.06299869 3 8
> 6 1.47615784 3 24
> 7 0.83748390 3 9
> 8 1.67011313 3 16
> 9 -0.14181264 3 7
> 10 2.56751453 3 40
> ...........................
>
>
> My data 'y' comes from x. So their correlations are not independent. What does the argument 'corstr' mean it defined in the function. I tried all choices. But the error was still there. Here was the function I used in my programming:
>
> mfit1 <- gee(y~x,data=newdata,family=poisson(link="log"),id=id,corstr="exchangeable")
>
> GEE: GENERALIZED LINEAR MODELS FOR DEPENDENT DATA
> gee S-function, version 4.13 modified 98/01/27 (1998)
>
> Model:
> Link: Logarithm
> Variance to Mean Relation: Poisson
> Correlation Structure: Exchangeable
>
> Call:
> gee(formula = y ~ x, id = id, data = newdata, family = poisson(link = "log"),
> corstr = "exchangeable")
>
> Number of observations : 150
>
> Maximum cluster size : 1
>
> Coefficients:
> (Intercept) x
> 1.5849653 0.7937203
>
> Estimated Scale Parameter: 1.162505
> Number of Iterations: 1
>
> Working Correlation[1:4,1:4]
> Error in print(x$working.correlation[1:4, 1:4], digits = digits) :
> subscript out of bounds
>
>
>
> Is this kind of data not fit for the function 'gee'? Because when I tested this two functions by using the R data 'warpbreaks' they worked perfect although some returned objects were different. I used the following to do it:
> 1. (summary(gee(breaks ~ tension, id=wool, data=warpbreaks, corstr="exchangeable"))
> 2. summary(geeglm(breaks ~ tension, id=wool, data=warpbreaks, corstr="exchangeable"))).
>
> The first one is from the example of ?gee file.
>
> I will attach the part of my programming as .R file. You can excute in R software. Thanks a lot.
>
>
> I appreciate your help.
>
>
> Best regards.
>
> Sincerely,
> Cynthia Wu
>
Thomas Lumley Assoc. Professor, Biostatistics
tlumley at u.washington.edu University of Washington, Seattle
More information about the R-help
mailing list