1  REM-   THIS PROGRAM GIVES A SIMPLE STATISTICAL ANALYSIS OF DATA
2  REM-   IT WILL PLOT DATA AND PRINT AN HISTOGRAM IF DESIRED
3  REM-     CUT A TAPE IN THE FOLLOWING FORM AND DUMP IT ON TOP
4  REM-       DEL-1000,1999 C/R 10*RUBOUT TAP C/R 10*RUBOUT
5  REM-       1000 DATA XXX,XXX,ETC UP TO A LIMIT OF 1000 POINTS
6  DIM A$[65],B$[65],G[1000]
7  L0=L1=N=X=X2=0
8  A4=A5=Q=1
9  PRINT "DO YOU WANT AN HISTOGRAM   1=YES   0=NO ";
10  INPUT A1
11  PRINT "DO YOU WANT A PLOT         1=YES   0=N0 ";
12  INPUT A2
13  PRINT "DO YOU WANT THE MEDIAN     1=YES   0=NO ";
14  INPUT A3
15  IF A1=0 AND A2=0 THEN 27
16  PRINT "AUTOMATIC`SCALE FACTOR     1=YES   0=NO ";
17  INPUT A4
18  IF A4 THEN 27
19  PRINT "LOWER LIMIT OF PRINTOUT = ";
20  INPUT N1
21  IF A1=0 THEN 24
22  PRINT "INCREMENT OF HISTOGRAM  = ";
23  INPUT J
24  IF A2=0 THEN 27
25  PRINT "INCREMENT OF PLOT       = ";
26  INPUT I
27  PRINT "THIS IS AN ANALYSIS OF WHAT"
28  INPUT A$
29  PRINT "WHAT ARE THE DIMENSIONS  ";
30  INPUT B$
31  PRINT "WHAT IS THE TARE READING ";
32  INPUT T
33  REM  << FIND MEAN OF DATA >>
34  RESTORE 1000
35  READ A
36  N=N+1
37  G[N]=A-T
38  X=X+G[N]
39  X2=X2+G[N]^2
40  S1=X/N
41  IF TYP(0)=3 THEN 43
42  GOTO 35
43  REM  << FIND STANDARD DEVIATION >>
44  S2=SQR(ABS((X2-X^2/N)/(N-1)))
45  REM  << OUTPUT >>
46  PRINT "-"'10'10'10'10'10;TAB(20);"THIS IS A STATISTICAL ANALYSIS OF"
47  PRINT TAB(37-LEN(A$)/2);A$
48  PRINT TAB(36-LEN(B$)/2);"(";B$;")"'10'10'10
49  PRINT "   NUMBER OF POINTS     = ";N
50  IF T=0 THEN 52
51  PRINT "   TARE OF DATA         = ";T
52  PRINT "   MEAN OF DATA         = ";S1
53  REM  << FIND MEDIAN OF DATA >>
54  IF A3=0 THEN 74
55  RESTORE 1000
56  L2=1
57  Q=G[1]
58  FOR L=2 TO N-L1
59  IF G[L] <= Q THEN 62
60  Q=G[L]
61  L2=L
62  NEXT L
63  Q1=G[N-L1]
64  G[N-L1]=Q
65  G[L2]=Q1
66  L1=L1+1
67  IF N-L1=1 THEN 69
68  GOTO 56
69  IF 2*INT(N/2)#N THEN 72
70  S3=(G[N/2]+G[N/2+1])/2
71  GOTO 73
72  S3=G[INT(N/2+1)]
73  PRINT "   MEDIAN OF DATA       = ";S3
74  PRINT "   STANDARD DEVIATION   = "S2
75  PRINT "   NORMALIZED DEVIATION = ";S2*N/X
76  REM  << FIND PLOT INCREMENT >>
77  IF A4=0 THEN 91
78  I1=30
79  I1=I1-1
80  I2=10^(I1+1)
81  IF I2>S2 THEN 79
82  RESTORE 83
83  DATA 2,5,10
84  FOR L=1 TO 3
85  READ A
86  IF S2/I2<A THEN 88
87  NEXT L
88  I=A*10^I1
89  J=2*I
90  N1=INT((X/N-25*I)/(10*I))*10*I
91  REM  << HISTOGRAM >>
92  IF A1=0 THEN 137
93  REM  << BUILD SCALED DATA COLUMN >>
94  RESTORE 1000
95  MAT G=ZER
96  FOR L=1 TO N
97  READ A
98  A=A-T
99  IF A<N1 THEN 102
100  A=INT((A-N1)/J)+1
101  G[A]=G[A]+1
102  NEXT L
103  REM  << CHECK FOR UPPER LIMIT >>
104  FOR L=1 TO 100
105  IF G[L]=0 THEN 107
106  L1=L
107  NEXT L
108  REM  << FIND MAX SCALED COLUMN >>
109  FOR L=1 TO L1
110  IF G[L] <= L0 THEN 112
111  L0=G[L]
112  NEXT L
113  PRINT "   SAMPLE SIZE          = ";J
114  PRINT "   MAXIMUM FREQUENCY    = ";L0
115  FOR L=1 TO L1
116  IF G[L]#L0 THEN 119
117  N2=N1+(L-1)*J
118  PRINT "     OCCURS BETWEEN ";N2;"AND ";N2+J
119  NEXT L
120  PRINT '10'10'10'10'10;TAB(33);"% OF MAXIMUM"
121  PRINT TAB(13);"0";TAB(22);"20";TAB(32);"40";TAB(42);"60";
122  PRINT TAB(52);"80";TAB(62);"100"
123  FOR L=1 TO 6
124  PRINT TAB(L*10+3);"!";
125  NEXT L
126  PRINT '13'10;TAB(13);
127  GOSUB 167
128  FOR L=1 TO L1+3
129  PRINT '13
130  IF (L-1)/5#INT((L-1)/5) THEN 132
131  PRINT N1+(L-1)*J;TAB(12);"-";
132  PRINT '13;TAB(13)"1";
133  FOR Q=1 TO G[L]*50/L0
134  PRINT "*";
135  NEXT Q
136  NEXT L
137  REM  << PLOT >>
138  IF A2=0 THEN 9900
139  A5=0
140  PRINT '10'10'10'10'10
141  PRINT TAB(31-LEN(B$)/2);B$
142  PRINT N1;TAB(19);N1+20*I;TAB(39);N1+40*I;TAB(59);N1+60*I
143  PRINT "!";
144  FOR L=1 TO 6
145  PRINT TAB(L*10);"!";
146  NEXT L
147  PRINT '13
148  GOSUB 167
149  PRINT '13'10;TAB(INT(S1/I)-N1/I-1);"-M-"
150  RESTORE 1000
151  FOR L=1 TO N
152  READ A
153  GOSUB 165
154  A=A-T
155  A=INT(A/I)
156  IF A-N1/I>70 THEN 160
157  IF SGN(A-N1/I)=-1 THEN 162
158  PRINT TAB(A-N1/I);"*"
159  GOTO 163
160  PRINT TAB(70)"0"
161  GOTO 163
162  PRINT "0"
163  NEXT L
164  GOTO 9900
165  K=K+1
166  IF K<21 THEN 172
167  FOR Q=1 TO 6-A5
168  PRINT "+----.----";
169  NEXT Q
170  PRINT "+"'13;
171  K=1
172  RETURN 
1000  REM-  THIS SPACE RESERVED FOR UP TO 1000 DATA POINTS
9900  REM  << TIME TAG >>
9901  PRINT '10'10'10'10'10
9902  Z1=Z2=0
9903  FOR Z=1 TO 12
9904  Z0=31
9905  IF Z=1 OR Z=3 OR Z=5 OR Z=7 OR Z=8 OR Z=10 OR Z=12 THEN 9911
9906  IF Z=4 OR Z=6 OR Z=9 OR Z=11 THEN 9910
9907  IF INT((1900+TIM(3))/4)=(1900+TIM(3))/4 THEN 9909
9908  Z0=Z0-1
9909  Z0=Z0-1
9910  Z0=Z0-1
9911  Z1=Z1+Z0
9912  IF SGN(TIM(2)-Z1)#1 THEN 9916
9913  Z2=Z1
9914  NEXT Z
9915  IMAGE 2D,"/",2D,"/",2D,3X,2D,":",2D
9916  PRINT  USING 9915;Z,TIM(2)-Z2,TIM(3),TIM(1),TIM(0)
9917  PRINT '10'10'10'17;
9918  END 
