X1 = c(29,30,31,31,32,29,30,31,32,33)
X2 = c(62,83,74,88,68,41,74,21,50,33)
Y = c(0,0,0,0,0,1,1,1,1,1)
dados = data.frame(X1,X2,Y)
show(dados)
## X1 X2 Y
## 1 29 62 0
## 2 30 83 0
## 3 31 74 0
## 4 31 88 0
## 5 32 68 0
## 6 29 41 1
## 7 30 74 1
## 8 31 21 1
## 9 32 50 1
## 10 33 33 1
O pacote glm2 ajusta modelos lineares generalizados usando a mesma especificação de modelo que a função base glm, mas com um método de ajuste padrão modificado. O método fornece maior estabilidade para modelos que podem falhar em convergir usando glm.
library(glm2); library(rsq)
ajuste = glm2(Y ~ X1+X2, data = dados, family = binomial(link = "logit"))
summary(ajuste)
##
## Call:
## glm2(formula = Y ~ X1 + X2, family = binomial(link = "logit"),
## data = dados)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.17660 -0.54685 -0.07997 0.30993 1.88216
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 7.941953 24.469012 0.325 0.746
## X1 0.009833 0.770999 0.013 0.990
## X2 -0.132726 0.081249 -1.634 0.102
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 13.8629 on 9 degrees of freedom
## Residual deviance: 6.7789 on 7 degrees of freedom
## AIC: 12.779
##
## Number of Fisher Scoring iterations: 6
rsq(ajuste)
## [1] 0.5603035
A curva AUC - ROC é uma medida de desempenho para os problemas de classificação em várias configurações de limite. ROC é uma curva de probabilidade e AUC representa o grau ou medida de separabilidade. Diz o quanto o modelo é capaz de distinguir entre as classes. Quanto maior a AUC, melhor será o modelo em prever 0 classes como 0 e 1 classe como 1. Por analogia, quanto maior a AUC, melhor será o modelo em distinguir entre pacientes com a doença e sem doença.
A curva ROC é traçada com TPR contra FPR onde TPR está no eixo y e FPR está no eixo x.
library(ROSE)
roc.curve(dados$Y, fitted(ajuste), col=2, lwd=2, lty=2)
## Area under the curve (AUC): 0.880
Um modelo excelente tem AUC próximo de 1, o que significa que tem uma boa medida de separabilidade. Um modelo pobre tem um AUC próximo a 0, o que significa que ele tem a pior medida de separabilidade. Na verdade, significa que está retribuindo o resultado. Ele está prevendo 0s como 1s e 1s como 0s. E quando AUC é 0,5, significa que o modelo não tem capacidade de separação de classes de qualquer espécie.