Announcement

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

  • Using truncreg with mi impute chained

    Big picture: I am conducting an analysis with hormone biomarkers from serum samples. There are several cases where the hormone was below detectable levels. For example, one hormone has a detection level of 0.07. So the person's value for that hormone must be between 0 and 0.069. I am trying to follow the recommendations of this paper (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4838401/) and use multiple imputation to fill in the missing values. I am using the "mi impute chained (truncreg)" command, with a lower limit of 0 and an upper limit of 0.070 (for that particular hormone). I keep getting the error message that there are no observations on m=11. The command runs if I use (regress) instead, but I worry that it could impute a value >0.07, which I know is incorrect. I am just not sure how truncreg can work in this situation.

    Details:
    - I am looking at 12 hormones: cholesterolmgdL HDLmgdL triglyceridesmgdL calc_ldlmgdL new_estronepgmL prolactinngmL estradiolpgmL new_unconj_estriolngmL cortisolugdL new_dheasugdL progesteronengmL new_testosteronengdL
    - 11 people are missing all hormones, because they had insufficient serum samples for analysis.
    - new_unconj_estriolngmL: 4 missing because they are below the limit of detection (LOD) = 0.07
    - new_dheasugdL: 2 missing because they are below the LOD = 15
    - new_testosteronengdL: 17 missing because they are below the LOD = 20
    - I took the log of them because they are non-normal (see below).

    Commands & Results:
    . gen log_cholesterolmgdL=log(cholesterolmgdL)
    (11 missing values generated)

    . gen log_HDLmgdL=log(HDLmgdL)
    (11 missing values generated)

    . gen log_triglyceridesmgdL=log(triglyceridesmgdL)
    (11 missing values generated)

    . gen log_calc_ldlmgdL=log(calc_ldlmgdL)
    (11 missing values generated)

    . gen log_new_estronepgmL=log(new_estronepgmL)
    (11 missing values generated)

    . gen log_prolactinngmL=log(prolactinngmL)
    (11 missing values generated)

    . gen log_estradiolpgmL=log(estradiolpgmL)
    (11 missing values generated)

    . gen log_new_unconj_estriolngmL=log(new_unconj_estrioln gmL)
    (15 missing values generated)

    . gen log_cortisolugdL=log(cortisolugdL)
    (11 missing values generated)

    . gen log_new_dheasugdL=log(new_dheasugdL)
    (13 missing values generated)

    . gen log_progesteronengmL=log(progesteronengmL)
    (11 missing values generated)

    . gen log_new_testosteronengdL=log(new_testosteronengdL)
    (28 missing values generated)


    . mi set wide

    .
    . mi register imputed log_cholesterolmgdL log_HDLmgdL log_triglyceridesmgdL log_calc_ldl
    > mgdL log_new_estronepgmL log_prolactinngmL log_estradiolpgmL log_new_unconj_estriolngm
    > L log_cortisolugdL log_new_dheasugdL log_progesteronengmL log_new_testosteronengdL

    .
    . mi register regular age racethnic ob_q6 cig_base menthol ftndscore log_ohcotcot opioid
    > _tx antidepressant scr_suba scr_anxi scr_depress scr_diab scr_hema

    .
    . display log(.07) /* Estriol LL */
    -2.65926

    . display log(.0001) /* Essentially the log for 0 */
    -9.2103404

    . display log(15) /* DHEAS LL */
    2.7080502

    . display log(20) /*Testosterone LL */
    2.9957323

    .
    .
    . mi impute chained (truncreg,ll(-9.2103404) ul(-2.65926)) log_new_unconj_estriolngmL (t
    > runcreg,ll(-9.2103404) ul(2.7080502)) log_new_dheasugdL (truncreg,ll(-9.2103404) ul(2.
    > 9957323)) log_new_testosteronengdL (truncreg) log_cholesterolmgdL log_HDLmgdL log_trig
    > lyceridesmgdL log_calc_ldlmgdL log_new_estronepgmL log_prolactinngmL log_estradiolpgmL
    > log_cortisolugdL log_progesteronengmL = age racethnic ob_q6 cig_base menthol ftndscor
    > e log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi scr_depress scr_diab scr_hem
    > a, add(10) rseed(54321) savetrace(trace1,replace) bootstrap

    Conditional models:
    log_choleste~L: truncreg log_cholesterolmgdL log_HDLmgdL log_triglyceridesmgdL
    log_calc_ldlmgdL log_new_estronepgmL log_prolactinngmL
    log_estradiolpgmL log_cortisolugdL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_HDLmgdL: truncreg log_HDLmgdL log_cholesterolmgdL log_triglyceridesmgdL
    log_calc_ldlmgdL log_new_estronepgmL log_prolactinngmL
    log_estradiolpgmL log_cortisolugdL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_triglyce~L: truncreg log_triglyceridesmgdL log_cholesterolmgdL log_HDLmgdL
    log_calc_ldlmgdL log_new_estronepgmL log_prolactinngmL
    log_estradiolpgmL log_cortisolugdL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_calc_ldl~L: truncreg log_calc_ldlmgdL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_new_estronepgmL log_prolactinngmL
    log_estradiolpgmL log_cortisolugdL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_new_estr~L: truncreg log_new_estronepgmL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_calc_ldlmgdL log_prolactinngmL
    log_estradiolpgmL log_cortisolugdL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_prolacti~L: truncreg log_prolactinngmL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_calc_ldlmgdL log_new_estronepgmL
    log_estradiolpgmL log_cortisolugdL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_estradio~L: truncreg log_estradiolpgmL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_calc_ldlmgdL log_new_estronepgmL
    log_prolactinngmL log_cortisolugdL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_cortisol~L: truncreg log_cortisolugdL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_calc_ldlmgdL log_new_estronepgmL
    log_prolactinngmL log_estradiolpgmL log_progesteronengmL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_progeste~L: truncreg log_progesteronengmL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_calc_ldlmgdL log_new_estronepgmL
    log_prolactinngmL log_estradiolpgmL log_cortisolugdL
    log_new_dheasugdL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap
    log_new_dhea~L: truncreg log_new_dheasugdL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_calc_ldlmgdL log_new_estronepgmL
    log_prolactinngmL log_estradiolpgmL log_cortisolugdL
    log_progesteronengmL log_new_unconj_estriolngmL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap ll(-9.2103404)
    ul(2.7080502)
    log_new_unco~L: truncreg log_new_unconj_estriolngmL log_cholesterolmgdL
    log_HDLmgdL log_triglyceridesmgdL log_calc_ldlmgdL
    log_new_estronepgmL log_prolactinngmL log_estradiolpgmL
    log_cortisolugdL log_progesteronengmL log_new_dheasugdL
    log_new_testosteronengdL age racethnic ob_q6 cig_base menthol
    ftndscore log_ohcotcot opioid_tx antidepressant scr_suba scr_anxi
    scr_depress scr_diab scr_hema , bootstrap ll(-9.2103404)
    ul(-2.65926)
    log_new_test~L: truncreg log_new_testosteronengdL log_cholesterolmgdL log_HDLmgdL
    log_triglyceridesmgdL log_calc_ldlmgdL log_new_estronepgmL
    log_prolactinngmL log_estradiolpgmL log_cortisolugdL
    log_progesteronengmL log_new_dheasugdL log_new_unconj_estriolngmL
    age racethnic ob_q6 cig_base menthol ftndscore log_ohcotcot
    opioid_tx antidepressant scr_suba scr_anxi scr_depress scr_diab
    scr_hema , bootstrap ll(-9.2103404) ul(2.9957323)

    Performing chained iterations ...
    no observations
    error occurred during imputation of log_new_unconj_estriolngmL log_new_dheasugdL
    log_new_testosteronengdL log_cholesterolmgdL log_HDLmgdL log_triglyceridesmgdL
    log_calc_ldlmgdL log_new_estronepgmL log_prolactinngmL log_estradiolpgmL
    log_cortisolugdL log_progesteronengmL on m = 1
    r(2000);

    end of do-file

    r(2000);



    Thank you for your time!

  • #2
    For anyone else with a similar problem, I finally got it to work using IVEware for Stata. There is a big learning curve to IVEware, but the support team was really helpful and I was able to get it to work eventually. So I recommend checking out that program for anyone else trying to do this type of analysis.

    Comment

    Working...
    X