Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Topic: Krukal-Wallis by Fisher´s random shuffling
Replies: 2   Last Post: Mar 28, 2013 2:06 AM

 Messages: [ Previous | Next ]
 Luis A. Afonso Posts: 4,758 From: LIsbon (Portugal) Registered: 2/16/05
Krukal-Wallis by Fisher´s random shuffling
Posted: Mar 18, 2013 7:58 AM

Krukal-Wallis by Fisher´s random shuffling
Data copied from
www.sussex.ac.uk/Users/.../KruskalWallis%20Handoout2011.pdf

The statistics, for k samples
__H= 12/(N*(N+1))* [T(i)*T(i)/n(i)] - 3*(N+1)
_Where
__N= total of values, T( ) sample i, n( ) size, total of ranks
The K-W follows approximately a Chi Square with k-1 degrees of freedom. The symbol [ ] represents the sum of values from i=1 to k.

The algorithm
Each pseudo-Table is obtained distributing at random without replacement our observed ranks among the samples with regard to their sizes. This Table provides a generic H´. Repeating a huge number of times we get a set of values from which the 0.025 and 0.975 quantiles are calculated.

Results
The test (prior to Fisher´s simulations) get H0= 7.271 which p-value, Chi-square, 2 degrees of freedom, is 2.64%.
The pseudo Tables show that with 400´000 of them, 3 times, there are 2.03%, 2.06%, 2.09% H´ values greater than H0, well in accordance with the former.

Luis A. Afonso

REM "GRAHMIX"
CLS
DEFDBL A-Z
DIM ri(24), ribis(24)
DATA 1,2,3,4
DATA 5.5,5.5
DATA 7,8,9,10,11,12
DATA 14,14,14
DATA 16
DATA 17.5,17.5
DATA 19,20,21,22,23,24
REM
FOR i = 1 TO 24: READ ri(i): totr = totr + ri(i)
ribis(i) = ri(i): NEXT i
REM
N = 24: C = 12 / (N * (N + 1))
INPUT " HOW MANY TABLES "; many
REM
FOR tb = 1 TO many
REM
LOCATE 10, 50: PRINT USING "########"; many - tb
RANDOMIZE TIMER
FOR t = 1 TO N: ribis(t) = ri(t): NEXT t
SUM(1) = 0: SUM(2) = 0: SUM(3) = 0
FOR ix = 1 TO 8
1 gg = INT(24 * RND) + 1
IF ribis(gg) = 2013 THEN GOTO 1
SUM(1) = SUM(1) + ribis(gg)
ribis(gg) = 2013
NEXT ix
FOR iy = 1 TO 8
2 gg = INT(24 * RND) + 1
IF ribis(gg) = 2013 THEN GOTO 2
SUM(2) = SUM(2) + ribis(gg)
ribis(gg) = 2013
NEXT iy
SUM(3) = totr - (SUM(1) + SUM(2))
aa = SUM(1) * SUM(1) / 8
bb = SUM(2) * SUM(2) / 8
cc = SUM(3) * SUM(3) / 8
tsum = aa + bb + cc
hh = C * tsum - 3 * (N + 1)
IF hh > 7.271 THEN sgni = sgni + 1 / many
NEXT tb
LOCATE 10, 50
PRINT USING "sgnif.% = ##.## "; sgni * 100
END

Date Subject Author
3/18/13 Luis A. Afonso
3/18/13 Luis A. Afonso
3/28/13 Luis A. Afonso