I am trying to model hospital readmission using both categorical and nominal variables. Laboratory data comprises a big chunk of the nominal variables, the problem is not every patient has laboratory tests done, and for those who do, not the same tests are taken. So, for the 18 laboratory predictors, all contain missing data (ranging from 36 to 58 per cent, with 33 per cent of patients not having tests done) and I am not sure on how to deal with that.

If I understand correctly, MNAR means the missingness is related to what is being measured and with MAR, this is not the case and missing data can be predicted from other collected information.

From my point of view, laboratory data falls a bit in between since decision to take tests is a bit subjective depending on different clinicians, but tests are also not taken because the measured variables are expected to be OK?

What would the right approach be in this case? I have been considering:

  • Impute Lab Data
  • Categorize the data such that I have it coded as No test taken/ Normal value/ High value / Low value (or something similar)

Edit: The ultimate purpose of the model would be to be used for discharge of patients and it would be expected that some of those would not have data for lab tests - so I think it would be good to have a variable representing that (categorize), but I am quite inexperienced in this area.

  • 2
    $\begingroup$ MNAR is actually that after controlling for causes of missingness, missingness still depends on the missing value. If you have a variable representing the need for a laboratory test (i.e., the expectation that the tests are necessary/not necessary), then your data may be thought of as MAR. Otherwise, you may have to make a big assumption or settle for MNAR data. $\endgroup$
    – Noah
    Commented Aug 3, 2017 at 17:38
  • 2
    $\begingroup$ I don't have any variable representing that need. Would my second option be best in this case, then? The ultimate purpose of the model would be to be used for discharge of patients and it would be expected that some of those would not have data for lab tests - so I think it would be good to have a variable representing that... $\endgroup$ Commented Aug 3, 2017 at 19:15
  • $\begingroup$ Two questions. 1) Which value will be replacing the missing data points? 2) Forgive me if I'm wrong, but if the point is to use your model to discharge patients and your data is based only on lab tests, patients who have not had lab work done are going to get 50/50 chances of being recommended for discharge, no? $\endgroup$
    – LmnICE
    Commented Aug 3, 2017 at 19:35
  • 1
    $\begingroup$ Hi @LmnICE,1) Missing data points would be categorized as "No test performed" or something similar, while the ones that are not missing would be categorised as values in normal range/ Higher / Lower. 2) I do have additional data (demographics, administrative data, such as age, sex, diagnosis, etc.) It's just that those variables are complete for the most part - Sorry if this wasn't clear in the question. $\endgroup$ Commented Aug 3, 2017 at 19:39
  • $\begingroup$ Imputation usually implies attribution of some valid value to missing data. For example, if the normal range for test X is 90-110, assume that patients without lab data would have tested in the 90-110 range. Since a large part of your dataset has missing values, imputation would probably bias your analyses quite a bit. $\endgroup$
    – LmnICE
    Commented Aug 3, 2017 at 20:03

1 Answer 1


You seem to have two problems disguised as one. The first problem is how to include in your model patients who haven't had any lab work done. In this case, since a large part of your dataset (33%) is in this category, imputation would bias your analyses quite a bit. Depending on how many patients (actual number of patients, instead of a percentage) are in this category, perhaps it would be best to create a separate model for patients without lab tests.

The second problem is how to deal with the fact that not all patients who have lab work done do all available tests. I see two ways of attacking this problem:

  • Creating a model which deals with this "natively". As an example, a points-based model where each out-of-ordinary test result gives the patient points, and after a threshold is achieved, recommend against discharge. Absence of any one lab test would yield some preset number of points; or
  • Imputing random values to the results of missing lab tests and use simulation to create a distribution of the results of your model. For example, say you are modeling patient health; your output variable would be "health". Since patient #Y hasn't had test X done, assume a random value for this test. Use your model to calculate patient #Y "health" given this random value for test X. Record this value, and repeat this procedure a million times, each time imputing a random value to test X. In the end, you will have a range of values for patient #Y "health" (in other words, its distribution), which you can use to determine whether patient #Y can be discharged. The more lab tests are missing, the more "spread out" a patient's "health" will be.

Despite both problems involving missing data, they are in my opinion different due to their relative magnitudes. In the first problem, 33% of your data is missing. In the second one, 36% to 58% of the lab tests are missing, but not all at the same time (I presume). This leads me to believe that any one patient will probably have an adequate number of tests done to assess their health.

Please note that these are suggestions for a first approach to solving your problems. You should implement them and see if they give satisfactory results, and then modify them according to what suits you and your problem best.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.