Announcement

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

  • Multiple Imputation chained equation not converging

    Dear All

    Can you please help with the issue of non-convergence in the multiple imputations. I am trying to impute as follows
    mi set mlong
    mi register imputed varlist...
    mi register regular varlist ( list of complete case variables including outcomes)
    mi impute chained (regress) continuos variables (mlogit) categorical variables = regular vairables , add(10), augment , noisily

    with the noisily command, I am able to see that one of the main variables is causing a problem but unfortunately this is the variable I am desperate to impute and cannot afford to drop from the imputation model.

    Can you please help



  • #2
    Using the augment option would be the first recommendation, but you already did so. The next potential recommendation would be to switch to using KNN (k nearest neighbors) imputation, where observations are in each imputation to one of the k nearest neighbors (you can specify k, and I recall that Stata's default value is probably too low) instead of mlogit.
    Be aware that it can be very hard to answer a question without sample data. You can use the dataex command for this. Type help dataex at the command line.

    When presenting code or results, please use the code delimiters format them. Use the # button on the formatting toolbar, between the " (double quote) and <> buttons.

    Comment


    • #3
      Weiwen gives excellent advice, as always. I'll just make a more general comment. In my experience with -mi impute chained-, the -mlogit- imputation is very, very brittle. It seems to converge only when all of the -mlogit- outcomes are more or less evenly distributed in the sample, and all of the predictors take on all of their values frequently in every outcome category. Put the other way, if any combination of a predictor and an outcome is uncommon in the data set, you are likely to get non-convergence. At least in my work, converging chained imputation with -mlogit- doesn't happen very often.

      Comment


      • #4
        Thanks for the kind words, Clyde!

        I am going to correct an error of mine: I meant to suggest predictive mean matching, which does match each case with missing values to one of its k nearest neighbors (selected randomly) with similar estimated values of the variable in question.

        As Paul Allison wrote in 2015, there has not been a lot of theoretical work on PMM. It appears to work acceptably well in simulations. Stata's default is to match from the single nearest neighbor, i.e. k = 1, which is likely to produce imputations that are not variable enough (hence, biasing your standard errors too small). Allison suggested using 5 to 10 neighbors instead. If your sample is small, k = 10 will produce match to neighbors that are too far away, but k = 10 should work better in large samples.

        Last, we have all assumed that you do have a variable with unordered categories. I doubt this is the case, but I suppose it's worth asking if that variable actually has ordered categories. That would mean you could (and maybe should) use -ologit-, and that could have less trouble converging.
        Be aware that it can be very hard to answer a question without sample data. You can use the dataex command for this. Type help dataex at the command line.

        When presenting code or results, please use the code delimiters format them. Use the # button on the formatting toolbar, between the " (double quote) and <> buttons.

        Comment


        • #5
          Thank you both for kind advice, using PMM i was able to solve my problem.

          Comment


          • #6
            i have a question i want to impute income based on the condition that someone is working. i have recode the variable into working = 1 and not working is 2, but when i impute i still get imputation for both category, how do i specify so i only impute those who are working

            Comment


            • #7
              you don't say anything about what command you are using but several of the available commands have a "cond()" option and my guess is that is what you want; if you need more info, then you need to supply more; please read the FAQ which has lots of good advice on how to ask questions that will get helpful answers

              Comment


              • #8
                thanks for the respons...this is the command


                mi impute chained (regress) lnincome (ologit) Education .......... (logit if Working==1)Working = DISTRIKT sex, add(5) rseed(12345)

                Comment

                Working...
                X