[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

# st: AW: IDI calculation

 From "Martin Weiss" <[email protected]> To <[email protected]> Subject st: AW: IDI calculation Date Thu, 14 Jan 2010 09:14:33 +0100

```<>

The line - gen idi2_1=(( - within the -foreach- loop is bound to cause
problems the second time Stata runs through the loop, since the variable
will already exist then.

You may want to tell the list what the error message is, but I bet it is
"idi2_1 already defined r(110)". The same arguments apply to  idi3_1 -
idi5_1, though Stata probably never gets to them, anyway.

Re -postfile-, you may want to read up on it in Philippes
http://www.stata-journal.com/article.html?article=pr0036

HTH
Martin

-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Eduardo Nunez
Gesendet: Donnerstag, 14. Januar 2010 00:51
An: [email protected]
Betreff: st: IDI calculation

Dear Statalisters,

I would like to automate the calculation of the integrated
discrimination improvement (or IDI) from several nested models, in
order to evaluate the incremental predictive ability of two
biomarkers.
Model 1 = clinical factors
Model 2 = clinical factors + BNP
Model 3 = clinical factors + Ca125
Model 4 = clinical factors + BNP + Ca125
Model 5 = clinical factors + BNP##Ca125

The formula to calculate the IDI is:
Absolute IDI= (p_event2-p_event1)+(p_nonevent1-p_nonevent2),
Relative IDI= [(p_event2-p_nonevent2)/(p_event1-p_nonevent1)]-1

The probabilities for events & nonevents are calculated as follow:
Model 1= logistic death X1 X2 X3
predict double m6m_0, pr
Model 2= logistic death X1 X2 X3 BNP
predict double m6m_bnp, pr
Model 3= logistic death X1 X2 X3 Ca125
predict double m6m_ca, pr
Model 4= logistic death X1 X2 X3 BNP Ca125
predict double m6m_bnpca, pr
Model 5= logistic death X1 X2 X3 BNP##Ca125
predict double m6mbnpca, pr

For Model 2 vs Model 1:
sum m6m_0 if death==1
(0.3197818)
sum m6m_bnp if death==1
(0.336075)
sum m6m_0 if death==0
(0.1323866)
sum m6m_bnp if death==0
(0.1292155)

Absolute IDI .....display (.336075-.3197818)+(.1323866-.1292155)
Relative IDI.......display ((.336075-.1292155)/(.3197818-.1323866))-1

Then, I tried the following code (for relative IDI) with error:
----------------------------------------------------------------------------
-----------------------------------
tempname hdle
capt erase info.dta
postfile `hdle' str10 idi2_1 idi3_1 idi4_1 idi5_1 /*
*/ using info

foreach var of varlist m6m_0 m6m_bnp m6m_ca m6m_bnpca m6mbnpca {
sum `var' if !death
loc m6m_0_mean0=r(mean)
loc m6m_bnp_mean0=r(mean)
loc m6m_ca_mean0=r(mean)
loc m6m_bnpca_mean0=r(mean)
loc m6mbnpca_mean0=r(mean)
sum `var' if death
loc m6m_0_mean1=r(mean)
loc m6m_bnp_mean1=r(mean)
loc m6m_ca_mean1=r(mean)
loc m6m_bnpca_mean1=r(mean)
loc m6mbnpca_mean1=r(mean)
gen
idi2_1=((m6m_bnp_mean1-m6m_bnp_mean0)/(m6m_0_mean1-m6m_0_mean0))-1
gen
idi3_1=((m6m_ca_mean1-m6m_ca_mean0)/(m6m_0_mean1-m6m_0_mean0))-1
gen
idi4_1=((m6m_bnpca_mean1-m6m_bnpca_mean0)/(m6m_0_mean1-m6m_0_mean0))-1
gen
idi5_1=((m6mbnpca_mean1-m6mbnpca_mean0)/(m6m_0_mean1-m6m_0_mean0))-1
post `hdle' (`idi2_1') (`idi3_1') (`idi4_1') (`idi5_1')
}

postclose `hdle'

use info, clear
l, abbrev(10) noobs sep(0)

----------------------------------------------------------------------------
-----------------------------------

Can someone help me with this?

Warm regards,

Eduardo
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```

 © Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index