NASAL
N_RETROPOSITION_MM
tree<-rpart::rpart(N_POSITION~N_RETROPOSITION_MM,data=retropostion_data,control = rpart.control(minsplit = 10))
rpart.plot(tree,type=1,
extra=101, box.palette="GnBu",
branch.lty=3, shadow.col="gray", nn=TRUE
)

rpart.rules(tree)
preds<-predict(tree,retropostion_data,type = 'class')
caret::confusionMatrix(preds,as.factor(retropostion_data$N_POSITION))
Confusion Matrix and Statistics
Reference
Prediction CA CP S
CA 13 3 0
CP 5 36 0
S 1 0 5
Overall Statistics
Accuracy : 0.8571
95% CI : (0.7461, 0.9325)
No Information Rate : 0.619
P-Value [Acc > NIR] : 3.041e-05
Kappa : 0.7215
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: CA Class: CP Class: S
Sensitivity 0.6842 0.9231 1.00000
Specificity 0.9318 0.7917 0.98276
Pos Pred Value 0.8125 0.8780 0.83333
Neg Pred Value 0.8723 0.8636 1.00000
Prevalence 0.3016 0.6190 0.07937
Detection Rate 0.2063 0.5714 0.07937
Detection Prevalence 0.2540 0.6508 0.09524
Balanced Accuracy 0.8080 0.8574 0.99138
NORM_N_RETROPOSITION_MM
tree<-rpart::rpart(N_POSITION~NORM_N_RETROPOSITION,data=retropostion_data,control = rpart.control(minsplit = 10))
rpart.plot(tree,type=1,
extra=101, box.palette="GnBu",
branch.lty=3, shadow.col="gray", nn=TRUE
)

rpart.rules(tree)
preds<-predict(tree,retropostion_data,type = 'class')
caret::confusionMatrix(preds,as.factor(retropostion_data$N_POSITION))
Confusion Matrix and Statistics
Reference
Prediction CA CP S
CA 12 2 1
CP 7 37 0
S 0 0 4
Overall Statistics
Accuracy : 0.8413
95% CI : (0.7274, 0.9212)
No Information Rate : 0.619
P-Value [Acc > NIR] : 0.0001057
Kappa : 0.6766
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: CA Class: CP Class: S
Sensitivity 0.6316 0.9487 0.80000
Specificity 0.9318 0.7083 1.00000
Pos Pred Value 0.8000 0.8409 1.00000
Neg Pred Value 0.8542 0.8947 0.98305
Prevalence 0.3016 0.6190 0.07937
Detection Rate 0.1905 0.5873 0.06349
Detection Prevalence 0.2381 0.6984 0.06349
Balanced Accuracy 0.7817 0.8285 0.90000
NORM_N_RETRO_HALF_IOL
tree<-rpart::rpart(N_POSITION~NORM_N_RETRO_HALF_IOL,data=retropostion_data,control = rpart.control(minsplit = 15))
rpart.plot(tree,type=1,
extra=101, box.palette="GnBu",
branch.lty=3, shadow.col="gray", nn=TRUE
)

rpart.rules(tree)
preds<-predict(tree,retropostion_data,type = 'class')
caret::confusionMatrix(preds,as.factor(retropostion_data$N_POSITION))
Confusion Matrix and Statistics
Reference
Prediction CA CP S
CA 11 5 0
CP 5 34 0
S 3 0 5
Overall Statistics
Accuracy : 0.7937
95% CI : (0.673, 0.8853)
No Information Rate : 0.619
P-Value [Acc > NIR] : 0.002361
Kappa : 0.6107
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: CA Class: CP Class: S
Sensitivity 0.5789 0.8718 1.00000
Specificity 0.8864 0.7917 0.94828
Pos Pred Value 0.6875 0.8718 0.62500
Neg Pred Value 0.8298 0.7917 1.00000
Prevalence 0.3016 0.6190 0.07937
Detection Rate 0.1746 0.5397 0.07937
Detection Prevalence 0.2540 0.6190 0.12698
Balanced Accuracy 0.7327 0.8317 0.97414
TEMPORAL
T_RETROPOSITION_MM
tree<-rpart::rpart(T_POSITION~T_RETROPOSITION_MM,data=retropostion_data,control = rpart.control(minsplit = 10))
rpart.plot(tree,type=1,
extra=101, box.palette="GnBu",
branch.lty=3, shadow.col="gray", nn=TRUE
)

rpart.rules(tree)
preds<-predict(tree,retropostion_data,type = 'class')
caret::confusionMatrix(preds,as.factor(retropostion_data$T_POSITION))
Confusion Matrix and Statistics
Reference
Prediction CA CP S
CA 18 4 1
CP 2 32 0
S 0 0 6
Overall Statistics
Accuracy : 0.8889
95% CI : (0.7844, 0.9541)
No Information Rate : 0.5714
P-Value [Acc > NIR] : 4.287e-08
Kappa : 0.8034
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: CA Class: CP Class: S
Sensitivity 0.9000 0.8889 0.85714
Specificity 0.8837 0.9259 1.00000
Pos Pred Value 0.7826 0.9412 1.00000
Neg Pred Value 0.9500 0.8621 0.98246
Prevalence 0.3175 0.5714 0.11111
Detection Rate 0.2857 0.5079 0.09524
Detection Prevalence 0.3651 0.5397 0.09524
Balanced Accuracy 0.8919 0.9074 0.92857
NORM_T_RETROPOSITION
tree<-rpart::rpart(T_POSITION~NORM_T_RETROPOSITION,data=retropostion_data,control = rpart.control(minsplit = 10))
rpart.plot(tree,type=1,
extra=101, box.palette="GnBu",
branch.lty=3, shadow.col="gray", nn=TRUE
)

rpart.rules(tree)
preds<-predict(tree,retropostion_data,type = 'class')
caret::confusionMatrix(preds,as.factor(retropostion_data$T_POSITION))
Confusion Matrix and Statistics
Reference
Prediction CA CP S
CA 13 5 0
CP 5 31 0
S 2 0 7
Overall Statistics
Accuracy : 0.8095
95% CI : (0.6909, 0.8975)
No Information Rate : 0.5714
P-Value [Acc > NIR] : 5.858e-05
Kappa : 0.664
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: CA Class: CP Class: S
Sensitivity 0.6500 0.8611 1.0000
Specificity 0.8837 0.8148 0.9643
Pos Pred Value 0.7222 0.8611 0.7778
Neg Pred Value 0.8444 0.8148 1.0000
Prevalence 0.3175 0.5714 0.1111
Detection Rate 0.2063 0.4921 0.1111
Detection Prevalence 0.2857 0.5714 0.1429
Balanced Accuracy 0.7669 0.8380 0.9821
NORM_T_RETRO_HALF_IOL
tree<-rpart::rpart(T_POSITION~NORM_T_RETRO_HALF_IOL,data=retropostion_data,control = rpart.control(minsplit = 10))
rpart.plot(tree,type=1,
extra=101, box.palette="GnBu",
branch.lty=3, shadow.col="gray", nn=TRUE
)

rpart.rules(tree)
preds<-predict(tree,retropostion_data,type = 'class')
caret::confusionMatrix(preds,as.factor(retropostion_data$T_POSITION))
Confusion Matrix and Statistics
Reference
Prediction CA CP S
CA 13 4 0
CP 5 32 0
S 2 0 7
Overall Statistics
Accuracy : 0.8254
95% CI : (0.709, 0.9095)
No Information Rate : 0.5714
P-Value [Acc > NIR] : 1.731e-05
Kappa : 0.6898
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: CA Class: CP Class: S
Sensitivity 0.6500 0.8889 1.0000
Specificity 0.9070 0.8148 0.9643
Pos Pred Value 0.7647 0.8649 0.7778
Neg Pred Value 0.8478 0.8462 1.0000
Prevalence 0.3175 0.5714 0.1111
Detection Rate 0.2063 0.5079 0.1111
Detection Prevalence 0.2698 0.5873 0.1429
Balanced Accuracy 0.7785 0.8519 0.9821
LS0tCnRpdGxlOiAiSVogSUNMIFBPU0lUSU9OIEFOQUxZU0lTIChOT1JNQUxJWkFUSU9OKSIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRvY19jb2xsYXBzZWQ6IHRydWUKLS0tCgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShza2ltcikKbGlicmFyeShkcGx5cikKbGlicmFyeSh0aWR5cikKbGlicmFyeSh0aWJibGUpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShWSU0pCmxpYnJhcnkocmVhZHIpCmxpYnJhcnkocnBhcnQucGxvdCkKYGBgCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpwb3N0b3BfZGF0YTwtcmVhZHI6OnJlYWRfY3N2KGZpbGUgPSAicG9zdG9wX2RhdGFfY2xlYW5lZF9ub3JtYWxpemVkLXZlcnNpb240LmNzdiIpCnJldHJvcG9zdGlvbl9kYXRhPC1wb3N0b3BfZGF0YSAlPiUgc2VsZWN0KE5BTUUsTk9STV9OX1JFVFJPUE9TSVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PUk1fVF9SRVRST1BPU0lUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT1NJVElPTixOX1JFVFJPUE9TSVRJT05fTU0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfUkVUUk9QT1NJVElPTl9NTSxQT1NJVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9STV9UX1JFVFJPX0hBTEZfSU9MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1JNX05fUkVUUk9fSEFMRl9JT0wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PUk1fVF9SRVRST19JT0wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PUk1fTl9SRVRST19JT0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICU+JSBmaWx0ZXIoIWlzLm5hKFBPU0lUSU9OKSkgJT4lIHNlcGFyYXRlKFBPU0lUSU9OLGludG89YygiTl9QT1NJVElPTiIsIlRfUE9TSVRJT04iKSxzZXA9Jy0nKSAlPiUgZHJvcF9uYShUX1BPU0lUSU9OKSAlPiUgZHJvcF9uYShOT1JNX1RfUkVUUk9QT1NJVElPTikKCgpyZXRyb3Bvc3Rpb25fZGF0YTwtcmV0cm9wb3N0aW9uX2RhdGEgJT4lIG11dGF0ZShUX1BPU0lUSU9OPWlmZWxzZShUX1BPU0lUSU9OPT0iQ00iLCJDQSIsVF9QT1NJVElPTiksTl9QT1NJVElPTj1pZmVsc2UoTl9QT1NJVElPTj09IkNNIiwiQ0EiLE5fUE9TSVRJT04pKQpyZXRyb3Bvc3Rpb25fZGF0YQpgYGAKCiMgTkFTQUwKIyMgTl9SRVRST1BPU0lUSU9OX01NCgpgYGB7cn0KdHJlZTwtcnBhcnQ6OnJwYXJ0KE5fUE9TSVRJT05+Tl9SRVRST1BPU0lUSU9OX01NLGRhdGE9cmV0cm9wb3N0aW9uX2RhdGEsY29udHJvbCA9IHJwYXJ0LmNvbnRyb2wobWluc3BsaXQgPSAxMCkpCnJwYXJ0LnBsb3QodHJlZSx0eXBlPTEsCiAgICAgICAgICAgZXh0cmE9MTAxLCBib3gucGFsZXR0ZT0iR25CdSIsCiAgICAgICAgICAgYnJhbmNoLmx0eT0zLCBzaGFkb3cuY29sPSJncmF5Iiwgbm49VFJVRQogICAgICAgICkKcnBhcnQucnVsZXModHJlZSkKcHJlZHM8LXByZWRpY3QodHJlZSxyZXRyb3Bvc3Rpb25fZGF0YSx0eXBlID0gJ2NsYXNzJykKY2FyZXQ6OmNvbmZ1c2lvbk1hdHJpeChwcmVkcyxhcy5mYWN0b3IocmV0cm9wb3N0aW9uX2RhdGEkTl9QT1NJVElPTikpCmBgYAojIyBOT1JNX05fUkVUUk9QT1NJVElPTl9NTQpgYGB7cn0KdHJlZTwtcnBhcnQ6OnJwYXJ0KE5fUE9TSVRJT05+Tk9STV9OX1JFVFJPUE9TSVRJT04sZGF0YT1yZXRyb3Bvc3Rpb25fZGF0YSxjb250cm9sID0gcnBhcnQuY29udHJvbChtaW5zcGxpdCA9IDEwKSkKcnBhcnQucGxvdCh0cmVlLHR5cGU9MSwKICAgICAgICAgICBleHRyYT0xMDEsIGJveC5wYWxldHRlPSJHbkJ1IiwKICAgICAgICAgICBicmFuY2gubHR5PTMsIHNoYWRvdy5jb2w9ImdyYXkiLCBubj1UUlVFCiAgICAgICAgKQpycGFydC5ydWxlcyh0cmVlKQoKcHJlZHM8LXByZWRpY3QodHJlZSxyZXRyb3Bvc3Rpb25fZGF0YSx0eXBlID0gJ2NsYXNzJykKY2FyZXQ6OmNvbmZ1c2lvbk1hdHJpeChwcmVkcyxhcy5mYWN0b3IocmV0cm9wb3N0aW9uX2RhdGEkTl9QT1NJVElPTikpCmBgYAoKIyMgTk9STV9OX1JFVFJPX0hBTEZfSU9MCgpgYGB7cn0KdHJlZTwtcnBhcnQ6OnJwYXJ0KE5fUE9TSVRJT05+Tk9STV9OX1JFVFJPX0hBTEZfSU9MLGRhdGE9cmV0cm9wb3N0aW9uX2RhdGEsY29udHJvbCA9IHJwYXJ0LmNvbnRyb2wobWluc3BsaXQgPSAxNSkpCnJwYXJ0LnBsb3QodHJlZSx0eXBlPTEsCiAgICAgICAgICAgZXh0cmE9MTAxLCBib3gucGFsZXR0ZT0iR25CdSIsCiAgICAgICAgICAgYnJhbmNoLmx0eT0zLCBzaGFkb3cuY29sPSJncmF5Iiwgbm49VFJVRQogICAgICAgICkKcnBhcnQucnVsZXModHJlZSkKCnByZWRzPC1wcmVkaWN0KHRyZWUscmV0cm9wb3N0aW9uX2RhdGEsdHlwZSA9ICdjbGFzcycpCmNhcmV0Ojpjb25mdXNpb25NYXRyaXgocHJlZHMsYXMuZmFjdG9yKHJldHJvcG9zdGlvbl9kYXRhJE5fUE9TSVRJT04pKQpgYGAKCiMgVEVNUE9SQUwKCiMjIFRfUkVUUk9QT1NJVElPTl9NTQoKYGBge3J9CnRyZWU8LXJwYXJ0OjpycGFydChUX1BPU0lUSU9OflRfUkVUUk9QT1NJVElPTl9NTSxkYXRhPXJldHJvcG9zdGlvbl9kYXRhLGNvbnRyb2wgPSBycGFydC5jb250cm9sKG1pbnNwbGl0ID0gMTApKQpycGFydC5wbG90KHRyZWUsdHlwZT0xLAogICAgICAgICAgIGV4dHJhPTEwMSwgYm94LnBhbGV0dGU9IkduQnUiLAogICAgICAgICAgIGJyYW5jaC5sdHk9Mywgc2hhZG93LmNvbD0iZ3JheSIsIG5uPVRSVUUKICAgICAgICApCnJwYXJ0LnJ1bGVzKHRyZWUpCgpwcmVkczwtcHJlZGljdCh0cmVlLHJldHJvcG9zdGlvbl9kYXRhLHR5cGUgPSAnY2xhc3MnKQpjYXJldDo6Y29uZnVzaW9uTWF0cml4KHByZWRzLGFzLmZhY3RvcihyZXRyb3Bvc3Rpb25fZGF0YSRUX1BPU0lUSU9OKSkKYGBgCgojIyBOT1JNX1RfUkVUUk9QT1NJVElPTgoKYGBge3J9CnRyZWU8LXJwYXJ0OjpycGFydChUX1BPU0lUSU9Ofk5PUk1fVF9SRVRST1BPU0lUSU9OLGRhdGE9cmV0cm9wb3N0aW9uX2RhdGEsY29udHJvbCA9IHJwYXJ0LmNvbnRyb2wobWluc3BsaXQgPSAxMCkpCnJwYXJ0LnBsb3QodHJlZSx0eXBlPTEsCiAgICAgICAgICAgZXh0cmE9MTAxLCBib3gucGFsZXR0ZT0iR25CdSIsCiAgICAgICAgICAgYnJhbmNoLmx0eT0zLCBzaGFkb3cuY29sPSJncmF5Iiwgbm49VFJVRQogICAgICAgICkKcnBhcnQucnVsZXModHJlZSkKCnByZWRzPC1wcmVkaWN0KHRyZWUscmV0cm9wb3N0aW9uX2RhdGEsdHlwZSA9ICdjbGFzcycpCmNhcmV0Ojpjb25mdXNpb25NYXRyaXgocHJlZHMsYXMuZmFjdG9yKHJldHJvcG9zdGlvbl9kYXRhJFRfUE9TSVRJT04pKQpgYGAKCgojIyBOT1JNX1RfUkVUUk9fSEFMRl9JT0wKYGBge3J9CnRyZWU8LXJwYXJ0OjpycGFydChUX1BPU0lUSU9Ofk5PUk1fVF9SRVRST19IQUxGX0lPTCxkYXRhPXJldHJvcG9zdGlvbl9kYXRhLGNvbnRyb2wgPSBycGFydC5jb250cm9sKG1pbnNwbGl0ID0gMTApKQpycGFydC5wbG90KHRyZWUsdHlwZT0xLAogICAgICAgICAgIGV4dHJhPTEwMSwgYm94LnBhbGV0dGU9IkduQnUiLAogICAgICAgICAgIGJyYW5jaC5sdHk9Mywgc2hhZG93LmNvbD0iZ3JheSIsIG5uPVRSVUUKICAgICAgICApCnJwYXJ0LnJ1bGVzKHRyZWUpCgpwcmVkczwtcHJlZGljdCh0cmVlLHJldHJvcG9zdGlvbl9kYXRhLHR5cGUgPSAnY2xhc3MnKQpjYXJldDo6Y29uZnVzaW9uTWF0cml4KHByZWRzLGFzLmZhY3RvcihyZXRyb3Bvc3Rpb25fZGF0YSRUX1BPU0lUSU9OKSkKYGBgCgo=