Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Multiple imputation

    Hi everyone,

    I have a dataset of 500 patients divided into two groups:
    • Heart transplant recipients
    • Patients with a ventricular assist device (artificial heart / LVAD)
    About 20% of the values in the covariates are missing. I need to perform multiple imputation (mi impute chained, etc.), but ultimately I want to end up with only one single complete dataset (not the usual m > 1 imputed datasets) because afterwards I plan to estimate propensity scores and perform matching or weighting (teffects ipw, psmatch2, pscore, etc.), and most of these commands still do not fully support the mi structure.

    My question is: what is the most accepted/recommended practice in this situation when you need just one imputed dataset for subsequent propensity score analysis? Common options I’ve seen are:
    1. Run multiple imputation (e.g., m=20) and simply pick one of the imputed datasets (usually the first one: _1_)
    2. Convert to wide and average the imputations across the m datasets to create a single “consensus” dataset
    3. Other approaches?
    I would greatly appreciate your advice on the best way to proceed (and, if possible, example code).

    Thank you very much!

  • #2
    propensity score and Mi can be combined; here are some citations:

    Granger, E. et al. (2019), "Avoiding pitfalls when combining multiple imputation and propensity scores," Statistics in Medicine, ;38:5120–5132.

    Leyrat, C, et al. (2019), "Propensity score analysis with partially observed covariates: How should multiple imputation be used?", Statistical methods in medical research, 28(1) 3–19


    There is also lit on using the results; see, e.g.,

    Ségalas, C, et al. (2023), "Propensity score matching after multiple imputation when a confounder has missing data", Statistics in Medicine, 42:1082–1095.

    your research question is not even mentioned so I cannot give direct advice on what you should do


    Comment


    • #3
      Our research question is: we are comparing the survival of patients with a total artificial heart versus those who received a cardiac transplant.
      Thanks

      Comment


      • #4
        Rich Goldstein gave you excellent advice, as in general, you can combine matching or weighting approaches with Stata, even if Stata does not support this out of the box. For example, you could also first impute the data, then apply entropy balancing to each individual sample, create the balancing weight, and then use these weights in a model of your choice (regress, logit, ...). Of course, if I were you, I would carefully check the literature provided first.

        And just another thought on your initial plan: when you have categorical data, simply picking the mean over all imputations can result in nonsensical results. You might want to pick the median or even the mode for some variables.
        Best wishes

        Stata 18.0 MP | ORCID | Google Scholar

        Comment


        • #5
          Augusto:
          to avoid dealing with 20 MI datasets, you can use IPW to handling missing data (see https://bmjopenrespres.bmj.com/content/12/1/e003224).
          Kind regards,
          Carlo
          (Stata 19.0)

          Comment


          • #6
            Thank you very much for your assistance. Your support and insights have been greatly appreciated.

            Comment


            • #7
              Hello Carlo, I have been reviewing the article, but I am still unsure about how to apply IPW.


              gen complete=1 if edad + imc + superf_corp + creatinina_preiq + bilirubina_preiq + nyha + sexo + diabetes + dislipemia + hta + epoc + fumador + inotropos_preiq + ecmo_pre + ventilador_preiq + dialisis_preiq + vasculopatia + iq_previa + sit_critica + miocard_base + paps + gtp + rvp==.

              replace complete=0 if complete !=1


              logi complete edad imc superf_corp creatinina_preiq bilirubina_preiq nyha sexo diabetes
              > dislipemia hta epoc fumador inotropos_preiq ecmo_pre ventilador_preiq dialisis_preiq vasculopatia iq_previa
              > sit_critica miocard_base exitus exitus_cv exitus_nocv t_muerte paps gtp rvp

              outcome does not vary; remember:
              0 = negative outcome,
              all other nonmissing values = positive outcome
              r(2000);

              end of do-file

              r(2000);



              Obs<.
              +------------------------------
              | | Unique
              Variable | Obs=. Obs>. Obs<. | values Min Max
              -------------+--------------------------------+------------------------------
              edad | 2 467 | 16 65 80
              imc | 11 458 | 345 16.5607 41.5332
              superf_corp | 2 467 | 313 1.36 2.64
              creatinina~q | 11 458 | 151 .3 5.22
              bilirubina~q | 35 434 | 128 .1 15
              nyha | 3 466 | 3 2 4
              sexo | 2 467 | 2 0 1
              diabetes | 3 466 | 2 0 1
              dislipemia | 16 453 | 2 0 1
              hta | 3 466 | 2 0 1
              epoc | 30 439 | 2 0 1
              fumador | 22 447 | 2 0 1
              inotropos_~q | 2 467 | 2 0 1
              ecmo_pre | 1 468 | 2 0 1
              ventilador~q | 5 464 | 2 0 1
              dialisis_p~q | 56 413 | 2 0 1
              vasculopatia | 23 446 | 2 0 1
              iq_previa | 10 459 | 2 0 1
              sit_critica | 1 468 | 2 0 1
              paps | 44 425 | 71 15 106
              gtp | 58 411 | 31 -6 33
              rvp | 60 409 | 199 -1.5 11
              -----------------------------------------------------------------------------

              Comment


              • #8
                Augusto:
                you may want to take a look at
                Solving missing data problems using inverse-probability-weighted estimators - The Stata Blog
                Kind regards,
                Carlo
                (Stata 19.0)

                Comment


                • #9
                  Many thanks, Carlos.

                  Comment

                  Working...
                  X