Específicamente, quiero saber si hay una diferencia entre lm(y ~ x1 + x2)
y glm(y ~ x1 + x2, family=gaussian)
. Creo que este caso en particular de glm es igual a la lm. Estoy equivocado?
Respuestas
¿Demasiados anuncios?Mientras que para la forma específica de la modelo mencionado en el cuerpo de la pregunta (es decir, lm(y ~ x1 + x2)
vs glm(y ~ x1 + x2, family=gaussian)
), la regresión y la GLMs son el mismo modelo, el título de la pregunta se le pide algo un poco más general:
Hay alguna diferencia entre la película y el glm para el gaussiano de la familia de glm?
Para que la respuesta es "¡Sí!".
La razón por la que puede ser diferente es porque también se puede especificar una función de enlace en el GLM. Esto permite el ajuste de las formas particulares de relación no lineal; mientras que usted puede hacer esto en nls
como bueno, no hay ninguna necesidad de que los valores de partida, a veces, la convergencia es mejor (también la sintaxis también es más fácil).
Comparar, por ejemplo, estos modelos:
x1=c(56.1, 26.8, 23.9, 46.8, 34.8, 42.1, 22.9, 55.5, 56.1, 46.9, 26.7, 33.9,
37.0, 57.6, 27.2, 25.7, 37.0, 44.4, 44.7, 67.2, 48.7, 20.4, 45.2, 22.4, 23.2,
39.9, 51.3, 24.1, 56.3, 58.9, 62.2, 37.7, 36.0, 63.9, 62.5, 44.1, 46.9, 45.4,
23.7, 36.5, 56.1, 69.6, 40.3, 26.2, 67.1, 33.8, 29.9, 25.7, 40.0, 27.5)
x2=c(12.29, 11.42, 13.59, 8.64, 12.77, 9.9, 13.2, 7.34, 10.67, 18.8, 9.84, 16.72,
10.32, 13.67, 7.65, 9.44, 14.52, 8.24, 14.14, 17.2, 16.21, 6.01, 14.23, 15.63,
10.83, 13.39, 10.5, 10.01, 13.56, 11.26, 4.8, 9.59, 11.87, 11, 12.02, 10.9, 9.5,
10.63, 19.03, 16.71, 15.11, 7.22, 12.6, 15.35, 8.77, 9.81, 9.49, 15.82, 10.94, 6.53)
y = c(1.54, 0.81, 1.39, 1.09, 1.3, 1.16, 0.95, 1.29, 1.35, 1.86, 1.1, 0.96,
1.03, 1.8, 0.7, 0.88, 1.24, 0.94, 1.41, 2.13, 1.63, 0.78, 1.55, 1.5, 0.96,
1.21, 1.4, 0.66, 1.55, 1.37, 1.19, 0.88, 0.97, 1.56, 1.51, 1.09, 1.23, 1.2,
1.62, 1.52, 1.64, 1.77, 0.97, 1.12, 1.48, 0.83, 1.06, 1.1, 1.21, 0.75)
lm(y ~ x1 + x2)
glm(y ~ x1 + x2, family=gaussian)
glm(y ~ x1 + x2, family=gaussian(link="log"))
nls(y ~ exp(b0+b1*x1+b2*x2), start=list(b0=-1,b1=0.01,b2=0.1))
Tenga en cuenta que el primer par son el mismo modelo ($y_i \sim N(\beta_0+\beta_1 x_{1i}+\beta_2 x_{2i},\sigma^2)\,$), y el segundo par son el mismo modelo ($y_i \sim N(\exp(\beta_0+\beta_1 x_{1i}+\beta_2 x_{2i}),\sigma^2)\,$ y que los ajustes son esencialmente los mismos dentro de cada par.
- En relación a la pregunta del título - puedes colocar sustancialmente más amplia variedad de modelos de Gauss con un GLM que con la regresión.
Desde @Repmat la respuesta, el resumen del modelo son el mismo, pero el C. I. de los coeficientes de regresión de confint
son ligeramente diferentes entre lm
y glm
.
> confint(reg1, level=0.95)
2.5 % 97.5 %
(Intercept) 2.474742 11.526174
x1 1.971466 2.014002
x2 2.958422 3.023291
> confint(reg2, level=0.95)
Waiting for profiling to be done...
2.5 % 97.5 %
(Intercept) 2.480236 11.520680
x1 1.971492 2.013976
x2 2.958461 3.023251
$t$-distribución en lm
, mientras que la distribución normal se utiliza en glm
cuando la construcción de los intervalos.
> beta <- summary(reg1)$coefficients[, 1]
> beta_se <- summary(reg1)$coefficients[, 2]
> cbind(`2.5%` = beta - qt(0.975, n - 3) * beta_se, `97.5%` = beta + qt(0.975, n - 3) * beta_se) #normal
2.5% 97.5%
(Intercept) 2.474742 11.526174
x1 1.971466 2.014002
x2 2.958422 3.023291
> cbind(`2.5%` = beta - qnorm(0.975)*beta_se, `97.5%` = beta + qnorm(0.975)*beta_se) #t
2.5% 97.5%
(Intercept) 2.480236 11.520680
x1 1.971492 2.013976
x2 2.958461 3.023251
Respuesta corta, son exactamente los mismos:
# Simulate data:
set.seed(42)
n <- 1000
x1 <- rnorm(n, mean = 150, sd = 3)
x2 <- rnorm(n, mean = 100, sd = 2)
u <- rnorm(n)
y <- 5 + 2*x1 + 3*x2 + u
# Estimate with OLS:
reg1 <- lm(y ~ x1 + x2)
# Estimate with GLS
reg2 <- glm(y ~ x1 + x2, family=gaussian)
# Compare:
require(texreg)
screenreg(l = list(reg1, reg2))
=========================================
Model 1 Model 2
-----------------------------------------
(Intercept) 6.37 ** 6.37 **
(2.20) (2.20)
x1 1.99 *** 1.99 ***
(0.01) (0.01)
x2 3.00 *** 3.00 ***
(0.02) (0.02)
-----------------------------------------
R^2 0.99
Adj. R^2 0.99
Num. obs. 1000 1000
RMSE 1.00
AIC 2837.66
BIC 2857.29
Log Likelihood -1414.83
Deviance 991.82
=========================================
*** p < 0.001, ** p < 0.01, * p < 0.05
Respuesta larga; El glm función ajusta el modelo por el MLE, sin embargo, debido a la suposición acerca de la función de enlace (en este caso normal), terminará con las estimaciones OLS.