He creado una regresión logística usando el siguiente código:
full.model.f = lm(Ft_45 ~ ., LOG_D)
base.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg)
step(base.model.f, scope=list(upper=full.model.f, lower=~1),
direction="forward", trace=FALSE)
Luego utilicé el resultado para crear un modelo final:
final.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg + IP_util_E2_m02_flg +
AE_NumVisit1_flg + OP_NumVisit1_m01_flg + IP_TotLoS_m02 +
Ft1_45 + IP_util_E1_m05_flg + IP_TotPrNonElecLoS_m02 +
IP_util_E2pl_m03_flg + LTC_coding + OP_NumVisit0105_m03_flg +
OP_NumVisit11pl_m03_flg + AE_ArrAmb_m02_flg)
Luego he predicho los resultados para un conjunto diferente de datos usando la función de predicción:
log.pred.f.v <- predict(final.model.f, newdata=LOG_V)
He podido establecer una curva ROC agradable y he creado una tabla para establecer la sensibilidad y especificidad que me da las respuestas que esperaría.
Sin embargo, lo que estoy tratando de hacer es establecer para cada fila de datos cuál es la probabilidad de que Ft_45 sea 1. Si miro la salida de log.pred.fv obtengo, por ejemplo:
1 -0.171739593
2 -0.049905948
3 0.141146419
4 0.11615669
5 0.07342591
6 0.093054334
7 0.957164383
8 0.098415639
.
.
.
104 0.196368229
105 1.045208447
106 1.05499112
Como solo tengo una idea tentativa de lo que estoy haciendo, estoy luchando por comprender cómo interpretar los valores negativos y más altos de 1, ya que esperaría que la probabilidad esté entre 0 y 1.
Entonces, mi pregunta es si me estoy perdiendo un paso en el que necesito transformar la salida o me he equivocado por completo. Gracias de antemano por cualquier ayuda que pueda ofrecer.
fuente
probs <- exp(predict(logit, type = "response" , newdata=data)
o al menos `probs <- 1 / (1 + exp (-pred))Mirando la documentación de la
predict.glm
, parece que es tan fácil como usar un parámetro adicional en lapredict
llamada:Ver documentación:
fuente