7 votos

¿Cómo probar un modelo de regresión logística se convirtió en una muestra de entrenamiento en los datos a la izquierda utilizando R?

Tengo el Resumen de una salida de regresión logística en R. Yo utiliza datos de entrenamiento para hacer el modelo.

  • ¿Cómo evalúa el modelo de regresión logística se convirtieron en los datos del entrenamiento en los datos a la izquierda hacia fuera?

Mi conjetura ingenua es crear una función y ejecutar cada mismo pruebe que (no incluso seguro cómo tirar que) pero he de imaginar que hay una mejor manera.

15voto

ashwnacharya Puntos 3144

Usted puede utilizar predict() para que. Usted necesita el modelo ajustado a los datos de entrenamiento, y los datos de su grupo de prueba. Con type="response", obtendrá las probabilidades pronosticadas, el valor predeterminado es el de la predicción logits.

# generate some data for a logistic regression, all observations
x    <- rnorm(100, 175, 7)                     # predictor variable
y    <- 0.4*x + 10 + rnorm(100, 0, 3)          # continuous predicted variable
yFac <- cut(y, breaks=c(-Inf, median(y), Inf), labels=c("lo", "hi"))    # median split
d    <- data.frame(yFac, x)                    # data frame

# now set aside training sample and corresponding test sample
idxTrn <- 1:70                                 # training sample
idxTst <- !(1:nrow(d) %in% idxTrn)             # test sample -> all remaining obs
# if idxTrn were a logical index vector, this would just be idxTst <- !idxTrn

# fit logistic regression only to training sample
fitTrn <- glm(yFac ~ x, family=binomial(link="logit"), data=d, subset=idxTrn)

# apply fitted model to test sample (predicted probabilities)
predTst <- predict(fitTrn, d[idxTst, ], type="response")

Ahora usted puede comparar la predicción de las probabilidades en contra de la realidad los valores de la clase como más te guste. Usted puede establecer un umbral para la categorización de las probabilidades pronosticadas, y comparar contra categoría de la predicción de las membresías.

> thresh  <- 0.5            # threshold for categorizing predicted probabilities
> predFac <- cut(predTst, breaks=c(-Inf, thresh, Inf), labels=c("lo", "hi"))
> cTab    <- table(yFac[idxTst], predFac, dnn=c("actual", "predicted"))
> addmargins(cTab)
      predicted
actual lo hi Sum
   lo  12  4  16
   hi   5  9  14
   Sum 17 13  30

Tenga en cuenta que el dataframe suministrado a predict() necesita tener los mismos nombres de variables como el df se utiliza en la llamada a glm(), y los factores a tener los mismos niveles en el mismo orden. Si usted está interesado en k-fold cross validation, eche un vistazo a la cv.glm() función de paquete de boot.

5voto

Jay Puntos 395

Puede que desee echar un vistazo cercano al paquete de Intercalación que tiene mucho soporte para este tipo de análisis. Sus cuatro viñetas dan una buena descripción de cómo puede ayudar con esto.

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