File:  [CSRG BSD Unix] / 43BSD / contrib / apl / lib / anovaws
Revision 1.1: download - view: text, annotated - select for diffs
Tue Apr 24 16:12:54 2018 UTC (8 years, 1 month ago) by root
CVS tags: MAIN, HEAD
Initial revision

n��*.KB�	H	ssr { ss y
r { (+/,y*2)%X/Ry

sigmar { v sigma y
r { BJ((2XRv)R'+/'),'(|H|H(IRRy)Ev)\Oy'

deltar { v delta y;p;q
r { y
nxt:}0 if  0=Rv
r { (rX(Rr)[1Yv])-(1Yv) sumx r
v { 1Uv
}nxt

ifr { a if b
r { b/a

rmvc { v rm y
vc { (~(IRRy)Ev)/IRRy

anovam anova y;a;b;n;s;t;aF;ym;yv;ye;dfs;nh;nv;um
start
aov1
table
startstart
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
aov1aov1;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
	aov2r{ 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
tabletable;dfe;dftt;sse;sst
'           df          ss              ms'
t, 3 0 16 5 16 5 NJ s,s[;2]%s[;1]

meansr { 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

convertr { 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�+Enewdatanewdata
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 BpBB`B�BB@A�@@BB@B�A@A�B B�BBB�B�B B@A�A�A�BpB�B�B�BB B@B
sumr { 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

sigma2r { v sigma2 y
r { v sigma y
nv { v sigma nv

delta2r { 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
	ss2r { ss2 y
r { +/,(y*2)%nv
m3u(y=m+a+b+ab+c�+E ; umm3l(y=m+a+b+ab+c�+E ; lstestdtestd
dat3
m3
m3 anova dat3
''
m3u
m3u anova dat3
''
m3l
m3l anova dat3

sumxr { 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
Llx3  '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

umeansr { 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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.