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!
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!

Comment