1 votos

obteniendo estimaciones inexactas de glm con family = gaussian(link = 'inverse')

Creo que se trata de un problema estadístico relacionado con mi incomprensión de los MLG. Pero existe la posibilidad de que sea un problema de programación. Si ese resulta ser el caso, voy a pasar a Stack Overflow.

He simulado los datos de una manera que creo que sería perfectamente capturado por un GLM gaussiano con el enlace inverso. Pero cuando le doy los datos a stats::glm obtengo estimaciones imprecisas (o ninguna convergencia).

Esto es lo que quiero decir:

set.seed(27599)

n <- 1e4

x1 <- runif(n = n)
x2 <- runif(n = n)

linpred <- 0.5*x1 + -0.5*x2

mu <- 1/linpred
y <- rnorm(n = n, mean = mu, sd = 1)

d <- data.frame(x1, x2, y)

fitted_glm <- glm(formula = y ~ x1 + x2,
                  data = d,
                  family = stats::gaussian(link = 'inverse'),
                  mustart = rep(mean(y), n))
coef(fitted_glm)
>  (Intercept)          x1          x2     
>    19247667   -29105253   -16315984

Yo esperaría (espero) que la intercepción estuviera cerca de 0 y los efectos estarían cerca 0.5 y -0.5 .

Una cosa que he probado es aplicar la inversa directamente a y en lugar de al predictor lineal, como en:

mu <- mean_lp
y <- 1/rnorm(n = n, mean = mu, sd = 1)

coef(fitted_glm)   

> (Intercept)            x1            x2 
> -1.902150e+12  2.745787e+12 -3.221891e+08

Pero, como se puede ver, eso también dio estimaciones de parámetros sin sentido. ¿En qué me he equivocado? Utilicé un proceso similar para simular y modelar un GLM normal-identidad y normal-log y funcionó como se esperaba.

2voto

theon Puntos 226

Se trata de un problema numérico debido a unos valores iniciales poco afortunados para $\mu$ . Retire el mustart -de la glm -call y todo funciona como se esperaba.

2voto

AdamSane Puntos 1825

Tenga en cuenta que si el rango de su predictor lineal pasa por 0, su recíproco se disparará hacia $\pm\infty$ En ese caso, es de esperar que surjan dificultades de convergencia.

A ver cómo te va si lo consigues 1+0.5*x1-0.5*x2 en su lugar. (Con el enlace recíproco, normalmente tus medios deberían ser todos positivos. Eso no quiere decir que no pueda funcionar cuando cruza 0 -bbrot tiene razón en que converge cuando eliminas los valores iniciales- pero te estás complicando las cosas y puede que no siempre se comporte tan bien).

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