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

# st: Re: calculation of area under curve with stata

 From "Joseph Coveney" To Subject st: Re: calculation of area under curve with stata Date Mon, 14 Oct 2013 19:01:52 +0900

```Elmir Omerovic wrote:

I am analyzing the blood pressure (BP) levels from the three different
groups of animals. BP was measured repeatedly in every animal at 10
different time points within 90 minutes from the start of the experiment.
The animals were exposed to 3 different drugs (each group n=8).

I understand that one way to compare the effect of the drugs on blood
pressure within the whole experimental period would be to calculate the area
under the curve and to use this value in a linear mixed model.

I would be very grateful if someone could help me with step-by-step
instructions how to calculate AUC in stata.

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

You'd probably want to use -integ-, and so you can take a look at the help file
and entry in the user's manual for that command.  If your first observation is a
pretreatment (baseline) value, then you could consider subtracting it from the
succeeding measurements and integrating the change scores, or you could use the
first value as a covariate in the model and integrate only posttreatment
measurements.

After integration, you'll have only a single value for each animal, and so you
won't be using a linear mixed model.  (I've seen this advocated as a way to
avoid mixed models.)

Joseph Coveney

. clear *

. set more off

. set seed `=date("2013-10-14", "YMD")'

. quietly set obs `=3 * 8'

. generate grp = mod(_n, 3)

. generate double u_i = rnormal()

. generate byte pid = _n

. forvalues i = 0/9 {
2.         generate double mbp`i' = 100 - ///
>                 grp * (5 - abs(5 - `i')) / 2 + ///
>                 5 * rnormal()
3. }

. quietly reshape long mbp, i(pid) j(tim)

.
. *
. * Begin here
. *
. sort pid tim

. quietly generate double ibp = .

. tempvar tmpvar0

. quietly levelsof pid, local(pids)

. foreach pid of local pids {
2.         quietly integ mbp tim if pid == `pid', generate(`tmpvar0')
3.         quietly replace ibp = `tmpvar0' if pid == `pid'
4.         drop `tmpvar0'
5. }

.
. // list grp pid tim mpb ibp, noobs sepby(pid)
. quietly by pid: keep if _n == _N

. anova ibp grp

Number of obs =      24     R-squared     =  0.2714
Root MSE      = 16.3467     Adj R-squared =  0.2020

Source |  Partial SS    df       MS           F     Prob > F
-----------+----------------------------------------------------
Model |   2090.0102     2   1045.0051       3.91     0.0360
|
grp |   2090.0102     2   1045.0051       3.91     0.0360
|
Residual |  5611.47898    21  267.213285
-----------+----------------------------------------------------
Total |  7701.48918    23  334.847356

.
. exit

end of do-file

*
*   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/
```