Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: aligned rank test


From   David Airey <[email protected]>
To   [email protected]
Subject   Re: st: aligned rank test
Date   Thu, 28 Feb 2008 11:39:22 -0600

.

I came across aligned rank tests (ART) in Higgins (2003) Introduction to Modern Nonparametric Statistics, Duxbury Press. Higgins gives the data example:

B1 B2 B3
A1 1,2,3 4,5,6 7,8,9
A2 10,11,12 13,14,15 20,21,22

from a 2x3 factorial ANOVA design, where an interaction is present in the raw data. Because ranking is a nonlinear transformation, in these data it removes the significant interaction. Aligned ranking fixes this problem.

Statisticians are still improving on the split plot aligned rank test, judging by publications on this, but for multifactorial designs, there seems to be agreement that using "ART" for nonparametric ANOVAs is an improved approach over ranking.
Richter , Scott J. and Payton, Mark E. (2005)
An improvement to the aligned rank statistic for two-factor analysis of variance
Journal of Applied Statistical Science, 14, 225-235
Keywords: ANOVA; Nonparametric
CISid: 275418

Mansouri, H., Paige, R. L. and Surles, J. G. (2004)
Aligned rank transform techniques for analysis of variance and multiple comparisons
Communications in Statistics: Theory and Methods, 33, 2217-2232
CISid: 246876

Beasley, T. Mark and Zumbo, Bruno D. (2003)
Comparison of aligned Friedman rank and parametric methods for testing interactions in split-plot designs
Computational Statistics & Data Analysis, 42, 569-593
Keywords: Aligned ranks; Repeated measures; interaction tests
CISid: 274211

Some adventurous statisticians also recently proposed a unified approach applicable to unbalanced models in the context of a quantitative trait locus data set (A unified nonparametric approach for unbalanced factorial designs. Gao and Mayer. 2005. Journal of the American Statistical Association).

Thank you very much for this rapidly coded program below. It is so much better than mine which looks strikingly like a blank screen.

-Dave


Publication: Journal of the American Statistical Association
Publication Date: 01-SEP-05
Format: Online - approximately 13155 words
Delivery: Immediate Online Access
Author: Gao, Xin ; Alvo, Mayer

On Feb 28, 2008, at 7:13 AM, Joseph Coveney wrote:


David Airey wrote:

Has anyone programmed the aligned-rank transformation for either
multifactorial or split plot designs? Findit finds nothing.

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

The aligned-rank transformation seems to work reasonably well, if I got it
right. The complaints that I'm aware of about the Conover-Imam approach
(factorial ANOVA of ranks sans alignment) are that it doesn't control Type I
error rate for tests of the interaction term in the presence of a main
effect, and that it has poor power to detect interaction in the presence of
both main effects.

Below, with a nonnull main effect of one factor, the Type I error rates for
the other factor and the interaction term are 0.054 and 0.056 at the nominal
0.05; the rates run 0.047 to 0.052 under the omnibus null. The power to
detect an interaction is no lower than customary ANOVA in the presence of
both main effects--both 15% in the case below (delta of 1 SD increment each
level of each factor + 1 SD for interaction). The simulation below is of a
two-way factorial ANOVA layout with a normally distributed error in a
balanced dataset. You can modify the called program to see how well things
hold up under other circumstances.

Joseph Coveney

Conover, W. J., Iman, R. L. (1981). Rank transformations as a bridge between
parametric and nonparametric statistics. _The American Statistician_
35:124--129.

Seaman, J. W., Walls, S. C., Wide, S.E. and Jaeger, R.G.(1994) Caveat
emptor: rank transform methods and interactions. _Trends in Ecology and
Evolution_ 9:261--63.

clear *
set more off
set seed `=date("2002-08-28", "YMD")'
*
program define simem, rclass
version 10
syntax [, adelta(real 0) bdelta(real 0) abdelta(real 0) ///
n(integer 24)]
tempname p_A p_B p_AB
tempvar response A B A_removed B_removed AB_removed rank
set obs `n'
generate byte `A' = mod(_n, 2)
sort `A'
generate byte `B' = mod(_n, 3)
generate double `response' = `A' * `adelta' + ///
`B' * `bdelta' + !`A' * !`B' * `abdelta' + ///
invnormal(uniform())
* Alignment (setting up for later ranking and ANOVA)
foreach predictor in A B {
generate double ``predictor'_removed' = .
levelsof ``predictor'', local(predictor_levels)
foreach predictor_level of local predictor_levels {
summarize `response' if ``predictor'' == ///
`predictor_level', meanonly
replace ``predictor'_removed' = `response' - ///
r(mean) if ``predictor'' == `predictor_level'
}
}
generate double `AB_removed' = .
foreach predictor_level of local predictor_levels { // Still B
summarize `A_removed' if `B' == `predictor_level', meanonly
replace `AB_removed' = `A_removed' - ///
r(mean) if `B' == `predictor_level'
}
* Ranking and ANOVA
egen double `rank' = rank(`A_removed')
anova `rank' `A' `B' `A'*`B', sequential
scalar define `p_B' = Ftail(e(df_2), e(df_r), e(F_2))
drop `rank'
egen double `rank' = rank(`B_removed')
anova `rank' `A' `B' `A'*`B', sequential
scalar define `p_A' = Ftail(e(df_1), e(df_r), e(F_1))
drop `rank'
if (`abdelta') { // Customary ANOVA for power comparison
anova `response' `A' `B' `A'*`B'
scalar define `p_AB' = Ftail(e(df_3), e(df_r), e(F_3))
}
else scalar define `p_AB' = .
egen double `rank' = rank(`AB_removed')
anova `rank' `A' `B' `A'*`B'
return scalar p_AB = Ftail(e(df_3), e(df_r), e(F_3))
return scalar p_B = scalar(`p_B')
return scalar p_A = scalar(`p_A')
return scalar p_ABun = scalar(`p_AB')
end
*
* Omnibus H0
*
simulate A = r(p_A) B = r(p_B) AB = r(p_AB), ///
reps(10000) nodots: simem
foreach var of varlist A B AB {
generate byte pos_`var' = `var' < 0.05
}
summarize pos_*
*
* Ha for Factor A
*
drop _all
simulate A = r(p_A) B = r(p_B) AB = r(p_AB), ///
reps(10000) nodots: simem , adelta(1)
foreach var of varlist A B AB {
generate byte pos_`var' = `var' < 0.05
}
summarize pos_*
*
* Power for interaction term when omnibus Ha
*
drop _all
simulate ABrank = r(p_AB) ABun = r(p_ABun), ///
reps(10000) nodots: simem , adelta(1) bdelta(1) ///
abdelta(1)
foreach var of varlist AB* {
generate byte pos_`var' = `var' < 0.05
}
summarize pos_*
exit


*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
--
David C. Airey, Ph.D.
Pharmacology Research Assistant Professor
Center for Human Genetics Research Member

Department of Pharmacology
School of Medicine
Vanderbilt University
Rm 8158A Bldg MR3
465 21st Avenue South
Nashville, TN 37232-8548

TEL   (615) 936-1510
FAX   (615) 936-3747
EMAIL [email protected]
URL   http://people.vanderbilt.edu/~david.c.airey/dca_cv.pdf
URL   http://www.vanderbilt.edu/pharmacology



*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index