Definire un modello che consenta di prevedere la presenza di ipotiroidismo, questo significa determinare:
Il primo problema consiste nel definire il set di variabili esplicative da utilizzare; in questo ambito si possono seguire due strade:
In entrambi i casi si deve comunque tenere conto della diversa natura/disponibilità delle variabili esplicative: alcune informazioni sono di più rapida disponibilità (alcune variabili qualitative come ad esempio dermatopatia) ed altre che invece derivano da misurazioni e che possono essere espresse sia su scala nominale sia su scala quantitativa (colesterolo).
In riferimento a queste ultime variabili contunue (Colesterolomgdl, Hct, T4nmoll e TSHngml003038), sono state definite corrispondenti variabili per classi definite secondo i seguenti criteri:
Sulla base delle indicazioni fornite sono stati definiti quattro modelli in cui la variabile dicotomica obiettivo Hypo_eu può essere funzione di alcune variabili ritenute rilevanti e che possono essere disponibili per i veterinari a diversi livelli. In particolare dati come il colesterolo o l’ematocrito possono essere ottenute tramite analisi del sangue standard e a loro volta possono essere espresse per classi o nella specifica unità di misura; altre informazioni come T4 e TSH sono invece fornite per mezzo di analisi più specifiche, ed anche in questo caso si possono avere per classi o nell’unità di misura specifica.
In una seconda tipologia di modelli vengono invece utilizzate informazioni prodotte da analisi più approfondite, ed in specifico i dati del T4 e del TSH:
Riassumendo sono stati analizzati i seguenti modelli:
L’altro aspetto da definire sono gli algoritmi da utilizzare. Al momento sono stati utilizzati:
La valutazione della capacità previsiva degli algoritmi è stata effettuata utilizzando il metodo del training/test dataset, ed in specifico dividendo i dati in un campione casuale di training pari al 75% delle osservazioni ed un dataset di test con il restante 25% delle osservazioni. Il primo dataset è quindi stato utilizzato per definire le regole di classificazione, il secondo è invece utilizzato per valutare l’effettiva capacità previsiva dell’algoritmo su dati non utilizzati per le costruzione delle regole di classificazione. La capacità previsiva è stata valutata per mezzo degli indici:
Per ovviare ad eventuali problemi legati alla selezione casuale dei campioni di training e test, si è optato per una replicazione per 1000 volte di tali campioni, ottenendo quindi 1000 misurazioni dei diversi indici di capacità previsiva.
Le analisi sono state effuttuate escludendo le osservazioni con dati mancanti.
| N | % | |
|---|---|---|
| eu | 206 | 73 |
| hypo | 76 | 27 |
| Sum | 282 | 100 |
In termini di accuratezza si osserva come, in complesso, vi sia un miglioramento nel passaggio dal modello 1 al modello 2 e ai modelli con le variabili T4 e TSH. I modelli 3 e 4, in cui queste due ultime variabili sono espresse in termini di classi o in termini quantitativi, non presentano invece sostanziali differenze.
Considerazioni simili possono essere fatte anche in riferimento agli altri indicatori utilizzati.
## Warning: Removed 5 rows containing non-finite values (stat_boxplot).
## Warning: Removed 5 rows containing non-finite values (stat_boxplot).
Per i diversi modelli analizzati si osserva come gli algoritmi che forniscono le migliori prestazioni previsive siano diversi: nel modello 1 le prestazioni migliori sono date dal SVM, il modello 2 è caratterizzato dalla logistica, seguita da SVM per i modelli 3 e 4 le maggiori capacità previsive sono invece fornite dagli algoritmi di bagging (randomForest e cForest) e boosting (GBM)
| method | Accuracy | Kappa | F1 | Sensitivity | Specificity | Precision | Balanced.Accuracy | AUC |
|---|---|---|---|---|---|---|---|---|
| SVM | 0.790 | 0.437 | 0.575 | 0.541 | 0.882 | 0.629 | 0.712 | 0.775 |
| Logistic | 0.781 | 0.398 | 0.529 | 0.480 | 0.897 | 0.663 | 0.689 | 0.810 |
| GBM | 0.782 | 0.397 | 0.528 | 0.475 | 0.899 | 0.668 | 0.687 | 0.810 |
| NaiveBayes | 0.786 | 0.393 | 0.517 | 0.448 | 0.914 | 0.691 | 0.681 | 0.809 |
| CART | 0.770 | 0.347 | 0.477 | 0.416 | 0.905 | 0.663 | 0.660 | 0.737 |
| cTree | 0.776 | 0.354 | NA | 0.416 | 0.913 | NA | 0.665 | 0.775 |
| rForest | 0.780 | 0.320 | NA | 0.316 | 0.954 | NA | 0.635 | 0.790 |
| cForest | 0.780 | 0.373 | NA | 0.433 | 0.912 | NA | 0.672 | 0.804 |
| method | Accuracy | Kappa | F1 | Sensitivity | Specificity | Precision | Balanced.Accuracy | AUC |
|---|---|---|---|---|---|---|---|---|
| Logistic | 0.851 | 0.583 | 0.675 | 0.588 | 0.949 | 0.814 | 0.769 | 0.865 |
| SVM | 0.854 | 0.581 | 0.669 | 0.562 | 0.962 | 0.848 | 0.762 | 0.863 |
| NaiveBayes | 0.845 | 0.557 | 0.650 | 0.545 | 0.957 | 0.829 | 0.751 | 0.859 |
| GBM | 0.838 | 0.546 | 0.646 | 0.565 | 0.939 | 0.780 | 0.752 | 0.850 |
| cForest | 0.836 | 0.534 | 0.634 | 0.545 | 0.944 | 0.785 | 0.744 | 0.839 |
| cTree | 0.825 | 0.493 | 0.594 | 0.492 | 0.949 | 0.797 | 0.720 | 0.777 |
| CART | 0.792 | 0.455 | 0.593 | 0.576 | 0.873 | 0.632 | 0.725 | 0.773 |
| rForest | 0.825 | 0.490 | 0.592 | 0.483 | 0.952 | 0.793 | 0.718 | 0.836 |
| method | Accuracy | Kappa | F1 | Sensitivity | Specificity | Precision | Balanced.Accuracy | AUC |
|---|---|---|---|---|---|---|---|---|
| GBM | 0.952 | 0.877 | 0.910 | 0.933 | 0.959 | 0.893 | 0.946 | 0.980 |
| NaiveBayes | 0.951 | 0.874 | 0.908 | 0.928 | 0.960 | 0.895 | 0.944 | 0.983 |
| rForest | 0.950 | 0.874 | 0.908 | 0.931 | 0.958 | 0.891 | 0.945 | 0.979 |
| Logistic | 0.950 | 0.874 | 0.908 | 0.929 | 0.958 | 0.892 | 0.944 | 0.980 |
| cForest | 0.950 | 0.873 | 0.908 | 0.927 | 0.959 | 0.894 | 0.943 | 0.981 |
| CART | 0.940 | 0.848 | 0.889 | 0.922 | 0.946 | 0.865 | 0.934 | 0.953 |
| SVM | 0.924 | 0.811 | 0.863 | 0.909 | 0.932 | 0.838 | 0.921 | 0.979 |
| cTree | 0.925 | 0.806 | 0.857 | 0.867 | 0.946 | 0.863 | 0.907 | 0.964 |
| method | Accuracy | Kappa | F1 | Sensitivity | Specificity | Precision | Balanced.Accuracy | AUC |
|---|---|---|---|---|---|---|---|---|
| rForest | 0.957 | 0.888 | 0.918 | 0.912 | 0.974 | 0.928 | 0.943 | 0.984 |
| GBM | 0.955 | 0.885 | 0.916 | 0.925 | 0.967 | 0.911 | 0.946 | 0.987 |
| cForest | 0.955 | 0.884 | 0.915 | 0.922 | 0.968 | 0.913 | 0.945 | 0.984 |
| cTree | 0.946 | 0.863 | 0.900 | 0.918 | 0.957 | 0.888 | 0.938 | 0.947 |
| SVM | 0.945 | 0.860 | 0.898 | 0.913 | 0.958 | 0.888 | 0.935 | 0.988 |
| CART | 0.947 | 0.861 | 0.897 | 0.881 | 0.972 | 0.923 | 0.926 | 0.948 |
| Logistic | 0.944 | 0.856 | 0.894 | 0.901 | 0.961 | 0.895 | 0.931 | 0.988 |
| NaiveBayes | 0.937 | 0.833 | 0.874 | 0.828 | 0.978 | 0.933 | 0.903 | 0.980 |
Il modello 1 è stato definito in base ad ipotesi di ricerca che identificano, come rilevanti, le classi di colesterolo e Hct e la presenza/assenza di dermatopatia; in realtà nel dataset sono disponibili anche altre variabili qualitative di immediata valutazione da parte del veterinario (è vero?): ASTENIA, LETARGIADEPRESSIONE, PUPD, APPETITO, OBESITÀ, ALOPECIA, ALTERAZIONINEURO.
Risultati modello 1 esteso:
Capacità previsiva per algoritmo:| method | Accuracy | Kappa | F1 | Sensitivity | Specificity | Precision | Balanced.Accuracy | AUC |
|---|---|---|---|---|---|---|---|---|
| Logistic | 0.843 | 0.580 | 0.683 | 0.639 | 0.920 | 0.749 | 0.780 | 0.838 |
| NaiveBayes | 0.829 | 0.560 | 0.675 | 0.672 | 0.889 | 0.692 | 0.780 | 0.848 |
| GBM | 0.843 | 0.568 | 0.668 | 0.603 | 0.932 | 0.770 | 0.767 | 0.837 |
| SVM | 0.844 | 0.568 | 0.666 | 0.590 | 0.938 | 0.784 | 0.764 | 0.836 |
| rForest | 0.840 | 0.554 | 0.655 | 0.579 | 0.937 | 0.775 | 0.758 | 0.852 |
| CART | 0.804 | 0.458 | 0.581 | 0.521 | 0.908 | 0.689 | 0.714 | 0.770 |
| cForest | 0.824 | 0.479 | 0.575 | 0.454 | 0.963 | 0.827 | 0.709 | 0.850 |
| cTree | 0.794 | 0.414 | 0.533 | 0.466 | 0.917 | 0.698 | 0.691 | 0.766 |
Variable importance per algoritmo:
Se consideriamo l’algoritmo di regressione Logistica, che in complesso fornisce i risultati migliori, e confrontiamo i risultati che si ottengono replicando 100 volte i modelli:
| model | Accuracy | Kappa | AUC | Sensitivity | Specificity | Precision | F1 | Balanced.Accuracy |
|---|---|---|---|---|---|---|---|---|
| All | 0.850 | 0.595 | 0.832 | 0.648 | 0.923 | 0.756 | 0.693 | 0.786 |
| Rid5 | 0.851 | 0.594 | 0.838 | 0.639 | 0.928 | 0.767 | 0.691 | 0.783 |
| Rid6 | 0.856 | 0.606 | 0.836 | 0.637 | 0.936 | 0.787 | 0.698 | 0.786 |
| Mod | 0.784 | 0.398 | 0.809 | 0.482 | 0.895 | 0.655 | 0.528 | 0.689 |