|
|
BSD 4.3
n� �*.KB� H ss r { ss y
r { (+/,y*2)%X/Ry
sigma r { v sigma y
r { BJ((2XRv)R'+/'),'(|H|H(IRRy)Ev)\Oy'
delta r { v delta y;p;q
r { y
nxt:}0 if 0=Rv
r { (rX(Rr)[1Yv])-(1Yv) sumx r
v { 1Uv
}nxt
if r { a if b
r { b/a
rm vc { v rm y
vc { (~(IRRy)Ev)/IRRy
anova m anova y;a;b;n;s;t;aF;ym;yv;ye;dfs;nh;nv;um
start
aov1
table
start start
n { RRy
um { ~'l'E(`1+mI';')Um
yv { (y#0)V~';'Em
ym { (+/y)%+/yv
ye { yvXy-O\(O|Ry)RO\ym
nh { (X/`1URy)%+/,%+/yv
dfs {`1+(`1URy),(+/,yv)%X/`1URy
a{O|nY'abcdef'
aF{|OnY'aFbFcFdFeFfF'
m{1U(mEa,aF,'+')/m
b { (nR2)N`1+I2*n
aov1 aov1;x;e;et;er
s { 0 2 R0
t { 0 10 R' '
e {(n,0)R0
loop: t{t,[1] 10 Y x{n Y (`1+mI'+')Ym
s{s,[1] aov2 et {1 1 2 O\(aEx)J.V((aFEx)^.&b)/b
e { e,et
}loop if 0<Rm{(mI'+')Um
} 0 if 0=Rer{(~(I`1+2*n)E2Be)/I`1+2*n
t{t,[1] 'error '
s{s,[1] aov2 (nR2)Ner
aov2 r{ aov2 x;df;s;v;vc
df { s { 0
nxt:v {x[;1]/O|In
vc { (~x[;1])/O|In
df { df+X/dfs[v]
}error if (RRy)Ev
}umean if um
leastsq: s { s + ss2 vc sigma2 v delta2 y
}test
umean: s { s + nhX(ss (1Uvc) sigma v delta ym)%X/Rym
}test
error: s { s +(`1YRy)X (ss vc sigma (1Uv)delta ye)%X/`1URy
test: }nxt if 0<`1YRx{0 1Ux
r{ df,s
table table;dfe;dftt;sse;sst
' df ss ms'
t, 3 0 16 5 16 5 NJ s,s[;2]%s[;1]
means r { m means y;i;v;vc;x
v{,'abcdef'Im
vc{(~(IRRy)Ev)/IRRy
x{,(H|v)O\(vc sigma y)%X/(Ry)[vc]
i{O\1+(Ry)[v]N`1+IX/(Ry)[v]
r {(4 0 NJ i),12 3 NJ((Rx),1)Rx
convert r { n convert data ;x
x{Rdata
r{2 1 3O\(x[2],(x[1]%n),n)RO\data
m3 # y=m+a+b+ab+c�+E newdata newdata
data { ((pXn),q)R0
'enter data for each subject on a new line'
i { 1
nxt: 'subject: ';i
t { L
}error XI (R,t)#1URdata
data[i;]{t
}nxt XI (1YRdata)& i{ i+1
'newdata complete'
}0
error:'wrong amount of data'
1URdata;' elements required'
}nxt
dat3 � - @A �A B �A B pB B `B �B B @A �@ @B B @B �A @A �B B �B B B �B �B B @A �A �A �B pB �B �B �B B B @B
sum r { v sum y;p;q
r { y
v { (~(IRRy)Ev)/IRRy
nxt:}0 if 0=Rv
p { |Hq {|H~(IRRr)=1Yv
r { q\O(Rr)[q]R (+/[1] p\Or)
v { 1Uv
}nxt
sigma2 r { v sigma2 y
r { v sigma y
nv { v sigma nv
delta2 r { v delta2 y;vc
r { y
nv { y#0
nxt:}0 if 0=Rv
vc { ((1Yv)#IRRr)/IRRr
r { r-((1Yv) sumx r)X(vc sumx nv)%+/,nv
v { 1Uv
}nxt
ss2 r { ss2 y
r { +/,(y*2)%nv
m3u ( y=m+a+b+ab+c�+E ; um m3l ( y=m+a+b+ab+c�+E ; ls testd testd
dat3
m3
m3 anova dat3
''
m3u
m3u anova dat3
''
m3l
m3l anova dat3
sumx r { v sumx y;p;q
r { y
nxt:}0 if 0=R,v
p { |Hq {|H~(IRRr)=1Yv
r { q\O(Rr)[q]R (+/[1] p\Or)
v { 1Uv
}nxt
Llx 3 'type ''describe'' for details' edtxt edtxt;fd;name;vr;r
L'{'variable name? '
name { L'
fd { 390 Lcreat 'apltxt.tmp'
}(fd < 0)/error
r { fd Lwrite BJ name
fd { Lclose fd
Lrun 'xed apltxt.tmp'
fd { 260 Lopen 'apltxt.tmp'
}(fd<0)/error
vr { ''
more: vr { vr,r { fd Lread 256
} (0#Rr)/more
fd { Lclose fd
r { BJ name,' { vr'
Lrun 'rm apltxt.tmp'
}0
error: 'Can''t open file: apltxt.tmp'
describe � d� �
these functions are described in:
algorithms for anova with unequal cell frequencies
by a.p. reeves and j. a. sniezek
in apl quote quad vol.10, no2, pp32-34, december 1979
for an example usage type testd
umeans r { m umeans y;v;vc;x
y { (+/y)%(`1YRy)-+/y=0
v {,'abcdef'Im
vc{(~(IRRy)Ev)/IRRy
x { (vc sigma y)%X/(Ry)[vc]
r { 12 3 NJ x
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.