Announcement

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

  • Help with ANCOVA analysis

    Hi,

    I am trying to run an analysis where I compare change in systolic blood pressure from baseline to 12 months between participants with metabolic syndrome vs. participants without metabolic syndrome at baseline while adjusting for baseline systolic blood pressure. I believe I can do an ANCOVA analysis to do this, but I am not quite sure. I was hoping someone could provide some insight into what type of test I should run to do this analysis and how to do this in Stata.

    Here is a small portion of the data that I am working with.

    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input long pid int(avgsbp1 avgsbp12) float(sbp_ch12 met_syn1)
    30060 114 135  21 0
    20076 134 131  -3 0
    40171 153 146  -7 0
    20074 111 108  -3 0
    10015 123 126   3 0
    20174 126 124  -2 0
    20128 121 126   5 0
    50068 143 123 -20 0
    30047 142 131 -11 0
    50011 141 126 -15 0
    end
    label values met_syn1 Met_syn
    label def Met_syn 0 "- Metabolic Syndrome", modify

    Variables:
    pid - participant ID
    avgsbp1 - average baseline blood pressure
    avgsbp12 - average blood pressure at 12 months
    sbp_ch12 - change in blood pressure from baseline to 12 months
    met_syn1 - baseline metabolic syndrome (yes/no)

    Thank you for your help.

  • #2
    I suppose your group variable for metabolic syndrom with/without is "met_syn1":

    Code:
    reg avgsbp12 avgsbp1 i.met_syn1
    
    margins i.met_syn1
    marginsplot
    Roman

    Comment


    • #3
      Originally posted by Harry Stern View Post
      . . . I compare change in systolic blood pressure from baseline to 12 months . . . while adjusting for baseline systolic blood pressure. I believe I can do an ANCOVA . . .
      So, something like
      Code:
      anova sbp_ch12 i.met_syn1 c.avgsbp1
      or its equivalent*
      Code:
      anova avgsbp12 i.met_syn1 c.avgsbp1
      ÿ
      But if your research question is about change in systolic blood pressure over time and difference in it between two innately different (as opposed to randomly allocated) groups, then consider something like the following instead.
      Code:
      graph twoway ///
          scatter avgsbp12 avgsbp1 if !met_syn1, mcolor(red) msize(small) || ///
          scatter avgsbp12 avgsbp1 if met_syn1, mcolor(blue) msize(small) ///
              ylabel( , angle(horizontal) nogrid) legend(off)
      or some variation on it, such as adding overlaid lfit or qfit plots, separately fitted by group.

      And then maybe
      Code:
      ttest sbp_ch12, by(met_syn1) welch
      ÿ
      ÿ
      * See, for example, Note 2 here:

      .ÿ
      .ÿversionÿ16.1

      .ÿ
      .ÿclearÿ*

      .ÿ
      .ÿsetÿseedÿ`=strreverse("1583080")'

      .ÿ
      .ÿquietlyÿdrawnormÿout0ÿout1,ÿdoubleÿcorr(1ÿ0.5ÿ\ÿ0.5ÿ1)ÿn(50)

      .ÿgenerateÿbyteÿtrtÿ=ÿmod(_n,ÿ2)

      .ÿ
      .ÿ*
      .ÿ*ÿBeginÿhere
      .ÿ*
      .ÿregressÿout1ÿc.out0ÿi.trt

      ÿÿÿÿÿÿSourceÿ|ÿÿÿÿÿÿÿSSÿÿÿÿÿÿÿÿÿÿÿdfÿÿÿÿÿÿÿMSÿÿÿÿÿÿNumberÿofÿobsÿÿÿ=ÿÿÿÿÿÿÿÿ50
      -------------+----------------------------------ÿÿÿF(2,ÿ47)ÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿ4.53
      ÿÿÿÿÿÿÿModelÿ|ÿÿ7.06863153ÿÿÿÿÿÿÿÿÿ2ÿÿ3.53431576ÿÿÿProbÿ>ÿFÿÿÿÿÿÿÿÿ=ÿÿÿÿ0.0159
      ÿÿÿÿResidualÿ|ÿÿ36.7061105ÿÿÿÿÿÿÿÿ47ÿÿ.780981074ÿÿÿR-squaredÿÿÿÿÿÿÿ=ÿÿÿÿ0.1615
      -------------+----------------------------------ÿÿÿAdjÿR-squaredÿÿÿ=ÿÿÿÿ0.1258
      ÿÿÿÿÿÿÿTotalÿ|ÿÿÿ43.774742ÿÿÿÿÿÿÿÿ49ÿÿ.893362082ÿÿÿRootÿMSEÿÿÿÿÿÿÿÿ=ÿÿÿÿ.88373

      ------------------------------------------------------------------------------
      ÿÿÿÿÿÿÿÿout1ÿ|ÿÿÿÿÿÿCoef.ÿÿÿStd.ÿErr.ÿÿÿÿÿÿtÿÿÿÿP>|t|ÿÿÿÿÿ[95%ÿConf.ÿInterval]
      -------------+----------------------------------------------------------------
      ÿÿÿÿÿÿÿÿout0ÿ|ÿÿÿ.3920431ÿÿÿ.1304409ÿÿÿÿÿ3.01ÿÿÿ0.004ÿÿÿÿÿ.1296298ÿÿÿÿ.6544564
      ÿÿÿÿÿÿÿ1.trtÿ|ÿÿÿ.0496016ÿÿÿ.2514762ÿÿÿÿÿ0.20ÿÿÿ0.844ÿÿÿÿ-.4563032ÿÿÿÿ.5555064
      ÿÿÿÿÿÿÿ_consÿ|ÿÿÿ-.161906ÿÿÿ.1788433ÿÿÿÿ-0.91ÿÿÿ0.370ÿÿÿÿ-.5216922ÿÿÿÿ.1978802
      ------------------------------------------------------------------------------

      .ÿtempnameÿaÿd

      .ÿscalarÿdefineÿ`a'ÿ=ÿ_b[1.trt]

      .ÿscalarÿdefineÿ`d'ÿ=ÿ_b[out0]

      .ÿ
      .ÿgenerateÿdoubleÿdeltaÿ=ÿout1ÿ-ÿout0

      .ÿregressÿdeltaÿc.out0ÿi.trt

      ÿÿÿÿÿÿSourceÿ|ÿÿÿÿÿÿÿSSÿÿÿÿÿÿÿÿÿÿÿdfÿÿÿÿÿÿÿMSÿÿÿÿÿÿNumberÿofÿobsÿÿÿ=ÿÿÿÿÿÿÿÿ50
      -------------+----------------------------------ÿÿÿF(2,ÿ47)ÿÿÿÿÿÿÿÿ=ÿÿÿÿÿ11.12
      ÿÿÿÿÿÿÿModelÿ|ÿÿ17.3622909ÿÿÿÿÿÿÿÿÿ2ÿÿ8.68114544ÿÿÿProbÿ>ÿFÿÿÿÿÿÿÿÿ=ÿÿÿÿ0.0001
      ÿÿÿÿResidualÿ|ÿÿ36.7061105ÿÿÿÿÿÿÿÿ47ÿÿ.780981074ÿÿÿR-squaredÿÿÿÿÿÿÿ=ÿÿÿÿ0.3211
      -------------+----------------------------------ÿÿÿAdjÿR-squaredÿÿÿ=ÿÿÿÿ0.2922
      ÿÿÿÿÿÿÿTotalÿ|ÿÿ54.0684014ÿÿÿÿÿÿÿÿ49ÿÿ1.10343676ÿÿÿRootÿMSEÿÿÿÿÿÿÿÿ=ÿÿÿÿ.88373

      ------------------------------------------------------------------------------
      ÿÿÿÿÿÿÿdeltaÿ|ÿÿÿÿÿÿCoef.ÿÿÿStd.ÿErr.ÿÿÿÿÿÿtÿÿÿÿP>|t|ÿÿÿÿÿ[95%ÿConf.ÿInterval]
      -------------+----------------------------------------------------------------
      ÿÿÿÿÿÿÿÿout0ÿ|ÿÿ-.6079569ÿÿÿ.1304409ÿÿÿÿ-4.66ÿÿÿ0.000ÿÿÿÿ-.8703702ÿÿÿ-.3455436
      ÿÿÿÿÿÿÿ1.trtÿ|ÿÿÿ.0496016ÿÿÿ.2514762ÿÿÿÿÿ0.20ÿÿÿ0.844ÿÿÿÿ-.4563032ÿÿÿÿ.5555064
      ÿÿÿÿÿÿÿ_consÿ|ÿÿÿ-.161906ÿÿÿ.1788433ÿÿÿÿ-0.91ÿÿÿ0.370ÿÿÿÿ-.5216922ÿÿÿÿ.1978802
      ------------------------------------------------------------------------------

      .ÿassertÿfloat(_b[1.trt])ÿ==ÿfloat(`a')

      .ÿassertÿ`d'ÿ==ÿ1ÿ+ÿ_b[out0]

      .ÿ
      .ÿexit

      endÿofÿdo-file


      .

      Comment

      Working...
      X