Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

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

From |
"Carmine Rossi, Mr" <[email protected]> |

To |
"<[email protected]>" <[email protected]> |

Subject |
Re: st: Recency Weighted cumulative exposures |

Date |
Thu, 14 Nov 2013 10:17:34 +0000 |

Thank you again Mr. Radyakin and all STATA listers for your time. I will provide one more (fresh) numerical example, perhaps it would be more clear. It is for one id with 7 visits. "Result" is the variable I am looking to create. It is correct and follows the methods outlined in Abrahamowicz et al, and I am a student of his (2006, JCE, http://www.ncbi.nlm.nih.gov/pubmed/16549262). I used an excel spreadsheet to calculate the "result" variable, as I still am unable to program it in STATA, but this hand calculation method is tedious and impossible for large datasets (see all my calculations below). id time dose result 1 1 0 0 1 2 5 5 1 3 8 12.930 1 4 10 22.613 1 5 8 29.822 1 6 5 33.369 1 7 10 41.186 To calculate the "result", which is a recency-weighted cumulative sum, the following calculations are made at every time point. The weight function, selected a priori is: exp((-((delta_t)^2))/(70.7)) -------Hand Calculations begin--------- For time=1: id time dose delta_t weight dose*weight cumulat_sum(dose*weight) 1 1 0 0 1 0 0 [this is result shown at time==1] For time=2: id time dose delta_t weight dose*weight cumulat_sum(dose*weight) 1 1 0 1 0.98595 0 0 1 2 5 0 1 5 5 [this is result shown at time==2] For time=3: id time dose delta_t weight dose*weight cumulat_sum(dose*weight) 1 1 0 2 0.9450 0 0 1 2 5 1 0.98595 4.930 4.930 1 3 8 0 1 8 12.930 [this is result shown at time==3] For time=4: id time dose delta_t weight dose*weight cumulat_sum(dose*weight) 1 1 0 3 0.8805 0 0 1 2 5 2 0.9450 4.725 4.725 1 3 8 1 0.98595 7.888 12.613 1 4 10 0 1 10 22.613 [this is result shown at time==4] For time=5: id time dose delta_t weight dose*weight cumulat_sum(dose*weight) 1 1 0 4 0.7975 0 0 1 2 5 3 0.8805 4.402 4.402 1 3 8 2 0.9450 7.560 11.962 1 4 10 1 0.98595 9.860 21.822 1 5 8 0 1 8 29.822 [this is result shown at time==5] For time=6: id time dose delta_t weight dose*weight cumulat_sum(dose*weight) 1 1 0 5 0.7022 0 0 1 2 5 4 0.7975 3.987 3.987 1 3 8 3 0.8805 7.044 11.031 1 4 10 2 0.9450 9.450 20.481 1 5 8 1 0.98595 7.888 28.369 1 6 5 0 1 5 33.369 [this is result shown at time==6] For time=7: id time dose delta_t weight dose*weight cumulat_sum(dose*weight) 1 1 0 6 0.6010 0 0 1 2 5 5 0.7022 3.511 3.511 1 3 8 4 0.7975 6.380 9.891 1 4 10 3 0.8805 8.805 18.696 1 5 8 2 0.9450 7.560 26.256 1 6 5 1 0.98595 4.930 31.186 1 7 10 0 1 10 41.186 [this is result shown at time==7] -------Hand Calculations end--------- Notice how the weights are not fixed. They change depending on which time point you are calculating the recent cumulative sum. This is why I initially thought I needed to use a for values loop or something similar. This is what I am trying to program, and so far, it has been very difficult. I want to thank you again for looking at this and giving it a shot. I appreciate it very much! Have a great day, Carmine Rossi PhD Candidate, Epidemiology [email protected] On 2013-11-13, at 11:42 PM, Sergiy Radyakin <[email protected]> wrote: > On Wed, Nov 13, 2013 at 7:42 PM, Carmine Rossi, Mr > <[email protected]> wrote: >> Hi Mr. Radyakin, >> >> Thank you very much for your email and help. However, the code is not correct. > > Well it is pretty close to what you are looking for. The main > difference is that 'delta time' was not defined in your formula, so I > took absolute time, and you now describe relative time. That is also > easily fixable: > > do http://radyakin.org/statalist/2013111301/recencyw2.do > > I am still NOT getting your exact numeric values, but it might be due > to the rounding. Is your magic number 70 shown exactly? Is it same for > all IDs? Are there any digits not shown for dosage? You may want to > share your spreadsheet to reduce the traffic. > > Now I expect this modification to take care of both issues you > mentioned since they essentially appear the same to me. Except I can't > agree that the weights depend on the sum. I'd insist that the sum > depends on the weights. The weights depend on the time. > > Best, Sergiy > >> >> There are two issues: 1) The number of observations per ID is not constant, so for the macro `mt', it would need to be specific per id. For example, ID==1 has 5 time points, and ID==2 has 4 time points. >> >> 2) The weights are not fixed. This is more difficult for me to explain, but I will try. >> >> To get the "result" for ID==1 and time==5, I used the spreadsheet calculations shown in the previous email. >> However, if I was to calculate the "result" at time==4, I would use the following weights: >> >> id time dose delta_t w(t) dose(t)*weight(t) cumulative_sum >> 1 1 0 3 0.88 0 0 >> 1 2 0 2 0.94 0 0 >> 1 3 2.6 1 0.99 2.574 2.574 >> 1 4 2.6 0 1 2.6 5.174 >> >> Notice how, now the weight, w(t), at time==4 is equal to 1, when I want to calculate the cumulative sum at time==4. >> >> For this reason, I thought I would need loops, and this is why I am asking the STATA community for help. My major issue is that the weight’s are not fixed and they change depending on the cumulative sum that I want to calculate at each time point. >> >> Thank you again for trying to help, >> -Carmine Rossi >> PhD Candidate, Epidemiology >> [email protected] >> >> On 2013-11-13, at 5:23 PM, Sergiy Radyakin <[email protected]> wrote: >> >>> Carmine, no loops are really necessary: >>> >>> do http://radyakin.org/statalist/2013111301/recencyw.do >>> >>> Hope this helps, Sergiy Radyakin >>> >>> >>> On Wed, Nov 13, 2013 at 5:08 PM, Carmine Rossi, Mr >>> <[email protected]> wrote: >>>> Dear STATA listers, >>>> >>>> I have the following repeated measures data on two subjects with a dose exposure variable. I am interested in creating a variable called “result” that is a recency-weighted cumulative sum. >>>> >>>> id time dose result >>>> 1 1 0 0 >>>> 1 2 0 0 >>>> 1 3 2.6 2.6 >>>> 1 4 2.6 5.174 >>>> 1 5 3.2 8.218 >>>> 2 1 0 0 >>>> 2 2 0 0 >>>> 2 3 0.7 0.7 >>>> 2 4 0.7 1.393 >>>> >>>> The “result” variable is obtained as a cumulative sum using a weight function: >>>> Summation of (Dose(i) x weight(t)), where the weight function is: >>>> >>>> W(t) = exp((-(delta time)2)/70.70) >>>> >>>> So to get the weighted cumulative sum value of 8.218 (for subject 1 at time 5), rather than 8.4, which would have been the un-weighted cumulative sum, I did the following in a spreadsheet. >>>> >>>> >>>> Id time dose delta_t w(t) dose(t)*weight(t) cumulative_sum >>>> 1 1 0 4 0.80 0 0 >>>> 1 2 0 3 0.88 0 0 >>>> 1 3 2.6 2 0.94 2.444 2.444 >>>> 1 4 2.6 1 0.99 2.574 5.018 >>>> 1 5 3.2 0 1 3.2 8.218 >>>> >>>> Is there a way to do this in STATA with loops? Can anyone provide any suggestions? >>>> >>>> >>>> Carmine Rossi >>>> PhD Candidate, Epidemiology >>>> McGill University >>>> [email protected] > > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/faqs/resources/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/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/

**Follow-Ups**:**Re: st: Recency Weighted cumulative exposures***From:*Sergiy Radyakin <[email protected]>

**References**:**st: Recency Weighted cumulative exposures***From:*"Carmine Rossi, Mr" <[email protected]>

**Re: st: Recency Weighted cumulative exposures***From:*Sergiy Radyakin <[email protected]>

**Re: st: Recency Weighted cumulative exposures***From:*"Carmine Rossi, Mr" <[email protected]>

**Re: st: Recency Weighted cumulative exposures***From:*Sergiy Radyakin <[email protected]>

- Prev by Date:
**st: RE: multilevel logistic and reml** - Next by Date:
**Re: Re: st: -mixlogit- numeric overflow** - Previous by thread:
**Re: st: Recency Weighted cumulative exposures** - Next by thread:
**Re: st: Recency Weighted cumulative exposures** - Index(es):