BookmarkSubscribeRSS Feed
favola
Calcite | Level 5

Hi

I have to calculate the sample size of a 2x2 crossover study.

The primary efficacy endpoint is a continuous variable (FeNO) with a lognormal distribution, measured before (pre) and after (post) treatment.

<1> Can I use proc power with paired t tests for Mean Ratio with Lognormal Data or is there a better way?

proc power;

    pairedmeans test=ratio   DIST=logNormal

        meanratio =

        cv =

        corr =

        npairs = .

        alpha = 0.05 power = 0.9;

run;

I have data from a pilot study very similar. The following procedure was used to analyze the efficacy endpoint.

proc glm data=pilot;

class seq drug period pat;

model post_log = seq pat(seq) drug period pre_log/ ss3; *pre_log and post_log = before and after treatment suitably log trasformed.

test h=seq e=pat(seq);

lsmeans drug /pdiff stderr;

run;

<2> It is correct?

<3> There is a proc glmpower corresponding to this ANCOVA analysis?

To obtain the data for my proc power instead I should perform the following proc t test:

proc ttest data=pilot dist=lognormal;

   var post1 post2 / crossover= (drug1 drug2);

run;

<4> meanratio =   is geometric mean of treatment ratio with both sequence ?

<5> cv =   is geometric CV of treatment ratio with both sequence?

<6> corr =   how can I calculate it?

If I submit the following procedure:

proc ttest data=pilot dist=lognormal;

   var post_ratio_drug1_drug2;

run;

I get the same geometric mean but another CV.

<7> Which CV should I use?

But using only the post-treatment values I have to assume that values before treatment are homogeneous between treatment groups.

<8> To avoid this how can I do?

<9> I can analyze the post/pre ratio?

<10> If it is distributed normally have to use a proc power with DIST = Normal?

I hope not too 10 questions.

Thanks in advance (Please use plain English)

Favola

1 REPLY 1
favola
Calcite | Level 5

<7> Let's use an example.

data pilot;

   input Drug1 $ Drug2 $ post1 post2 @@;

   label Drug1='Drug Period 1' Drug2='Drug Period 2' post1='FeNO period 1' post2='FeNO period 2';

   datalines;

R       T        24       15

T       R        15       27

R       T        28       23

T       R        30       28

T       R         6       12

R       T        32       22

T       R        23       19

R       T        32       17

T       R        76       41

R       T        15       10

T       R        20       25

R       T        14       15

T       R        21       18

R       T        66       25

T       R        25       42

R       T        38       35

R       T        20       19

T       R        21       19

R       T        27       51

T       R        24       72

R       T        14       14

R       T        22       24

T       R        22       24

R       T        28       36

T       R        22       37

T       R        27       51

R       T        20       22

T       R        28       73

R       T        44       29

T       R        52       23

T       R        18       19

R       T        29       34

T       R        33       45

R       T        63       42

T       R        27       58

R       T        29       30

R       T        19       19

T       R        29       32

R       T        35       22

T       R        26       52

;

run;

proc ttest data=pilot dist=lognormal;

   var post1 post2 / crossover= (drug1 drug2);

run;

/* Geometric mean for treatment ratio = 1.2347 and CV = 0.2224 */

/* Calculate treatment ratio */

data pilot1; set pilot;

label post_trt1='FeNO T' post_trt2='FeNO R' post_ratio_drug1_drug2='FeNO R/T';

if drug1='T' then post_trt1=post1; else post_trt1=post2;

if drug1='R' then post_trt2=post1; else post_trt2=post2;

post_ratio_drug1_drug2=post_trt2/post_trt1;

run;

proc ttest data=pilot1 dist=lognormal;

   var post_ratio_drug1_drug2;

run;

/* Geometric mean = 1.2347 and CV = 0.4590 */

The geometric mean is the same but CV is different.

Which CV should I use in proc power?

proc power;

    pairedmeans test=ratio   DIST=logNormal

        meanratio =

        CV =

        corr =

        npairs = .

        alpha = 0.05 power = 0.9;

run;

Thanks in advance

Favola

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Health and Life Sciences Learning

 

Need courses to help you with SAS Life Sciences Analytics Framework, SAS Health Cohort Builder, or other topics? Check out the Health and Life Sciences learning path for all of the offerings.

LEARN MORE

Discussion stats
  • 1 reply
  • 928 views
  • 0 likes
  • 1 in conversation