1 votos

Datos problemáticos para el modelo de regresión

Esta es una pregunta de seguimiento de ¿Qué modelo para mis datos? (comprobación de las diferencias de pendiente para tres grupos).

La solución de allí funciona (¡muchas gracias a Heteroskedastic Jim!), pero tengo un problema con un conjunto de datos específico. Tal vez alguien pueda aclararme por qué me atasco.

Este es un ejemplo que funciona:

library(nlme)
library(emmeans)

Input = ("
Group   Time    Size
         A  1   1.08152
         A  2   1.10589
         A  3   1.13292
         B  1   1.04597
         B  2   1.05763
         B  3   1.07023
         B  4   1.08612
         B  5   1.10059
         B  6   1.11589
         B  7   1.13143
         B  8   1.14741
         B  9   1.16721
         B  10  1.18288
         C  1   1.04777
         C  2   1.06145
         C  3   1.07484
         C  4   1.08908
         C  5   1.10346
         C  6   1.11866
         C  7   1.13375
         C  8   1.14931
         C  9   1.16563
         C  10  1.18294
         ")
dat = read.table(textConnection(Input),header=TRUE)

Así se construye el modelo:

(m1 <- gls(Size ~ Time * Group, dat, correlation = corAR1(form = ~ Time | Group), weights = varIdent(form = ~ 1 | I(Group == "A"))))

Y esto me proporciona los valores p para las diferencias de pendiente:

pairs(emtrends(m1, ~ Group, var = "Time", df = Inf, options = get_emm_option("emmeans")))

Ahora el conjunto de datos donde me atasco:

Input = ("
Group   Time    Size
         A  1   1.6210
         A  2   2.1118
         A  3   2.6026
         A  4   3.0934
         B  1   0.9162
         B  2   1.2122
         B  3   1.5082
         B  4   1.8042
         B  5   2.1002
         B  6   2.3962
         B  7   2.6922
         B  8   2.9882
         B  9   3.2842
         B  10  3.5802
         C  1   0.82701
         C  2   1.13441
         C  3   1.44181
         C  4   1.74921
         C  5   2.05661
         C  6   2.36401
         C  7   2.67141
         C  8   2.97881
         C  9   3.28621
         C  10  3.59361
         ")
dat = read.table(textConnection(Input),header=TRUE)

Cuando construyo el modelo anterior con estos datos específicos

(m1 <- gls(Size ~ Time * Group, dat, correlation = corAR1(form = ~ Time | Group), weights = varIdent(form = ~ 1 | I(Group == "A"))))

Me aparece este mensaje de error:

Error in glsEstimate(object, control = control) : computed "gls" fit is singular, rank 6

He intentado analizar los datos en el SPSS, pero también me he atascado ahí.

Así que mi pregunta es: ¿dónde está el problema con mis datos y qué puedo hacer para resolverlo?

0 votos

¿Así que has mantenido el mismo modelo pero has cambiado los datos, y el modelo ya no se puede estimar?

0 votos

Sí, es correcto.

0 votos

¿Es el tiempo un factor o una variable?

3voto

mdewey Puntos 579

Si se traza la relación entre el tamaño y el tiempo de cada grupo, se verá que todos los puntos se sitúan en una línea recta. Dado que está ajustando un modelo con la interacción entre el Tiempo y el Grupo, obtendrá un ajuste perfecto en general, que es lo que el software le está diciendo. Sin saber más sobre el proceso que genera sus datos, es imposible decir qué implicaciones tiene esto para su pregunta científica.

0 votos

Creo que esto no lo explica del todo. Si sólo fuera un ajuste perfecto, el ajuste podría calcularse y darse con varianza cero, no habría razón para que el software informara de un error. Habría pensado que lo más probable es que el error signifique que el modelo está sobreparametrizado, pero esto también es extraño porque entonces ¿por qué funciona con el otro conjunto de datos? Hay una pequeña diferencia en las covariables, sin embargo, se añade un caso A 4, pero no entiendo muy bien cómo esto causa la singularidad (que suele ser una característica del modelo y el diseño, no la respuesta).

0 votos

@Lewian He ajustado sin la estructura de autocorrelación para mantenerlo simple y luego se obtiene resultados ajustados pero una advertencia sobre el ajuste perfecto que hace lo que usted sugiere que debería hacer. Sospecho que la complejidad añadida del ajuste gls() hace que falle.

0 votos

¿Qué opinas? ¿Hay alguna forma de comprobar si los tres grupos presentan diferencias en la pendiente (y quizá en la intercepción) utilizando este u otro modelo adecuado (teniendo en cuenta la autocorrelación)? Lo que me desconcierta es que R simplemente arroja este error y se detiene.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X