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
.