Con la base de datos de R, Aid2, que contiene datos acerca de pacientes con sida,realizaremos un ejercicio de clasifición con AD, y evaluaremos los resultados con una métrica de porcentaje de aciertos y la curva ROC.
library(MASS)
data("Aids2")
str(Aids2)
## 'data.frame': 2843 obs. of 7 variables:
## $ state : Factor w/ 4 levels "NSW","Other",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ sex : Factor w/ 2 levels "F","M": 2 2 2 2 2 2 2 2 2 2 ...
## $ diag : int 10905 11029 9551 9577 10015 9971 10746 10042 10464 10439 ...
## $ death : int 11081 11096 9983 9654 10290 10344 11135 11069 10956 10873 ...
## $ status : Factor w/ 2 levels "A","D": 2 2 2 2 2 2 2 2 2 2 ...
## $ T.categ: Factor w/ 8 levels "hs","hsid","id",..: 1 1 1 5 1 1 8 1 1 2 ...
## $ age : int 35 53 42 44 39 36 36 31 26 27 ...
# Lineal Discriminat Analisys
ad=lda(status~diag+age,data=Aids2)
ad
## Call:
## lda(status ~ diag + age, data = Aids2)
##
## Prior probabilities of groups:
## A D
## 0.3805839 0.6194161
##
## Group means:
## diag age
## A 11021.43 36.78373
## D 10315.77 37.79330
##
## Coefficients of linear discriminants:
## LD1
## diag -0.001901846
## age 0.013479156
#predicción
probs=predict(ad,newdata=Aids2,type="prob")
data.frame(probs)[1:5,]
prediccion=predict(ad,newdata = data.frame(diag=10905,age=35),type="class")
prediccion
## $class
## [1] A
## Levels: A D
##
## $posterior
## A D
## 1 0.5409706 0.4590294
##
## $x
## LD1
## 1 -0.6423339
table(probs$class,Aids2$status)
##
## A D
## A 794 332
## D 288 1429
mean(probs$class==Aids2$status) #porcentaje de bien clasificados
## [1] 0.7819205
# Curva ROC
# Curva ROC
#library(pROC)
#plot.roc(Aids2$status,probs$posterior[,2])