pROC test run: http://rpubs.com/kaz_yos/pROC-coords
ROC曲線とその比較 (in Japanese): http://rpubs.com/kaz_yos/1713
library(pROC)
data(aSAH)
head(aSAH)
## gos6 outcome gender age wfns s100b ndka
## 29 5 Good Female 42 1 0.13 3.01
## 30 5 Good Female 37 1 0.14 8.54
## 31 5 Good Female 42 1 0.10 8.09
## 32 5 Good Female 27 1 0.04 10.42
## 33 1 Poor Female 42 3 0.13 17.40
## 34 1 Poor Male 48 2 0.10 12.75
## Logistic regression
fitLogistic <- glm(formula = outcome ~ gender + age + s100b + ndka,
family = binomial(link = "logit"),
data = aSAH)
summary(fitLogistic)
##
## Call:
## glm(formula = outcome ~ gender + age + s100b + ndka, family = binomial(link = "logit"),
## data = aSAH)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.974 -0.753 -0.504 0.707 2.239
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.3322 1.0110 -3.30 0.00098 ***
## genderFemale -1.1025 0.5049 -2.18 0.02900 *
## age 0.0335 0.0183 1.83 0.06663 .
## s100b 4.9955 1.2758 3.92 0.00009 ***
## ndka 0.0290 0.0168 1.73 0.08374 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 148.04 on 112 degrees of freedom
## Residual deviance: 113.08 on 108 degrees of freedom
## AIC: 123.1
##
## Number of Fisher Scoring iterations: 5
## Easier view
library(epicalc)
logistic.display(fitLogistic)
##
## Logistic regression predicting outcome : Poor vs Good
##
## crude OR(95%CI) adj. OR(95%CI) P(Wald's test) P(LR-test)
## gender: Female vs Male 0.46 (0.21,1.02) 0.33 (0.12,0.89) 0.029 0.026
##
## age (cont. var.) 1.03 (1,1.06) 1.03 (1,1.07) 0.067 0.061
##
## s100b (cont. var.) 134.87 (12.9,1409.56) 147.75 (12.12,1800.75) < 0.001 < 0.001
##
## ndka (cont. var.) 1.02 (0.99,1.05) 1.03 (1,1.06) 0.084 0.076
##
## Log-likelihood = -56.5391
## No. of observations = 113
## AIC value = 123.0783
resLroc <- lroc(fitLogistic)
resLroc$auc
## [1] 0.8096
resRoc <- roc(aSAH$outcome ~ fitLogistic$fitted)
plot(resRoc, legacy.axes = TRUE)
##
## Call:
## roc.formula(formula = aSAH$outcome ~ fitLogistic$fitted)
##
## Data: fitLogistic$fitted in 72 controls (aSAH$outcome Good) < 41 cases (aSAH$outcome Poor).
## Area under the curve: 0.81
library(rms)
resLrm <- lrm(formula = outcome ~ gender + age + s100b + ndka,
data = aSAH,
x = TRUE, y = TRUE)
resLrm
##
## Logistic Regression Model
##
## lrm(formula = outcome ~ gender + age + s100b + ndka, data = aSAH,
## x = TRUE, y = TRUE)
##
## Model Likelihood Discrimination Rank Discrim.
## Ratio Test Indexes Indexes
## Obs 113 LR chi2 34.96 R2 0.364 C 0.809
## Good 72 d.f. 4 g 1.844 Dxy 0.619
## Poor 41 Pr(> chi2) <0.0001 gr 6.320 gamma 0.619
## max |deriv| 0.000003 gp 0.285 tau-a 0.289
## Brier 0.165
##
## Coef S.E. Wald Z Pr(>|Z|)
## Intercept -3.3322 1.0111 -3.30 0.0010
## gender=Female -1.1025 0.5049 -2.18 0.0290
## age 0.0335 0.0183 1.83 0.0666
## s100b 4.9955 1.2758 3.92 <0.0001
## ndka 0.0290 0.0168 1.73 0.0838