Challenge April-May 2015

Patient Diagnosis Decision  Solutions

This month we have a problem from the predictive analytics domain.

Making a correct diagnosis on a patient is a very challenging task for a doctor.  A complex disease can manifest through any number of symptoms which often leaves ‘trial and error’ as the only method for arriving at the correct diagnosis.  To aid doctors in this daunting task, mathematical modeling can be used to help guide a diagnosis.

PatientDiagnosis
The table on the left shows 20 patients with varying symptoms and corresponding diagnoses.  For example, Patient #1 reported symptoms of sneezing and a sore throat and was found to have a Cold.  Patient #20 exhibited symptoms of fatigue and sneezing which was found to be allergies.  All diagnoses were confirmed through lab tests.
Question:  Patient 21 has not been diagnosed yet but is exhibiting symptoms of stuffy nose, sneezing, and sore throat.  Using only the data in this table, rank the three diagnoses (Cold, Flu, and Allergies) in order of how likely Patient 21 has each.

This problem was initially presented among other PuzzlOR challenges 5 years ago. Let’s see how modern decision management tools can represent and solve this simple predictive analytics problem in a way that subject matter experts (neither programmers nor statisticians) can understand it.

Send your solutions to DecisionManagementCommunity@gmail.com before May 31, 2015.

Solutions:

 

1 Response to Challenge April-May 2015

  1. Thank you for publishing my submission! Today realized that I had written the code in a somewhat hasty and partly awkward fashion.
    Here’s a cleaner and shorter version of the R code on the prediction using naive Bayes:

    library(e1071)
    patients <- read.csv(‘patients.dat’, sep=’\t’)
    illness <- factor(patients[-21,5])
    for (i in 1:4) { patients[,i] <- as.numeric(patients[,i]) }
    patients_sympt_train <- patients[-21,-5]
    patient_21_sympts <- patients[21,-5]
    patient_classifier <- naiveBayes(patients_sympt_train,illness)
    patient_prediction <- predict(patient_classifier, patient_21_sympts,type=”raw”)
    print(patient_prediction)

Leave a comment