5 COMMON X(), F(), E(), E2(), F2() 10 CLS 20 PRINT " STATISTICAL ECOLOGY: A PRIMER ON METHODS AND COMPUTING " 30 PRINT 40 PRINT " I N T E R A C T I V E B A S I C P R O G R A M " 50 PRINT 60 PRINT " P O I S S O N . B A S " 70 PRINT 80 PRINT " --------------------------------------------------------" 90 PRINT " CHI-SQUARE TEST (GOODNESS-OF-FIT) FOR AGREEMENT WITH A" 100 PRINT " POISSON SERIES " 110 PRINT " --------------------------------------------------------" 120 PRINT 130 PRINT " This Test is Based On: ": PRINT 140 PRINT " OBSERVED data: # Sampling Units with 0,1,2,...r individuals" 150 PRINT " EXPECTED data: # Sampling Units with 0,1,2,...r individuals" 160 PRINT " based on POISSON probabilities " 170 PRINT " NOTE: The TOTAL number of sampling units should be > 40" 180 PRINT " --------------------------------------------------------" 190 FOR I = 1 TO 3: PRINT "": NEXT I 200 PRINT "PRESS ANY KEY TO CONTINUE" 210 IF INKEY$ = "" THEN 210 220 CLS 230 DIM X(100), F(100), E(100), E2(101), F2(101) 240 PRINT "- - - - - - - - - -PART I. DATA ENTRY- - - - - - - - - - ": PRINT "" 250 PRINT "This program requires data TABULATED in the form" 260 PRINT " of a FREQUENCY DISTRIBUTION - for example: ": PRINT "" 270 PRINT " x = F(x) = Frequency " 280 PRINT " Number of Individuals (Number of Sampling Units" 290 PRINT " PER Sampling Unit Containing x individuals)" 300 PRINT " 0 1 " 310 PRINT " 1 1 " 320 PRINT " 2 1 " 330 PRINT " 3 3 " 340 PRINT " 4 2 " 350 PRINT " 5 2 ": PRINT 360 PRINT "To use this program, first enter the LARGEST frequency class" 370 PRINT " i.e., x individuals per SU, that occurs in YOUR data set (in the " 380 INPUT " above example, x = 5). Largest x or FREQUENCY CLASS = "; CLASSES 390 PRINT "Next, INPUT your OBSERVED FREQUENCY DATA " 400 PRINT 410 PRINT " __x__,__F(x)__" 420 FOR I = 1 TO CLASSES + 1: X(I) = I - 1 430 PRINT " "; I - 1; : INPUT " ", F(I) 440 NEXT I 450 X(CLASSES + 2) = 0: F(CLASSES + 2) = 0 460 REM CALCULATE TOTAL NUMBER OF SAMPLING UNITS IN DATA SET (N), 470 REM TOTAL NUMBER OF INDIVIDUALS (S1), & SUMS OF SQUARES (S2) 480 N = 0: S1 = 0: S2 = 0 490 FOR I = 1 TO CLASSES + 2 500 N = N + F(I): REM TOTAL NUMBER OF SAMPLING UNITS 510 S1 = S1 + (X(I) * F(I)): REM TOTAL NUMBER OF INDIVIDUALS 520 S2 = S2 + ((X(I) * X(I)) * F(I)): REM SUMS OF SQS OF INDIVIDUALS 530 NEXT I 540 REM CALCULATE INDEX OF DISPERSION, GREEN'S INDEX, CHI-SQ VALUE 550 MEAN = S1 / N: REM MEAN 560 VAR = (S2 - (MEAN * S1)) / (N - 1): REM VARIANCE 570 ID = VAR / MEAN: REM INDEX DISP.(EQ 3.6) 580 CS = ID * (N - 1): REM CHI-SQ (EQ 3.7B) 590 DS = SQR(2 * CS) - SQR(2 * (N - 1) - 1): REM D STATISTIC (EQ 3.8) 600 GI = (ID - 1) / (S1 - 1): REM GREEN'S INDEX (EQ 3.10) 610 CLS : PRINT "SUMMARY OF YOUR DATA SET: " 620 PRINT "TOTAL number of sampling units................ "; N 630 PRINT "TOTAL number of individuals .................. "; S1 640 PRINT "Number of Individuals/Sampling Unit " 650 PRINT " MEAN = "; MEAN 660 PRINT " VARIANCE = "; VAR 670 PRINT "VARIANCE/MEAN ratio (Index of Dispersion)..... "; ID 680 PRINT " Chi-Square Statistic (Eq.3.7a) ....... "; CS 690 PRINT " d Statistic (Eq. 3.8)................. "; DS 700 PRINT "GREEN'S Index ................................ "; GI 710 PRINT 720 PRINT "PRESS ANY KEY TO CONTINUE" 730 IF INKEY$ = "" THEN 730 740 CLS 750 PRINT "- - -PART II. COMPUTING THE CHI-SQUARE STATISTIC- - - ": PRINT "" 760 PRINT "The CHI-SQ. STATISTIC is based on: OBS FREQS (Fx) & EXP FREQS (Ex)" 770 PRINT " As a general rule, no EXPECTED (Ex) value should ever be < 1 " 780 PRINT " (Cochran 1954) or, more rigorously, much less than 5 (Poole 1974)" 790 PRINT " If your data has many Fx's with only 1 SU (this often happens in" 800 PRINT " tails of the distributions), biased values of CHI-SQ. may result" 810 PRINT " and POOLING of Ex's should be done so that no Ex < 5. Otherwise " 820 PRINT " this is not a strict rule and minimum EX values of 1 or 3 may be " 830 PRINT " tried. In cases where POOLING significantly affects the results " 840 PRINT " of the test, we recommend the more conservative values. " 850 PRINT : PRINT 860 INPUT "ENTER MINIMUM VALUE of Ex allowed: ", MINEXPFQ: CLS 870 PRINT " Your data will be pooled in both the UPPER and LOWER tails of the" 880 PRINT " FREQUENCY distribution if any Ex value is LESS THAN ", MINEXPFQ 890 PRINT 900 REM CALCULATE THE EXPECTED NUMBER OF SAMPLING UNITS WITH ZERO INDIVIDUALS 910 E(1) = (EXP(-MEAN)) * N 920 REM CALCULATE THE EXPECTED NUMBER OF SAMPLING UNITS WITH 1,2,etc. INDIVS." 930 SUMEXP = E(1): FOR I = 2 TO CLASSES + 1 940 E(I) = (MEAN * E(I - 1)) / (I - 1) 950 SUMEXP = E(I) + SUMEXP 960 NEXT I 970 E(CLASSES + 2) = N - SUMEXP 980 REM CHECK FOR EXPECTED FREQUENCIES <1 AND COMBINE (UPPER & LOWER TAILS) 990 REM LOWER TAIL 1000 K = 0: E2(1) = 0: F2(1) = 0 1010 E2(1) = E(1 + K) + E2(1) 1020 F2(1) = F(1 + K) + F2(1) 1030 IF E2(1) > MINEXPFQ THEN GOTO 1050 1040 K = K + 1: GOTO 1010 1050 FOR I = 2 TO CLASSES + 2 - K 1060 E2(I) = E(K + I) 1070 F2(I) = F(K + I) 1080 NEXT I 1090 REM UPPER TAIL 1100 JMAX = CLASSES + 2 - K: E2(JMAX) = 0: E2(JMAX + 1) = 0: F2(JMAX) = 0: L = 0: LL = 0 1110 JMAX = JMAX - LL 1120 E2(JMAX) = E(CLASSES + 2 - L) + E2(JMAX + 1) 1130 F2(JMAX) = F(CLASSES + 2 - L) + F2(JMAX + 1) 1140 IF E2(JMAX) > MINEXPFQ AND E2(JMAX - 1) > MINEXPFQ THEN GOTO 1160 1150 L = L + 1: LL = 1: GOTO 1110 1160 REM COMPUTE THE CHI-SQUARE VALUES 1170 PRINT "# INDIV/SU OBS FREQ EXP FREQ 2 " 1180 PRINT " (x) (Fx) (Ex) (Fx-Ex) /Ex " 1190 PRINT "---------- -------- -------- ----------- " 1200 CHISQ = 0: LINES = 0 1210 FOR I = 1 TO JMAX: LINES = LINES + 1 1220 IF LINES = 17 THEN INPUT " HIT ENTRY/RETURN KEY TO CONTINUE ", DD: LINES = DD 1230 CHISQI = ((F2(I) - E2(I)) ^ 2) / E2(I) 1240 CHISQ = CHISQI + CHISQ 1250 IF I > 1 AND I < JMAX THEN GOTO 1290 ELSE GOTO 1260 1260 IF I = 1 THEN PRINT USING "0 - ###"; K; 1270 IF I = JMAX THEN PRINT USING ">= ###"; K; 1280 GOTO 1300 1290 PRINT USING " ###"; K; 1300 PRINT USING " #####"; F2(I); 1310 PRINT USING " #####.##"; E2(I); CHISQI 1320 K = K + 1 1330 NEXT I 1340 REM CALCULATE DEGREES OF FREEDOM 1350 DF = JMAX - 2 1360 PRINT " " 1370 PRINT "TOTAL CHI-SQUARE = "; CHISQ; " WITH D.F. = "; DF 1380 PRINT : PRINT "PRESS ANY KEY TO CONTINUE" 1390 IF INKEY$ = "" THEN 1390 1400 PRINT " NO Expected (Ex) value was allowed to be less than ", MINEXPFQ 1410 PRINT " Would you like to run this analysis again using a DIFFERENT" 1420 PRINT " MINIMAL allowable size for EXPECTED frequencies? " 1430 INPUT " ENTER Y OR N..."; A$: IF A$ = "Y" OR A$ = "y" THEN GOTO 860 1440 END