1 ' STUDENT'S T-TEST (two-tailed) 2 ' Written by Tracy L. Gustafson, M.D. 3 ' Round Rock, Texas. Version 3.0, 1984 4 ON ERROR GOTO 5000:CHAIN MERGE "EPIMRG",5 15 DIM D(1),CS(1),T(1),N$(1),X(1),X2(1),MD(1),SD(1) 22 DATA "STUDENT'S T-TEST (two-tailed)",21,31 30 LOCATE 6,7:PRINT "(Press RETURN if you wish to skip directly to T evaluation)" 35 LOCATE 5,1:GOSUB 4000 40 PRINT:PRINT:PRINT TAB(4);"What are the SAMPLE NUMBERS of the 2 variables you want to compare?":PRINT TAB(10);:AR=CSRLIN 45 AC=17:GOSUB 4200:NS1=NS:AC=47:GOSUB 4200:NS2=NS 50 PRINT TAB(5);"Means =";TAB(19);X(NS1)/T(NS1);TAB(49);X(NS2)/T(NS2) 55 PRINT "Variances =";TAB(19);SD(NS1)^2;TAB(49);SD(NS2)^2:PRINT 60 PRINT TAB(10);"Are these INDEPENDENT or PAIRED samples? (I or P) "; 65 INPUT"", A$:IF A$="I" OR A$="i" THEN 90 ELSE IF A$<>"P" AND A$<>"p" THEN BEEP:GOTO 60 70 IF T(NS1)<>T(NS2) THEN BEEP:PRINT:PRINT "These 2 samples do not have the same number of elements---":PRINT TAB(37);"a paired T-TEST cannot be performed.":GOTO 220 75 XD=0:XD2=0:N=T(NS1):V=N-1 80 FOR Z=1 TO N:ED=VAL(D(NS1,Z))-VAL(D(NS2,Z)):XD=XD+ED:XD2=XD2+ED*ED:NEXT 85 VD=(XD2-XD*XD/N)/V:ST=ABS(XD/N)*SQR(N)/SQR(VD):GOTO 115 90 N1=T(NS1):N2=T(NS2):V=N1+N2-2:V1=N1-1:V2=N2-1 95 VR=((X2(NS1)-X(NS1)*X(NS1)/N1)+(X2(NS2)-X(NS2)*X(NS2)/N2))/V 100 VR=VR*(1/N1+1/N2):ST=ABS(X(NS1)/N1-X(NS2)/N2)/SQR(VR) 105 F=SD(NS1)^2/SD(NS2)^2:IF F<1 THEN F=1/F:SWAP V1,V2 110 GOSUB 240:IF P<.05 THEN PRINT:PRINT "The T-TEST may not be appropriate because these variances":PRINT TAB(20);"are so different (F =";F;" p ";:IF P<.000001 THEN PRINT "< 10 (-6) )." ELSE PRINT "=";P;")." 115 PRINT:PRINT TAB(12);"T = ";ST;TAB(53);"df = ";V:GOTO 135 120 CLS:PRINT TAB(17);"EVALUATING THE T DISTRIBUTION (two-tailed)":PRINT TAB(17);STRING$(43,205) 125 LOCATE 8,11:INPUT;"Enter T value: ",ST:ST=ABS(ST) 130 PRINT TAB(43);:INPUT "degrees of freedom: ",V:PRINT 135 R=ATN(ST/SQR(V)):RC=COS(R):R2=RC*RC:RS=SIN(R):X=1 140 IF V MOD 2=0 THEN 165 145 IF V=1 THEN Y=R:GOTO 160 150 Y=RC:FOR Z=3 TO (V-2) STEP 2:X=X*R2*(Z-1)/Z:Y=Y+X*RC:NEXT 155 Y=R+RS*Y 160 P=1-Y*.6366197723657157#:GOTO 175 165 Y=1:FOR Z=2 TO (V-2) STEP 2:X=X*R2*(Z-1)/Z:Y=Y+X:NEXT 170 P=1-Y*RS 175 PLAY "MB O3 L32 MS DF#A O4 DF#A O5 L8 D" 180 PRINT TAB(26);:COLOR CLR2,CLR1:PRINT " p = ";:IF P<.000001 THEN PRINT"< 10 (-6)"; ELSE PRINT P; 185 PRINT TAB(50):IF AF=1 THEN COLOR CLR1,CLR2:GOTO 230 190 PRINT TAB(8);"The MEANS of these 2 samples are ";:IF P>.05 THEN PRINT "NOT "; 195 PRINT "significantly different.";TAB(75):COLOR CLR1,CLR2 200 PRINT:PRINT:PRINT "The confidence limits on the DIFFERENCE between the means of these samples":PRINT "can be calculated as: ":PRINT TAB(25); 205 DF=STR$(V):DF=RIGHT$(DF,LEN(DF)-1):IF A$="i" OR A$="I" THEN 215 210 YD=ABS(XD/N):PRINT YD; "+/- T(";DF;") * ";SQR(VD/N):GOTO 220 215 YD=ABS(X(NS1)/N1-X(NS2)/N2):PRINT YD;"+/- T(";DF;") * ";SQR(V1) 220 DQ="Do you want another T-TEST using ":LOCATE 25,15:PRINT DQ;:INPUT;"this datafile? ",A$:IF A$="y" OR A$="Y" THEN CLS:GOTO 40 225 LOCATE 25,12:PRINT DQ;:INPUT;"a DIFFERENT datafile? ",A$:IF A$="y" OR A$="Y" THEN 20 ELSE 235 230 LOCATE 25,17:INPUT;"Do you want to evaluate another T value? ",A$:IF A$="y" OR A$="Y" THEN 120 235 LOCATE 23,1:END 240 X=1/(V1/V2*F+1):Y=1-X:PF=1:PT=1:VA=V1:VB=V2 245 IF V1 MOD 2<>0 THEN IF V2 MOD 2=0 THEN 265 ELSE 275 250 IF V2 MOD 2=0 THEN IF V2>=V1 THEN 265 255 FOR Z=1 TO (V1/2-1):PF=PF*(.5/Z*Y*VB):PT=PT+PF:VB=VB+2:NEXT 260 P=X^(V2*.5)*PT:GOTO 325 265 FOR Z=1 TO (V2/2-1):PF=PF*(.5/Z*X*VA):PT=PT+PF:VA=VA+2:NEXT 270 P=1-Y^(V1*.5)*PT:GOTO 325 275 XT=ATN(SQR(F*V1/V2)):X=SIN(XT):Y=COS(XT):PT=Y:PF=Y 280 IF V2=1 THEN 295 285 FOR Z=2 TO (V2-3) STEP 2:PF=PF*Y*Y*Z/(Z+1):PT=PT+PF:NEXT 290 PT=PT*X:XT=XT+PT 295 PT=1:PF=1:IF V1=1 THEN 320 300 FOR Z=2 TO (V2-1) STEP 2:PF=PF*Z/(Z-1):NEXT 305 PF=PF*Y^V2*X:PZ=1:PT=1:VB=V2+1 310 FOR Z=3 TO (V1-2) STEP 2:PZ=PZ*VB*X*X/Z:PT=PT+PZ:VB=VB+2:NEXT 315 XT=XT-PT*PF 320 P=1-XT*2/3.141592653599# 325 RETURN 4010 AF=0:IF FILE$="" THEN AF=1:GOTO 120 4025 ERASE D,CS,T,N$,X,X2,MD,SD 4030 DIM D(A,C),CS(A,C),T(A),N$(A),X(A),X2(A),MD(A),SD(A) 5000 BEEP:IF ERR<>53 AND ERR<>71 THEN 5010 ELSE LOCATE 10,10:PRINT "Please place EPISTAT in drive A: (or other default).":PRINT TAB(25);"Press any key to continue:" 5005 A$=INKEY$:IF A$="" THEN 5005 ELSE RESUME 5010 ON ERROR GOTO 0:END