home *** CD-ROM | disk | FTP | other *** search
/ Best Objectech Shareware Selections / UNTITLED.iso / boss / educ / math / 023 / ttest.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1990-03-20  |  23.7 KB  |  375 lines

  1. 1  '         STUDENT'S t TESTS  ---  TTEST.BAS  ---  by  Dr Russell Langley
  2. 2  GOTO 400
  3. 4  '<UNK! {000A}>--- Press Enter ---
  4. 5  IF PR THEN RETURN ELSE PRINT TAB(40);:PRINT "Press <Enter> to continue.";:IN$=INKEY$:WHILE INKEY$<>CHR$(13):WEND:LOCATE,40:PRINT SPACE$(26):RETURN
  5. 6  PRINT TAB(14);:PRINT "Press <Enter> to continue, or `/' to end viewing.";:IN$=INKEY$:WHILE IN$<>CHR$(13) AND IN$<>"/":IN$=INKEY$:WEND:LOCATE,14:PRINT SPACE$(50):IF IN$="/" THEN I=N:RETURN ELSE RETURN
  6. 7  '<UNK! {000A}>*** Redirect to Block ***
  7. 8  QD=1:GOTO 622
  8. 9  ON QB GOTO 405,177,519,8,721:STOP  '=start,printout,1-Sample,Inde,Matched.<UNK! {000A}><UNK! {000A}>--- Another go? ---
  9. 10  CLOSE:IF HD$="" THEN LPRINT STRING$(79,61)STRING$(4,10)
  10. 11  GOTO 400
  11. 19  '<UNK! {000A}>--- Yes/No? ---
  12. 20  PRINT:PRINT"Do you want to "+DO$;
  13. 21  INPUT" (Y/N)";Z$:IF Z$="" THEN Z$="N":RETURN ELSE Z$=CHR$(ASC(Z$) AND 95):IF Z$="Y" OR Z$="N" THEN RETURN ELSE PRINT"WHAT?  ";:GOTO 21
  14. 29  '<UNK! {000A}>--- Errors & End ---
  15. 30  IF ERR THEN BEEP ELSE RUN"MENU"
  16. 31  IF ERR=70 THEN INPUT"Can't write to that disk.  Remove its Write-Protect tab, then press <Enter>.";Z$:RESUME
  17. 32  IF ERR=71 THEN INPUT"That drive is empty or its gate is open.  Fix, then press <Enter>.";Z$:RESUME
  18. 33  IF ERR=210 THEN RESUME 9 'from #86
  19. 39  ON ERROR GOTO 0:END'<UNK! {000A}><UNK! {000A}>*** Messages ***
  20. 40  BEEP:PRINT "---> Sorry, that entry is illegal.":RETURN
  21. 43  PRINT:COLOR 23,0:PRINT"Working ";:COLOR 7,0:RETURN
  22. 44  LOCATE,1:PRINT"Ok, done.";:GOTO 5
  23. 45  BEEP:PRINT"Error.  Each sample must have at least 3 measurements!":PRINT:RETURN
  24. 46  ZZ$=STRING$(37-LEN(Z$)\2,177):LOCATE 1,1:PRINT ZZ$"  ";:COLOR 15,0:PRINT Z$;:COLOR 7,0:PRINT"  "ZZ$:RETURN 'Display brightened Z$ at top of screen
  25. 47  PRINT #2,"Confidence limits not computed (since all requested t-values weren't entered).":RETURN
  26. 49  '<UNK! {000A}>--- Vetted Decoding of FF X(I,J) from X$ ---<UNK! {000A}>    Needs I, M, Q(0) from #96 or #256, & UT>0 if UT matrix.
  27. 50  K=1:L=M
  28. 51  KX=0:FOR J=K TO L:Y$=SPACE$(10):KY=0
  29. 52  KX=KX+1:IF KX>LEN(X$) THEN IF J=L THEN 54 ELSE 57
  30. 53  Z$=MID$(X$,KX,1):IF INSTR("-.0123456789",Z$) THEN KY=KY+1:MID$(Y$,KY,1)=Z$:GOTO 52 ELSE IF Z$<>" " THEN 58 ELSE IF KY=0 THEN 52
  31. 54  IF Q(0) THEN Q(J)=VAL(Y$) ELSE X(I,J)=VAL(Y$)
  32. 55  NEXT J:IF KX>=LEN(X$) THEN 60
  33. 56  PLAY"L8O3CO2C":PRINT"Only the first"L"values have been read in that line.  Re-do it";:GOSUB 21:IF Z$="Y" THEN 59 ELSE 60
  34. 57  PLAY"L32O4CEG>C":PRINT"Not enough values in the line above.  Please re-do whole line.":GOTO 59
  35. 58  PLAY"L16O3CEL4>B":PRINT"That line contains a `non-numeric' entry.  Please re-do whole line."
  36. 59  PRINT"Row"STR$(I);:INPUT X$:IF RIGHT$(X$,1)<>"/" THEN 51 ELSE X$=LEFT$(X$,LEN(X$)-1):N=I+(X$=""):IF X$>"" THEN 51
  37. 60  RETURN
  38. 69  '<UNK! {000A}>--- K/b Input of all X(I,J) in FF ---<UNK! {000A}>    Needs first I, M, Q>0 (sample #), KN(Q), & if UT matrix UT>0.  Returns N.
  39. 70  PRINT"Enter data from keyboard, ";:IF M=1 THEN PRINT "pressing <Enter> after each number.":GOTO 72
  40. 71  PRINT"in Free Format, pressing <Enter> at end of each row.":IF UT THEN 73
  41. 72  PRINT"Null entry duplicates previous row.  Signal `end-of-data' by entering a `/'"
  42. 73  PRINT"Row"STR$(I-KN(Q-1));:INPUT X$:IF X$=""THEN IF I>1 THEN FOR J=1 TO M:X(I,J)=X(I-1,J):NEXT J:I=I+1:LOCATE CSRLIN-1,POS(0)+9:PRINT"Ditto":GOTO 73
  43. 74  IF RIGHT$(X$,1)="/" THEN X$=LEFT$(X$,LEN(X$)-1):N=I+(X$=""):IF X$="" THEN 76
  44. 75  GOSUB 50:IF N=0 THEN IF I<MXR THEN I=I+1:GOTO 73 ELSE N=MXR
  45. 76  RETURN
  46. 79  '<UNK! {000A}>--- Disk Input of X(I,J), N, M, etc ---<UNK! {000A}>    Needs MNR, MNC, & NEEDVARS.  Also ZZ$="UTOK" if UT is acceptable.
  47. 80  QD=1:IO$="I":GOSUB 110:CLS:PRINT "Loading data from disk.":INPUT #1,FL$,VR$
  48. 81  IF LEFT$(VR$,4)<>"(RL," THEN BEEP:PRINT "Unreadable file --- not made by our Data Filer/Editor program.":GOTO 86
  49. 82  INPUT #1,DT$,ID$,N,M,UT,VN$:PRINT "Filename: "FL$,"Made: "DT$,"Version: "VR$:PRINT"ID: "ID$:PRINT
  50. 83  IF UT>0 AND ZZ$<>"UTOK" THEN PRINT "This file is an upper triangular matrix, which this program can't use!":GOTO 86
  51. 84  PRINT"File has"N"rows of data. ";:IF N<MNR THEN PRINT "--- Not enough!":GOTO 86 ELSE IF N>MXR THEN PRINT"--- Too many!":GOTO 86
  52. 85  PRINT:PRINT"File has"M"column variables. ";:IF M<MNC THEN PRINT "--- Not enough!" ELSE IF M>MXC THEN PRINT"Too many!" ELSE 88
  53. 86  CLOSE:BEEP:GOSUB 5:ERROR 210
  54. 87  '   Select variables
  55. 88  PRINT:IF VN$="N" THEN PRINT "The"M"variables are not named.":GOTO 90
  56. 89  PRINT "Variables in file are:":FOR J=1 TO M:INPUT #1,VN$(J):PRINT J;VN$(J),:NEXT J:PRINT
  57. 90  IF M=MNC OR UT>0 THEN 100 ELSE PRINT
  58. 91  IF NEEDVARS=0 THEN PRINT"How many filed column variables are to be IGNORED (0-"MID$(STR$(M-MNC),2)")";:INPUT ND:IF ND<0 OR ND>M-MNC THEN 91 ELSE IF ND=0 THEN 100
  59. 92  IF NEEDVARS=1 THEN PRINT"This test analyses only 1 column variable at a time.":ND=M-1
  60. 93  IF NEEDVARS=2 THEN PRINT"This test analyses only 2 column variables.":ND=M-2
  61. 94  IF ND=1 THEN PRINT "Number of the variable to be IGNORED (1-"MID$(STR$(M),2)")";:INPUT X$:Q(1)=VAL(X$):IF Q(1)<1 OR Q(1)>M THEN GOSUB 40:GOTO 94 ELSE 97
  62. 95  PRINT MID$(STR$(ND),2)" numbers of variables to be IGNORED (in ascending order & Free Format):":INPUT X$:IF VAL(X$)<1 THEN GOSUB 40:GOTO 95
  63. 96  Q(0)=1:MM=M:M=ND:GOSUB 50:Q(0)=0:M=MM
  64. 97  KK=1:L=1:FOR J=1 TO M:IF J=Q(KK) THEN KK=KK+1 ELSE VN$(L)=VN$(J):L=L+1
  65. 98  NEXT J
  66. 99  '   Now read numerical data from disk
  67. 100  PRINT:COLOR 23,0:PRINT"Loading numbers";:COLOR 7,0:FOR I=1 TO N:KK=1:LL=1:L=M
  68. 101  FOR J=1 TO L:INPUT #1,Z
  69. 102  IF J=Q(KK) THEN KK=KK+1 ELSE X(I,LL)=Z:LL=LL+1
  70. 103  NEXT J:NEXT I:CLOSE:LOCATE,1:PRINT SPACE$(15):M=M-ND:RETURN
  71. 109  '<UNK! {000A}>--- Get Filespec ---
  72. 110  IF IO$="O" AND FL$>"" THEN PRINT "Will you file this data under the name "FL$;:GOSUB 21:IF Z$="Y" THEN 115
  73. 111  LINE INPUT "Filename (I will add .DAT extension)? ";FL$:IF FL$="" THEN 111 ELSE IF MID$(FL$,2,1)=":" THEN DR$=LEFT$(FL$,1):FL$=MID$(FL$,3)
  74. 112  ER=0:FOR I=1 TO LEN(FL$):Z$=MID$(FL$,I,1):IF INSTR(" .,/\|?*:;[]+="+CHR$(34),Z$) THEN ER=1
  75. 113  NEXT I
  76. 114  IF ER=0 AND FL$>"" AND LEN(FL$)<9 THEN FL$=FL$+".DAT" ELSE BEEP:PRINT "Invalid filename.  Will you try again";:GOSUB 21:IF Z$="Y" THEN 111 ELSE 2
  77. 115  INPUT "Which drive (A,B,C,D)";DR$:IF DR$="" THEN 115
  78. 116  DR$=CHR$(ASC(DR$) AND 95):IF INSTR("ABCD",DR$)=0 THEN 115
  79. 117  INPUT "Which directory (e.g. WORK, MYDATA, or Null Entry if root) ";DR2$:IF DR2$="" THEN DR$=DR$+":" ELSE DR$=DR$+":\"+DR2$+"\"
  80. 129  '<UNK! {000A}>*** Open File, IO$= "I" ***
  81. 130  IF IO$="O" THEN STOP
  82. 131  '
  83. 132  '
  84. 133  '
  85. 134  ON ERROR GOTO 136:OPEN DR$+FL$ FOR INPUT AS #1  'for input
  86. 135  ON ERROR GOTO 30:RETURN   'input #1,A$,B$:close
  87. 136  PRINT FL$" not found on Drive "DR$:RESUME 137
  88. 137  GOSUB 5:ON ERROR GOTO 30:CLS:ERASE X:SHELL "DIR "+DR$+"/W":GOSUB 5:DIM X(MXR,3):GOTO 110 ' *** MXC replaced ***
  89. 159  '<UNK! {000A}>--- Show/Print Answers ---
  90. 160  QB=1:PR=0:CLOSE:OPEN "SCRN:" FOR OUTPUT AS #2:RETURN
  91. 161  DO$="print these results":GOSUB 20:IF Z$="N" THEN PR=0:RETURN
  92. 162  PR=1:IF ID$="" THEN LINE INPUT "Problem ID? ";ID$:GOTO 164
  93. 163  LINE INPUT"Problem ID (null = unchanged)? ";Z$:IF Z$>"" THEN ID$=Z$
  94. 164  RETURN
  95. 165  QB=2:CLS:LOCATE 8,1
  96. 166  PRINT TAB(12)"KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE"
  97. 167  PRINT TAB(12)"OPEN                                                       OPEN"
  98. 168  PRINT TAB(12)"OPEN                TURN  PRINTER  ON.                     OPEN"
  99. 169  PRINT TAB(12)"OPEN                                                       OPEN"
  100. 170  PRINT TAB(12)"OPEN    Then PRESS <ENTER> to start printing ..... or ..   OPEN"
  101. 171  PRINT TAB(12)"OPEN                                                       OPEN"
  102. 172  PRINT TAB(12)"OPEN    To send Printer Codes in Basic before printing,    OPEN"
  103. 173  PRINT TAB(12)"OPEN    press <Ctrl-Break>, & start printing by GOTO 9.    OPEN"
  104. 174  PRINT TAB(12)"OPEN                                                       OPEN"
  105. 175  PRINT TAB(12)"SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD":IN$=INKEY$
  106. 176  IN$=INKEY$:IF IN$<>CHR$(13) THEN 176
  107. 177  CLS:PRINT"Printing .....":LOCATE 4,1:CLOSE:OPEN "LPT1:" FOR OUTPUT AS #2
  108. 178  IF HD$>"" THEN PRINT #2,STRING$(79,61):PRINT #2,DAT$;TAB(42-LEN(HD$)\2);HD$;TAB(73)VER$:PRINT #2,STRING$(79,61):HD$=""
  109. 179  PRINT #2,CHR$(10)"Problem: "ID$;CHR$(10)
  110. 180  RETURN
  111. 189  '<UNK! {000A}>*** Print Data ***<UNK! {000A}>   Needs X( , ) & NEEDVARS=1 or 2: if=1, then NS,N( ),KN( ,1) else J,K,VN$( ).
  112. 190  DO$="print all the data used":GOSUB 20:IF Z$="N" THEN 193
  113. 191  PRINT #2,STRING$(2,10)"DATA USED: ":IF OP=1 THEN 194 ELSE IF NEEDVARS=1 THEN FOR J=1 TO NS:PRINT #2,"Sample "CHR$(J+64)":":FOR I=1 TO N(J):PRINT #2,X(I+KN(J-1),1);:NEXT I:PRINT #2,:NEXT J:GOTO 193
  114. 192  IF NEEDVARS=2 THEN GOSUB 210:PRINT #2,VN$(1)", & "VN$(2):FOR I=1 TO N:PRINT #2,X(I,1);X(I,2):NEXT I
  115. 193  PR=0:PRINT #2,:CLOSE:RETURN
  116. 194  FOR I=1 TO N:PRINT #2,X(I,1);:NEXT I:PRINT #2,:GOTO 193
  117. 199  '<UNK! {000A}>--- Show a Row of Data ---
  118. 200  PRINT"Row"STR$(I)": ";:FOR J=1 TO M:PRINT X(I,J);:NEXT J:PRINT:RETURN
  119. 209  '<UNK! {000A}>--- Varnames ---
  120. 210  IF VN$="Y" THEN RETURN ELSE FOR J=1 TO M:IF J<10 THEN VN$(J)="Var #"+STR$(J) ELSE VN$(J)="Var #"+MID$(STR$(J),2)
  121. 211  NEXT J:RETURN
  122. 229  '<UNK! {000A}>--- Stats of X(I,J), I=II to NN  (for Sample Q if NS>1) ---
  123. 230  S1=0:S2=0:S3=0:S4=0:SM=X(II,J):GR=SM:FOR I=II TO NN:X=X(I,J)-X(II,J):S1=S1+X:S2=S2+X*X:S3=S3+X*X*X:S4=S4+X*X*X*X:IF X(I,J)<SM THEN SM=X(I,J) ELSE IF X(I,J)>GR THEN GR=X(I,J)
  124. 231  NEXT I:IF GR-SM<9.999E-06 THEN 237
  125. 232  NN=NN-II+1:AV=S1/NN:SS=S2-S1*AV:VA=SS/(NN-1):SD=SQR(VA):SE=SQR(VA/NN)
  126. 233  SKEW=(S3-3*S2*AV+2*AV^3*NN)/SQR(SS^3/NN):ZSKEW=SKEW/SQR(6*(NN-2)/((NN+1)*(NN+3))):CURT=(S4-4*S3*AV+6*S2*AV^2-3*AV^4*NN)/(SS^2/NN):ZCURT=(CURT-3)/SQR(24/NN)
  127. 234  AV=AV+X(II,J):TG1=(AV-SM)/SD:TG2=(GR-AV)/SD
  128. 235  IF NS>1 THEN AV(Q)=AV:SS(Q)=SS:VA(Q)=VA:SD(Q)=SD:SKEW(Q)=SKEW:ZSKEW(Q)=ZSKEW:CURT(Q)=CURT:ZCURT(Q)=ZCURT
  129. 236  RETURN
  130. 237  LOCATE,1:PRINT"Fatal Error.  Var #"J"has no variation.":GOSUB 5:END
  131. 249  '<UNK! {000A}>--- Transform Sub ---
  132. 250  K=20:CLS:LOCATE,24,0:PRINT "TRANSFORM MENU<UNK! {000A}><UNK! {000A}>"TAB(K)"1   Arcsin (Sqrt (p))<UNK! {000A}>"TAB(K)"2   Arcsin (Sqrt (p%/100))<UNK! {000A}>"TAB(K)"3   Log (X)<UNK! {000A}>"TAB(K)"4   Log (X+1)<UNK! {000A}>"TAB(K)"5   Reciprocal 100/X";
  133. 251  PRINT"<UNK! {000A}>"TAB(K)"6   Reciprocal Plus, 100/(X+1)<UNK! {000A}>"TAB(K)"7   Sqrt (X)<UNK! {000A}>"TAB(K)"8   Sqrt (X+0.5)<UNK! {000A}>"TAB(K)"9   X Squared<UNK! {000A}>"TAB(K-1)"10   None"
  134. 252  PRINT"<UNK! {000A}>"TAB(10)"Negative codes reverse transforms (e.g. -3 = Antilog)<UNK! {000A}>":LOCATE,,1
  135. 253  INPUT"Which transform (+/- 1 to 9, or 10)";T%:IF T%=10 THEN 273 ELSE IF ABS(T%)<1 OR ABS(T%)>9 THEN PRINT"WHAT?  ";:GOTO 253
  136. 254  IF M=1 THEN NT=1:Q(1)=1:GOTO 257 ELSE PRINT"How many variables are to have this transform (max"STR$(M)")";:INPUT NT:IF NT<1 OR NT>M THEN 254 ELSE IF NT=M THEN FOR J=1 TO M:Q(J)=J:NEXT J:GOTO 257
  137. 255  IF NT=1 THEN INPUT"Which variable # ";X$:Q(1)=VAL(X$):IF Q(1)<1 OR Q(1)>M THEN PRINT"Silly":GOTO 255 ELSE 257
  138. 256  PRINT"Which"NT"variables (#'s in Free Format)";:INPUT X$:I=1:MM=M:M=NT:Q(0)=1:GOSUB 50:Q(0)=0:M=MM:FOR J=1 TO NT:IF Q(J)>0 AND Q(J)<=M THEN NEXT J ELSE PRINT"Value"J"is out-of-bounds.  Try again.":GOTO 256
  139. 257  GOSUB 43:A=57.2958:B=0.434294:Z=0:U=1:H=100:P5=0.5:P9=0.99999:E$(0)=""
  140. 258  FOR J=1 TO NT:K=Q(J):FOR I=1 TO N:ON T%+10 GOTO 269,270,270,267,267,265,265,262,262,39,260,259,264,263,267,266,269,268,270
  141. 259  X(I,K)=X(I,K)/H
  142. 260  IF X(I,K)>P9 THEN X(I,K)=P9 ELSE IF X(I,K)<Z THEN 272
  143. 261  X(I,K)=SQR(X(I,K)):X(I,K)=A*ATN(X(I,K)/SQR(U-X(I,K)*X(I,K))):GOTO 271
  144. 262  IF X(I,K)>=Z THEN X(I,K)=(SIN(X(I,K)/A))^2:IF T%=-U THEN 271 ELSE X(I,K)=H*X(I,K):GOTO 271 ELSE T%=U:GOTO 272
  145. 263  X(I,K)=X(I,K)+U
  146. 264  IF X(I,K)>Z THEN X(I,K)=B*LOG(X(I,K)):GOTO 271 ELSE 272
  147. 265  X(I,K)=EXP(X(I,K)/B):IF T%=-3 THEN 271 ELSE X(I,K)=X(I,K)-U:GOTO 271
  148. 266  X(I,K)=X(I,K)+U
  149. 267  IF X(I,K)<>Z THEN X(I,K)=H/X(I,K):IF T%=-6 THEN X(I,K)=X(I,K)-U:GOTO 271 ELSE 271 ELSE 272
  150. 268  X(I,K)=X(I,K)+P5
  151. 269  IF X(I,K)>=Z THEN X(I,K)=SQR(X(I,K)):GOTO 271 ELSE T%=7:GOTO 272
  152. 270  X(I,K)=X(I,K)*X(I,K):IF T%=-8 THEN X(I,K)=X(I,K)-P5
  153. 271  NEXT I:NEXT J:IF E$(0)=""THEN GOSUB 44:GOTO 273
  154. 272  BEEP:E$(0)="PROPORTION < 0":E$(1)="LOG 0 or Negative Number":E$(2)="DIVISION by 0":E$(3)="SQRT of Negative Number":PRINT:PRINT"Fatal Error: "E$((ABS(T%)-1)/2)", Row"I:GOSUB 5:END
  155. 273  RETURN
  156. 339  '<UNK! {000A}>--- Date ---
  157. 340  DAT$=MID$(DATE$,4,2)+" "+MID$("JanFebMarAprMayJunJulAugSepOctNovDec",-2+3*VAL(LEFT$(DATE$,2)),3)+" "+RIGHT$(DATE$,4):RETURN
  158. 359  '<UNK! {000A}>*** Get t for specified P and DF ***
  159. 360  PRINT USING "What is Student's t for 2-tail P = #% with df =### ";P;DF;:INPUT TT:RETURN
  160. 399  '<UNK! {000A}>--- Start ---
  161. 400  KEY OFF:CLEAR:SCREEN 0,0,0,0:CLS:ON ERROR GOTO 30
  162. 401  DEFINT I-N,Q:Q$=CHR$(34):MXR=400:MXC=20
  163. 402  DIM I,J,K,L,M,N,Q,Z,X$,Y$,Z$,VN$(MXC),Q(MXC),N(2),KN(2),DF(3),AV(3),SD(3),VA(3),SE(3),S1(3),S2(3),SM(3),GR(3),TG1(3),TG2(3),SKEW(3),ZSKEW(3),CURT(3),ZCURT(3),T5(3),T1(3),CL95(4),CL99(4),ED$(1),E$(3)
  164. 403  P5=0.5:S$=SPACE$(6)
  165. 404  ED$(0)="C#=Change, D#=Delete, X=Extra data, Null=Proceed":ED$(1)="C#=Change, Null=Proceed":FT$="What is the 2-tail P=#% value of Student's t for df=###":F$="#####.###":EDTR$="edit or transform that data & re-run this test"
  166. 405  QB=1:CLOSE:CLS:Z$="M E N U   F O R   S T U D E N T' S   t   T E S T S":GOSUB 46
  167. 406  LOCATE 3,8:PRINT"Press the NUMBER of your choice, and then press <ENTER> to run it.":PRINT STRING$(80,196)
  168. 407  LOCATE 6,1,0:K=20:PRINT"<UNK! {000A}>"TAB(K)"1   t Test on 1 Sample.<UNK! {000A}><UNK! {000A}>"TAB(K)"2   t Test on 2 Independent Samples.<UNK! {000A}><UNK! {000A}>"TAB(K)"3   t Test on 2 Matched Samples.<UNK! {000A}><UNK! {000A}>"TAB(K)"4   Return to Main Menu."
  169. 408  PRINT:LOCATE ,18,1:INPUT"===>  Option (1-4) ";OP:ON OP GOTO 500,600,700,30:PRINT"No, please enter 1, 2, 3 or 4":GOTO 408
  170. 499  '<UNK! {000A}>------ <<< 1-Sample t Test >>>
  171. 500  QB=3:HD$=" S T U D E N T' S   1 - S A M P L E   t   T E S T ":VER$="(RL,2)"
  172. 501  NEEDVARS=1:DIM X(MXR,1):NS=1
  173. 502  F1$="=  ########.##":F6$="=  ###.##":F7$="=####.##":F8$="=  ########":FC$="##% Confidence Limits for Population Mean =####,###.###   !  ####,###.###"
  174. 503  CLS:GOSUB 340:PRINT DAT$;TAB(42-LEN(HD$)\2);:COLOR 0,7:PRINT HD$;:COLOR 7,0:PRINT TAB(73)VER$:LOCATE 4,1,0:K=12
  175. 504  PRINT TAB(K)"KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE"
  176. 505  PRINT TAB(K)"OPEN                                                       OPEN"
  177. 506  PRINT TAB(K)"OPEN      Compares a sample mean & a population mean.      OPEN"
  178. 507  PRINT TAB(K)"OPEN Also estimates confidence limits for population mean. OPEN"
  179. 508  PRINT TAB(K)"OPEN             Sample size = 3 to 400.                   OPEN"
  180. 509  PRINT TAB(K)"OPEN       Various data transforms can be tried out.       OPEN"
  181. 510  PRINT TAB(K)"OPEN   Only simple editing if data comes from disk file.   OPEN"
  182. 511  PRINT TAB(K)"OPEN         If trouble, try <Ctrl-Break> & GOTO 9.        OPEN"
  183. 512  PRINT TAB(K)"OPEN                                                       OPEN"
  184. 513  PRINT TAB(K)"SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD":LOCATE,,1
  185. 514  DO$="enter data from disk":GOSUB 20:PRINT:IF Z$="N" THEN 518
  186. 515  '<UNK! {000A}>--- Disk Entry ---
  187. 516  QD=1:MNR=3:MNC=1:GOSUB 80:Q=1:GOTO 519
  188. 517  '<UNK! {000A}>--- K/b Entry ---
  189. 518  I=1:M=1:Q=1:GOSUB 70
  190. 519  CLOSE:PRINT:PRINT"Data read was:"
  191. 520  L=1:FOR I=1 TO N:PRINT TAB(L)"#"MID$(STR$(I),2)"="X(I,1);:L=L+16:IF L>65 THEN L=1:PRINT
  192. 521  IF I MOD 100=0 THEN GOSUB 6
  193. 522  NEXT I:PRINT
  194. 523  '<UNK! {000A}>--- Edit ---
  195. 524  PRINT ED$(QD);:INPUT Z$:IF Z$="" THEN 536 ELSE LZ$=CHR$(ASC(Z$) AND 95):I=VAL(MID$(Z$,2))
  196. 525  IF LZ$="C" THEN 527 ELSE IF QD THEN 526 ELSE IF LZ$="D" THEN 530 ELSE IF LZ$="X" THEN 532
  197. 526  BEEP:IF QD=0 AND (LZ$="C" OR LZ$="D") THEN PRINT"C or D need a valid datum number.":GOTO 524 ELSE PRINT"WHAT?":GOTO 524
  198. 527  IF I<1 OR I>N THEN 526
  199. 528  PRINT"Old value ="X(I,1)"     New value";:INPUT X$:IF X$="" THEN PRINT"Unchanged":GOTO 524 ELSE FOR L=1 TO LEN(X$):IF INSTR("-.0123456789",MID$(X$,L,1))=0 THEN PLAY"L16O3CEL4>B":PRINT"That has a `non-numeric' entry.  Re-do.":GOTO 528
  200. 529  NEXT L:X(I,1)=VAL(X$):GOTO 519
  201. 530  IF I<1 OR I>N THEN 526 ELSE IF N<4 THEN GOSUB 45:GOTO 524 ELSE GOSUB 43:FOR L=I TO N:X(L,1)=X(L+1,1):NEXT L:N=N-1:T5=0
  202. 531  LOCATE ,1:PRINT"Ok, value #"I"deleted.":GOSUB 5:GOTO 519
  203. 532  IF N=MXR THEN PRINT"Total N is already maximum,"N;:GOTO 524
  204. 533  PRINT"You can append up to"MXR-N"extra measurements, 1 per line, with `/' end-signal:"
  205. 534  I=N+1:N=0:GOSUB 73:T5=0:GOTO 519
  206. 535  '<UNK! {000A}>--- Trans, t Values, & Calc ---
  207. 536  DO$="transform this data":GOSUB 20:IF Z$="Y" THEN GOSUB 250:GOTO 519
  208. 537  PRINT:INPUT "What population mean value do you want to test";PM:PRINT:IF T5=0 THEN DF=N-1:P=5:GOSUB 360:T5=TT:IF T5 THEN P=1:GOSUB 360:T1=TT
  209. 538  GOSUB 43:II=1:NN=N:J=1:GOSUB 230:T=(AV-PM)/SE:IF T5 THEN CL95(1)=AV-T5*SE:CL95(2)=AV+T5*SE:CL99(1)=AV-T1*SE:CL99(2)=AV+T1*SE
  210. 539  '<UNK! {000A}>--- Answer ---
  211. 540  CLS:GOSUB 160:PRINT #2,TAB(40-LEN(HD$)\2)HD$CHR$(10)CHR$(10)
  212. 541  PRINT #2,"First 3 values were:";:FOR I=1 TO 3:PRINT #2,X(I,1);:NEXT I:PRINT #2,
  213. 542  PRINT #2,:PRINT #2,"n  ";USING F8$;N
  214. 543  PRINT #2,"Ave";USING F1$+S$+"SD"+F7$;AV;SD
  215. 544  PRINT #2,"Var";USING F1$+S$+"SE"+F7$;VA;SE
  216. 545  PRINT #2,"Min";USING F1$+S$+"T "+F7$+" (Thompson-Grubbs, Technometrics 1969, p.4)";SM;TG1
  217. 546  PRINT #2,"Max";USING F1$+S$+"T "+F7$+" (Ditto)";GR;TG2
  218. 547  PRINT #2,"Sqrt(B1)";USING F6$+S$+"Z "+F7$+" (BTS 34B)";SKEW;ZSKEW
  219. 548  PRINT #2,"B2      ";USING F6$+S$+"Z "+F7$+" (BTS 34C)";CURT;ZCURT
  220. 549  PRINT #2,:PRINT #2,USING "Testing hypothesis that population mean =#####.###,";PM:PRINT #2,TAB(15);USING "t =#####.###, df =####";T;DF
  221. 550  PRINT #2,:IF T5=0 THEN GOSUB 47 ELSE PRINT #2,USING FC$;95;CL95(1);"&";CL95(2):IF T1 THEN PRINT #2,USING FC$;99;CL99(1);"&";CL99(2)
  222. 551  IF PR THEN GOSUB 190 ELSE GOSUB 161:IF PR THEN GOSUB 165:GOTO 541
  223. 552  DO$=EDTR$:GOSUB 20:IF Z$="Y" THEN 519 ELSE 10
  224. 599  '<UNK! {000A}>-------<<< Inde t Test >>>
  225. 600  QB=4:HD$=" I N D E P E N D E N T   S A M P L E S   t   T E S T ":VER$="(RL,5)":IF OP=3 THEN QD=1:GOTO 622
  226. 601  NEEDVARS=1:DIM X(MXR,1):NS=2
  227. 602  FC$="##% Confidence Limits for Population Mean Diff =####,###.###   !  ####,###.###"
  228. 603  CLS:GOSUB 340:PRINT DAT$;TAB(42-LEN(HD$)\2);:COLOR 0,7:PRINT HD$;:COLOR 7,0:PRINT TAB(73)VER$:LOCATE 4,1,0:K=12
  229. 604  PRINT TAB(K)"KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE"
  230. 605  PRINT TAB(K)"OPEN                                                       OPEN"
  231. 606  PRINT TAB(K)"OPEN     Compares means of 2 INDEPENDENT sample groups.    OPEN"
  232. 607  PRINT TAB(K)"OPEN   Also confidence limits for population difference.   OPEN"
  233. 608  PRINT TAB(K)"OPEN  Min sample sizes = 3.  Max total measurements = 400. OPEN"
  234. 609  PRINT TAB(K)"OPEN       Various data transforms can be tried out.       OPEN"
  235. 610  PRINT TAB(K)"OPEN   Only simple editing if data comes from disk file.   OPEN"
  236. 611  PRINT TAB(K)"OPEN       Printouts available after viewing answers.      OPEN"
  237. 612  PRINT TAB(K)"OPEN         If trouble, try <Ctrl-Break> & GOTO 9.        OPEN"
  238. 613  PRINT TAB(K)"OPEN                                                       OPEN"
  239. 614  PRINT TAB(K)"SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD":LOCATE,,1
  240. 615  DO$="enter data from disk":GOSUB 20:PRINT:IF Z$="N" THEN 621
  241. 616  '<UNK! {000A}>--- Disk Entry ---
  242. 617  QD=1:MNR=6:MNC=1:GOSUB 80
  243. 618  FOR Q=1 TO NS:PRINT"How many measurements belong to Sample "CHR$(Q+64);:INPUT N(Q):IF N(Q)<3 OR N(Q)>N-KN(Q-1)THEN GOSUB 40:GOTO 618
  244. 619  KN(Q)=KN(Q-1)+N(Q):NEXT Q:IF N=KN(Q-1) THEN 622 ELSE BEEP:PRINT"Hey, those sample sizes don't add up to"N:GOTO 618
  245. 620  '<UNK! {000A}>--- K/b Entry ---
  246. 621  PRINT"Ok, press <Enter> after each measurement.  Null entry duplicates previous value.Signal `end-of-each-sample' by entering a `/'."
  247. 622  CLOSE:Q=1:M=1
  248. 623  IF QD THEN 626
  249. 624  PRINT:PRINT"Sample "CHR$(Q+64)" ---"
  250. 625  I=N+1:N=0:GOSUB 73:N(Q)=N-KN(Q-1):IF N(Q)>2 THEN KN(Q)=N ELSE GOSUB 45:N=KN(Q-1):GOTO 625
  251. 626  PRINT:PRINT"Sample "CHR$(Q+64)" --- Data read was:"
  252. 627  L=1:FOR I=KN(Q-1)+1 TO KN(Q):PRINT TAB(L)"#"MID$(STR$(I-KN(Q-1)),2)"="X(I,1);:L=L+16:IF L>65 THEN L=1:PRINT
  253. 628  IF I MOD 100=0 THEN GOSUB 6
  254. 629  NEXT I:PRINT
  255. 630  '<UNK! {000A}>--- Edit ---
  256. 631  PRINT ED$(QD);:INPUT Z$:IF Z$="" THEN 642 ELSE LZ$=CHR$(ASC(Z$) AND 95):I=VAL(MID$(Z$,2))
  257. 632  IF LZ$="C" THEN 634 ELSE IF QD THEN 633 ELSE IF LZ$="D" THEN 637 ELSE IF LZ$="X" THEN 639
  258. 633  BEEP:IF QD=0 AND (LZ$="C" OR LZ$="D") THEN PRINT"C or D need a valid datum number.":GOTO 631 ELSE PRINT"WHAT?":GOTO 631
  259. 634  IF I<1 OR I>N(Q) THEN 633 ELSE I=I+KN(Q-1)
  260. 635  PRINT"Old value ="X(I,1)"     New value";:INPUT X$:IF X$="" THEN 631 ELSE FOR L=1 TO LEN(X$):IF INSTR("-.0123456789",MID$(X$,L,1))=0 THEN PLAY"L16O3CEL4>B":PRINT"That contains a `non-numeric' entry.  Please re-do.":GOTO 635
  261. 636  NEXT L:X(I,1)=VAL(X$):GOTO 626
  262. 637  IF I<1 OR I>N(Q) THEN 633 ELSE IF KN(Q)-KN(Q-1)<4 THEN GOSUB 45:GOTO 631 ELSE GOSUB 43:FOR L=I+KN(Q-1) TO N:X(L,1)=X(L+1,1):NEXT L:N(Q)=N(Q)-1:KN(Q)=KN(Q)-1:N=N-1
  263. 638  LOCATE ,1:PRINT"Ok, value #"I"deleted.":T5(1)=0:GOSUB 5:GOTO 626
  264. 639  IF N=MXR THEN PRINT"Total N is already maximum,"N;:GOTO 631
  265. 640  PRINT"You can append up to"MXR-N"extra measurements, 1 per line, with `/' end-signal:"
  266. 641  I=N+1:N=0:GOSUB 73:N(Q)=N-KN(Q-1):KN(Q)=N:T5(1)=0:GOTO 626
  267. 642  IF Q<NS THEN Q=Q+1:GOTO 623
  268. 643  '<UNK! {000A}>--- Trans & Get t Values ---
  269. 644  DO$="transform this data":GOSUB 20:IF Z$="Y" THEN GOSUB 250:QD=1:GOTO 622
  270. 645  DF(1)=N(1)-1:DF(2)=N(2)-1:DF(3)=N-2
  271. 646  PRINT:FOR J=1 TO 3:IF J=2 AND DF(2)=DF(1) THEN T5(2)=T5(1):T1(2)=T1(1):GOTO 648
  272. 647  DF=DF(J):P=5:GOSUB 360:T5(J)=TT:IF T5(1)=0 THEN J=3 ELSE P=1:GOSUB 360:T1(J)=TT
  273. 648  NEXT J
  274. 649  '<UNK! {000A}>--- Calc ---
  275. 650  CLS:GOSUB 43:J=1
  276. 651  Q=1:II=1:NN=N(1):GOSUB 230
  277. 652  Q=2:II=N(1)+1:NN=N:CLS:GOSUB 230
  278. 653  DIF=AV(1)-AV(2):SED=SQR((SS(1)+SS(2))/DF(3)*N/N(1)/N(2)):T=DIF/SED
  279. 654  IF T5(3) THEN CL95(1)=DIF-T5(3)*SED:CL95(2)=DIF+T5(3)*SED:CL99(1)=DIF-T1(3)*SED:CL99(2)=DIF+T1(3)*SED
  280. 655  PBRSQ=(T*T)/(T*T+DF(3)):PBR=SQR(PBRSQ) 'Welkowitz 187
  281. 656  IF VA(1)>VA(2) THEN F=VA(1)/VA(2):DFT=DF(1):DFB=DF(2) ELSE F=VA(2)/VA(1):DFT=DF(2):DFB=DF(1)
  282. 657  FBVAD=VA(1)/N(1)+VA(2)/N(2):FBSED=SQR(FBVAD):FBT=DIF/FBSED:IF T5(1)=0 THEN 663
  283. 658  COCH5=(VA(1)/N(1)*T5(1)+VA(2)/N(2)*T5(2))/FBVAD
  284. 659  COCH1=(VA(1)/N(1)*T1(1)+VA(2)/N(2)*T1(2))/FBVAD
  285. 660  CL95(3)=DIF-COCH5*FBSED:CL95(4)=DIF+COCH5*FBSED
  286. 661  CL99(3)=DIF-COCH1*FBSED:CL99(4)=DIF+COCH1*FBSED
  287. 662  '<UNK! {000A}>--- Answers ---
  288. 663  CLS:GOSUB 160:PRINT #2,TAB(40-LEN(HD$)\2)HD$CHR$(10):Q1=20:Q2=50
  289. 664  PRINT #2,TAB(Q1)"Sample A";TAB(Q2)"Sample B":PRINT #2,
  290. 665  PRINT #2,"1st 3 values were:";:FOR I=1 TO 3:PRINT #2,TAB(Q1)X(I,1);TAB(Q2);X(I+KN(1),1):NEXT I:PRINT #2,
  291. 666  PRINT #2,"Size";TAB(Q1)N(1);TAB(Q2)N(2):PRINT #2,"Mean";TAB(Q1)AV(1);TAB(Q2)AV(2):PRINT #2,"S.D.";TAB(Q1)SD(1);TAB(Q2)SD(2)
  292. 667  PRINT #2,"Skewness, Sqrt(B1)"TAB(Q1)USING "+##.### (Z=###.#)";SKEW(1);ZSKEW(1);:PRINT #2,TAB(Q2)USING "+##.### (Z=###.#)";SKEW(2);ZSKEW(2)
  293. 668  PRINT #2,"Kurtosis, B2"TAB(Q1)USING "###.### (Z=###.#)";CURT(1);ZCURT(1);:PRINT #2,TAB(Q2)USING "###.### (Z=###.#)";CURT(2);ZCURT(2):IF PR THEN PRINT #2,
  294. 669  GOSUB 5:PRINT #2,"Difference betw means = ";DIF;S$"S.E. Diff =";SED
  295. 670  PRINT #2,TAB(10);USING "Student's t =####.###,  with d.f. ###.";T;DF(3)
  296. 671  PRINT#2,:IF T5(3)=0 THEN GOSUB 47:GOTO 674
  297. 672  PRINT #2,USING FC$;95;CL95(1);"&";CL95(2):IF T1(3)=0 THEN 674
  298. 673  PRINT #2,USING FC$;99;CL99(1);"&";CL99(2)
  299. 674  PRINT #2,:PRINT #2,USING "Between Group ! Data, Point Biserial r = +#.###  !  r squared = #.###";"&";PBR;"&";PBRSQ
  300. 675  PRINT #2,:PRINT #2,USING "Ratio of Sample Variances,  F =#####.##, with df ###  !  ###";F;DFT;"&";DFB
  301. 676  PRINT #2,"If this F-value is significant by 2-tailed test, prefer:"
  302. 677  PRINT #2,TAB(10);USING "Fisher-Behrens t' =####.###";FBT;:PRINT #2,S$"S.E. Diff ="FBSED
  303. 678  PRINT #2,".... This test can be judged by Cochran's t' values,";
  304. 679  IF T5(1)>0 AND T5(2)>0 THEN PRINT #2," namely:" ELSE PRINT #2,:PRINT #2,".... but you didn't enter the Student's t values needed for their calculation.":GOTO 684
  305. 680  PRINT #2,USING "     2-tail 5% t' =###.###    !    2-tail 1% t' =###.###";COCH5;"&";COCH1
  306. 681  PRINT#2,".... with adjusted limits as follows:"
  307. 682  PRINT #2,USING FC$;95;CL95(3);"&";CL95(4):IF T1(1)=0 THEN 684
  308. 683  PRINT #2,USING FC$;99;CL99(3);"&";CL99(4);
  309. 684  IF PR THEN GOSUB 190 ELSE GOSUB 161:IF PR THEN GOSUB 165:GOTO 664
  310. 685  DO$=EDTR$:GOSUB 20:IF Z$="Y" THEN CLS:QD=1:GOTO 622 ELSE 10
  311. 699  '<UNK! {000A}>--------<<< Matched Pairs t Test >>>
  312. 700  QB=5:HD$=" M A T C H E D   S A M P L E S   t   T E S T ":VER$="(RL,5)"
  313. 701  NEEDVARS=2:DIM X(MXR,3):NS=2
  314. 702  FC$="##% Confidence Limits for Population Mean Diff =####,###.###   !  ####,###.###"
  315. 703  CLS:GOSUB 340:PRINT DAT$;TAB(42-LEN(HD$)\2);:COLOR 0,7:PRINT HD$;:COLOR 7,0:PRINT TAB(73)VER$:LOCATE 4,1,0:K=12
  316. 704  PRINT TAB(K)"KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE"
  317. 705  PRINT TAB(K)"OPEN                                                       OPEN"
  318. 706  PRINT TAB(K)"OPEN      Compares means of 2 MATCHED sample groups.       OPEN"
  319. 707  PRINT TAB(K)"OPEN   Also confidence limits for population difference.   OPEN"
  320. 708  PRINT TAB(K)"OPEN      Accepts 3-400 rows of paired measurements.       OPEN"
  321. 709  PRINT TAB(K)"OPEN       Various data transforms can be tried out.       OPEN"
  322. 710  PRINT TAB(K)"OPEN   Only simple editing if data comes from disk file.   OPEN"
  323. 711  PRINT TAB(K)"OPEN       Printouts available after viewing answers.      OPEN"
  324. 712  PRINT TAB(K)"OPEN         If trouble, try <Ctrl-Break> & GOTO 9.        OPEN"
  325. 713  PRINT TAB(K)"OPEN                                                       OPEN"
  326. 714  PRINT TAB(K)"SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD":LOCATE,,1
  327. 715  '<UNK! {000A}>--- Get Data ---
  328. 716  DO$="enter data from disk":GOSUB 20:PRINT:IF Z$="N" THEN 720
  329. 717  '<UNK! {000A}>--- Disk Entry ---
  330. 718  QD=1:MNR=3:MNC=2:GOSUB 80:GOSUB 5:GOTO 721
  331. 719  '<UNK! {000A}>--- K/b Entry
  332. 720  PRINT"Ok, enter 3-400 paired values, 1 pair per line in Free Format, from keyboard.":I=1:M=2:Q=1:GOSUB 72:IF N<3 THEN PRINT "Not enough rows to analyse.  Will you add others";:GOSUB 21:IF Z$="N" THEN 2 ELSE 733
  333. 721  CLOSE:CLS:PRINT"Data read was:":FOR I=1 TO N:PRINT"Row #"MID$(STR$(I),2)": ";:FOR J=1 TO M:PRINT X(I,J);:NEXT J:PRINT:IF I MOD 20=0 THEN GOSUB 6
  334. 722  NEXT I
  335. 723  '<UNK! {000A}>--- Edit ---
  336. 724  PRINT:PRINT ED$(QD);:INPUT Z$:IF Z$="" THEN 735 ELSE LZ$=CHR$(ASC(Z$) AND 95):I=VAL(MID$(Z$,2))
  337. 725  IF LZ$="C" THEN 727 ELSE IF QD THEN 726 ELSE IF LZ$="D" THEN 731 ELSE IF LZ$="X" THEN 732
  338. 726  BEEP:IF QD=0 AND (LZ$="C" OR LZ$="D") THEN PRINT"C or D need a valid row number.":GOTO 724 ELSE PRINT"WHAT?":GOTO 724
  339. 727  IF I<1 OR I>N THEN 726 ELSE GOSUB 200
  340. 728  PRINT"Change which variable # (1 or 2)";:INPUT Z$:IF Z$="" THEN 724 ELSE J=VAL(Z$):IF J<1 OR J>M THEN BEEP:GOTO 728
  341. 729  PRINT"Old value ="X(I,J)"    New value";:INPUT X$:FOR L=1 TO LEN(X$):IF INSTR("-.0123456789",MID$(X$,L,1))=0 THEN PLAY"L16O3CEL4>B":PRINT"That contains a `non-numeric' entry.  Please re-do.":GOTO 729
  342. 730  NEXT L:X(I,J)=VAL(X$):PRINT"New ";:GOSUB 200:GOSUB 5:GOTO 721
  343. 731  IF I<1 OR I>N OR N<4 THEN GOSUB 40:GOTO 724 ELSE N=N-1:FOR K=I TO N:FOR L=1 TO M:X(K,L)=X(K+1,L):NEXT L:NEXT K:PRINT"Ok, Row"I"Deleted.":GOSUB 5:GOTO 721
  344. 732  IF N=MXR THEN PRINT"No, you have maximum rows already.":GOTO 724
  345. 733  PRINT"Ok, you can add up to"MXR-N"extra rows in Free Format.":I=N+1:N=0:Q=1:GOSUB 72:GOTO 721
  346. 734  '<UNK! {000A}>--- Trans, t Values & Calc ---
  347. 735  DO$="transform this data":GOSUB 20:IF Z$="Y" THEN GOSUB 250:GOTO 721
  348. 736  PRINT:IF T5=0 THEN DF=N-1:P=5:GOSUB 360:T5=TT:IF T5 THEN P=1:GOSUB 360:T1=TT
  349. 737  CLS:GOSUB 43
  350. 738  FOR I=1 TO N:X(I,0)=X(I,1)-X(I,2):X(I,3)=X(I,1)+X(I,2):NEXT I
  351. 739  II=1:NN=N:FOR J=0 TO 3:Q=J:GOSUB 230:NEXT J
  352. 740  SP=0:FOR I=1 TO N:SP=SP+X(I,0)*X(I,3):NEXT I:SP=SP-AV(0)*AV(3)*N:R=SP/SQR(SS(0)*SS(3))
  353. 741  DF=N-1:SED=SQR(SS(0)/N/DF):T=AV(0)/SED
  354. 742  IF T5 THEN CL95(1)=AV(0)-T5*SED:CL95(2)=AV(0)+T5*SED:IF T1 THEN CL99(1)=AV(0)-T1*SED:CL99(2)=AV(0)+T1*SED
  355. 743  '<UNK! {000A}>--- Answers ---
  356. 744  CLS:GOSUB 160:PRINT TAB(38-LEN(HD$)\2)HD$CHR$(10)
  357. 745  Q1=20:Q2=50:PRINT #2,TAB(Q1)"Sample A";TAB(Q2)"Sample B":PRINT #2,
  358. 746  PRINT #2,"1st 3 pairs were:";:FOR I=1 TO 3:PRINT #2,TAB(Q1)X(I,1);TAB(Q2);X(I,2):NEXT I:PRINT #2,
  359. 747  PRINT #2,"Size";TAB(Q1)N;TAB(Q2)N:PRINT #2,"Mean";TAB(Q1)AV(1);TAB(Q2)AV(2):PRINT #2,"S.D.";TAB(Q1)SD(1);TAB(Q2)SD(2)
  360. 748  PRINT #2,"Skewness, Sqrt(B1)"TAB(Q1)USING "+##.### (Z=###.#)";SKEW(1);ZSKEW(1);:PRINT #2,TAB(Q2);USING "+##.### (Z=###.#)";SKEW(2);ZSKEW(2)
  361. 749  PRINT #2,CHR$(10)"Difference between Means = "AV(0);S$"S.E. of Diff ="SED
  362. 750  PRINT #2,TAB(10);USING "Student's t =#####.###, with df =####";T;DF
  363. 751  PRINT#2,:IF T5=0 THEN GOSUB 47:GOTO 754
  364. 752  PRINT #2,USING FC$;95;CL95(1);"&";CL95(2):IF T1=0 THEN 754
  365. 753  PRINT #2,USING FC$;99;CL99(1);"&";CL99(2)
  366. 754  PRINT #2,CHR$(10)"For checking normality of the"N"difference values, they have:"
  367. 755  PRINT #2,TAB(10);USING "Sqrt(B1) = +##.### (Z=###.#)";SKEW(0);ZSKEW(0);:PRINT #2,S$;USING "B2 = ##.### (Z=###.#)";CURT(0);ZCURT(0)
  368. 756  PRINT #2,".... & Pearson's r between the"N"differences & sums is ";:PRINT #2,USING "+#.###, with df ###";R;N-2:GOSUB 5
  369. 757  IF PR THEN GOSUB 190 ELSE GOSUB 161:IF PR THEN GOSUB 165:GOTO 745
  370. 758  DO$=EDTR$:GOSUB 20:IF Z$="Y" THEN 721
  371. 759  IF N>200 THEN 762
  372. 760  DO$="try the Independent Samples t Test on this data, in case the     matching has turned out to be ineffective":GOSUB 20:IF Z$="N" THEN 10
  373. 761  CLS:GOSUB 43:NS=2:N(1)=N:N(2)=N:KN(1)=N:KN(2)=2*N:N=KN(2):FOR I=1 TO N(2):X(I+N(1),1)=X(I,2):NEXT I:CLS:GOTO 600
  374. 762  END
  375.