BookmarkSubscribeRSS Feed
data_null__
Jade | Level 19

Where there are more than 2 levels of treatments and you want pairwise comparisons is it correct to run NPAR1WAY for each pair of treatments.  I want to produce p-value combinations similar to LSMEANS TRT / DIFF;

Example program of my proposed pairwise calls to NPAR1WAYs.  Is this a valid statistical analysis?  Keep in mind I only have an 8th grade education. :smileyshocked:

Anyone know anything about this?  I would appreciate your input.

proc plan seed=997015200;

   factors id=10 ordered trt=4 y=1 of 50 / noprint;

   output out=sample trt cvals=('A' 'B' 'C' 'D');

   run;

   quit;

proc sort;

   by id trt;

   run;

proc print;

   run;

proc npar1way data=sample;

   class trt;

   var y;

   run;

proc sql feedback;

   create view pairedV1 as

   select a.id,a.trt as trt1,a.y as y1,b.trt,b.y

      from sample as a, sample as b

      where a.id eq b.id

            and a.trt gt b.trt

      order by b.trt,a.trt,a.id

      ;

   quit;

data paired(keep=pairID trt y id);

   set pairedV1;

   length pairID $3;

   pairID = catx('-',trt,trt1);

   output;

   y     =  y1;

   trt   =  trt1;

   output;

   run;

proc print;

   run;

*ods listing close;

*ods trace on;

proc npar1way data=paired wilcoxon;

   by pairID;

   class trt;

   var y;

   ods output WilcoxonScores=WilcoxonScores WilcoxonTest=WilcoxonTest;

   run;

*ods trace off;

ods listing;

proc print data=WilcoxonTest;

   run;

Message was edited by: data _null_

6 REPLIES 6
Reeza
Super User

Typically when you run multiple pairwise comparisons you don't need to adjust your calculations but you do need to adjust your cutoff point. Bonferonni corrections are common, but there are more out there that might make sense depending on exactly what you're testing.

http://en.wikipedia.org/wiki/Multiple_comparisons

Ksharp
Super User

Where there are more than 2 levels of treatments and you want pairwise comparisions is it.

You can't use proc npar1way for this situation. npar1way only is used for two levels. If you use it for more than two levels ,then the Alpha(the probability of the first type of error) will be unrespected, because you compare them many times.

You should use proc glm.

Ksharp

data_null__
Jade | Level 19

How about this using SCORES=DATA of ranked pooled data.

proc plan seed=997015200;

   factors id=10 ordered trt=3 y=1 of 50 / noprint;

   output out=sample trt cvals=('A' 'B' 'C');

   run;

   quit;

proc rank data=sample out=sample;

   var y;

   ranks yr;

   run;

proc print;

   run;

title 'Scored from proc';

proc npar1way data=sample ks;

   class trt;

   var y;

   run;

title 'Scores=data';

proc sql feedback;

   create view pairedV1 as

   select a.id,a.trt as trt1,a.yR as y1,b.trt,b.yR

      from sample as a, sample as b

      where a.id eq b.id

            and a.trt gt b.trt

      order by b.trt,a.trt,a.id

      ;

   quit;

data paired(keep=pairID trt yR id);

   length pairID $3;

   pairID = 'ABC';

   do until(eof1);

      set sample end=eof1;

      output;

      end;

   do until(eof2);

      set pairedV1 end=eof2;

      pairID = catx('-',trt,trt1);

      output;

      yR     =  y1;

      trt   =  trt1;

      output;

      end;

   stop;

   run;

proc print;

   run;

proc npar1way data=paired scores=data;

   by pairID notsorted;

   class trt;

   var yR;

   *ods output

      DataScores=DataScores

      DataScoresAnalysis=DataScoresAnalysis

      DataScoresTest=DataScoresTest

      ;

   run;

Ksharp
Super User

I think it is no. You should use proc glm. It is not business about using parameter method or non-parameter method.

art297
Opal | Level 21

DN,

I'll leave it to the statisticians to disagree with me, but I think that the critical question is how one intends on using the findings.  I.e., do you need defensible p values or are you only snooping for differences and are willing to accept chance differences as being real?

If you need defensible p values, I'd have to agree with everyone that this wouldn't be an acceptable method. However, if you are just data snooping, don't have a problem with sometimes accepting differences that aren't really there, but are most interested in "describing" the data you have, I don't see we your proposed method wouldn't be justifiable.

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 6 replies
  • 3073 views
  • 0 likes
  • 4 in conversation