This is an old revision of the document!
Vamos a mirar ADNI, a ver que sale. En principio habria que ajustar tanot por edad como por volumen craneal. A primera vista pareceria una buena opcion, pero una vez que ajusto por edad y volumen total,
library(ADNIMERGE) pop <- adnimerge[adnimerge$VISCODE=="bl" & (adnimerge$DX=="Dementia" | adnimerge$DX=="CN"),]; m1 <- lm(pop$Ventricles ~ pop$ICV) pop$adj_Ventricles = pop$Ventricles - m1$coefficients[[2]]*(pop$ICV- mean(pop$ICV,na.rm=TRUE)) m2 <- lm(pop$adj_Ventricles ~ pop$AGE) pop$vc_Ventricles = pop$adj_Ventricles - m2$coefficients[[2]]*(pop$AGE-mean(pop$AGE,na.rm=TRUE))
Y queda entonces,
Los valores estan demasiado juntos y la correccion los agrupa mas.
al escoger el hipocampo estoy presuponiendo que hay AD, pero vamos a ver que queda,
Pues no esta mal.
Esta es la cosa. Tengo un monton de informacion que podria clasificarme a los sujetos entre Neurodegeneracion SI y Neurodegeneracion NO. Y si tres variables juntas me pueden dar la info mas o menos adecuadad lo suyo es que meta todo lo relevante e intente usarlo al mismo tiempo. Lo primero deberia ser construir el vector de training a partir de los sujetos de ADNI.
> library("e1071") > library("caTools") > library("caTools") > library("ADNIMERGE") > pop <- adnimerge[adnimerge$VISCODE=="bl" & (adnimerge$DX=="Dementia" | adnimerge$DX=="CN"),]; > pop$ND = ifelse(pop$DX == "Dementia", 1, 0) > xt <- pop[, c("Hippocampus", "Entorhinal", "Ventricles","AGE","ICV","ND")]
Este es el vector de training pero voy a probar el algoritmo tambien asi que lo que hare es dividirlo y ver como funciona. Voy a tomar el 70% para entrenar el algoritmo y el restante 30_% para ver los resultados.
> split <- sample.split(xt, SplitRatio = 0.7) > train_cl <- subset(xt, split == "TRUE") > test_cl <- subset(xt, split == "FALSE") > set.seed(120) > classifier_cl <- naiveBayes(ND ~ ., data = train_cl) > y_pred <- predict(classifier_cl, newdata = test_cl) > cm <- table(test_cl$ND, y_pred) > confusionMatrix(cm) Confusion Matrix and Statistics y_pred 0 1 0 248 29 1 46 84 Accuracy : 0.8157 95% CI : (0.7746, 0.8522) No Information Rate : 0.7224 P-Value [Acc > NIR] : 7.984e-06 Kappa : 0.5609 Mcnemar's Test P-Value : 0.06467 Sensitivity : 0.8435 Specificity : 0.7434 Pos Pred Value : 0.8953 Neg Pred Value : 0.6462 Prevalence : 0.7224 Detection Rate : 0.6093 Detection Prevalence : 0.6806 Balanced Accuracy : 0.7935 'Positive' Class : 0
Y no es perfecto pero esta bien!
Asi que para evaluar los sujetos habria que construir una matriz de datos identica a la de ADNI. Esto no es tan dificil, asi que vamos,
[osotolongo@brick03 bioface]$ xnat_pullfs.pl -s aseg -x bioface19 -o bf_base_aseg.csv [osotolongo@brick03 bioface]$ xnat_pullfs.pl -s aparc -x bioface19 -o bf_base_aparc.csv [osotolongo@brick03 bioface]$ join -t, bf_base_aseg.csv bf_base_aparc.csv > bf_base.csv [osotolongo@brick03 bioface]$ awk -F"," '{print $3","$5}' bioface_np.csv | sed 's/Subjecte/Subject_ID/; s/Edad/AGE/' > bf_age.csv [osotolongo@brick03 bioface]$ join -t, bf_base.csv bf_age.csv > bf_data.csv
Lo demas voy a hacerlo en R,
> base <- read.csv("bf_data.csv") > base$Hippocampus = base$Left.Hippocampus + base$Right.Hippocampus > base$Entorhinal = base$lh.entorhinal.GrayVol + base$rh.entorhinal.GrayVol > base$Ventricles = base$X3rd.Ventricle + base$X4th.Ventricle + base$X5th.Ventricle + base$Left.Lateral.Ventricle + base$Right.Lateral.Ventricle > base$ICV = base$eTIV
Ahora el procedimiento,
> classifier_cl <- naiveBayes(ND ~ ., data = xt) > base$ND <- predict(classifier_cl, newdata = base)