|
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
Re: st: aligned rank test
.
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/