es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función R para encontrar la sensibilidad dado un valor alfa.

Soy nuevo en el análisis de datos con R, por lo que agradezco cualquier ayuda.
Tengo un conjunto de datos con algunas variables explicativas y una variable objetivo. La variable objetivo solo puede ser Sí o No. Por lo tanto, me gustaría utilizar la regresión logística para ajustar el modelo.

Así es como trazo una curva ROC.

myModel = train(
  myTarget ~ .,
  myTrainData,
  method = "glm",
  metric = "ROC",
  trControl = myControl,
  na.action  = na.pass
)
myPred = predict(myModel , newdata = myTestData, type="prob")
eval <- evalm(data.frame(myPred , myTestData$myTarget))
eval$roc

Ahora, me gustaría encontrar la sensibilidad dada un valor alfa / error tipo I.

Y mostrar la información de la siguiente manera, si es posible, ¿cómo puedo lograrlo?

confusionMatrix(myPred, reference = myTestData$myTarget)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para encontrar la sensibilidad dado un valor alfa (error de Tipo I), puedes utilizar la función performance del paquete ROCR. Aquí está el código para hacerlo:

    “`{r}
    library(ROCR)

    Obtener las probabilidades de predicción

    pred = prediction(myPred[,2], myTestData$myTarget)

    Obtener la matriz de confusión para diferentes valores de umbral

    perf = performance(pred, “tpr”, “fpr”)
    threshold = perf@alpha.values[[1]]
    fpr = perf@x.values[[1]]
    tpr = perf@y.values[[1]]
    roc.df = data.frame(threshold, fpr, tpr)
    roc.df$sensitivity = roc.df$tpr
    roc.df$alpha = 1 – roc.df$sensitivity

    Encontrar la sensibilidad para el valor alfa deseado

    alpha.value = 0.05
    sensitivity = roc.df[which(roc.df$alpha <= alpha.value),][1,”sensitivity”]


    Para mostrar la matriz de confusión, puedes utilizar la función `confusionMatrix` del paquete `caret`: ```{r} library(caret) # Obtener la clase predicha en función del umbral predictions = factor(ifelse(myPred[,2] > threshold[which.max(tpr[fpr <= alpha.value])], 'Sí', 'No')) # Obtener la matriz de confusión confusionMatrix(predictions, reference = myTestData$myTarget)

    Esto debería darte la matriz de confusión y otras métricas de rendimiento basadas en el umbral seleccionado.

Comments are closed.