Estoy tratando de simular una regresión logística y ver los diferentes parámetros que he modelado.
Aquí hay un ejemplo reproducible y el resultado.
set.seed(98765)
n = 20
x1 = rnorm(n = n, mean = 6, sd = 1)
# Rescale the data
x1z = scale(x1)
z = 0 + 2*x1z # this is the equation that gives the LOG odds. Note $p = odds/(1+odds)$
pr = 1/(1+exp(-z)) # Transform to get the LOG(odds) # inverse-logit function; Note that 1/(1+exp(-x))== exp(x)/(1+exp(x)), same as pr2 = boot::inv.logit(z)
# pr2 = exp(z)/(1+exp(z)) # z being the log odds. Using the exp (exponential with natural number), you get the odds. The use the $p = odds/(1+odds)$ formula to get teh probability
y = rbinom(n = n, size = 1, prob = pr) # Bernoulli response variable (which is a special case of the binomial with size =1 )
# Combine the data in a dataframe
df = data.frame(y = y, x1 = x1)
#now feed it to glm:
glm.logist = glm( y~x1, data=df, family="binomial")
glm.sum = summary(glm.logist)
par(mfrow=c(1,2))
b.5 = scales::alpha("black",.5)
plot(z~x1, ylab = "Log Odds", pch = 19, col = b.5, xlim = c(0,10), ylim = c(-12,11))
abline(a = glm.sum$coefficients[1,1],
b = glm.sum$coefficients[2,1])
abline(h=0, v=0,lty = 3)
points(x = 0, y=glm.sum$coefficients[1,1], pch = 19, col = "red")
text(x = 0, y=glm.sum$coefficients[1,1], labels = c("Intercept"), pos =4)
glm.sum$coefficients
plot(y~x1, data = df, col = scales::alpha("black",.5), pch = 19)
abline(h=0.5, v=mean(x1),lty = 3)
newdata <- data.frame(x1=seq(min(x1), max(x1),len=n))
newdata$y = predict(object = glm.logist, newdata = newdata, type = "response")
lines(x = newdata$x1,
y = newdata$y, col = "red",lwd = 2)
1/(1+exp(-glm.sum$coefficients[1,1]))
1/(1+exp(-glm.sum$coefficients[2,1]))
- Así que la "intercepción" que se puso en el
z = 0 + 2*x1z
no se muestra en el primer gráfico porque espero que no tenga el mismo significado que el intercepto del modelo lineal. ¿Cuál es el papel del intercepto en el modelo de regresión? De la forma en que está codificado, el cambio del intercepto en el logaritmo de las probabilidades aquíz = intercept + 2*x1z
, cambia la altura de la línea. Si este "intercepto" es lo suficientemente grande, todos los valores están por encima de 0 (logaritmo de probabilidades) y, por tanto, todos los valores de respuesta son 1. Entonces, ¿qué significa ese "intercepto"? - Además, sé que sólo hay 20 puntos en la simulación, pero ¿por qué la línea está tan por debajo de los datos en el gráfico de probabilidades logarítmicas?