5 COMMON x(), y() 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 " T S Q U A R E . B A S " 70 PRINT " " 80 PRINT " -----------------------------------------------------------------" 90 PRINT " This PROGRAM COMPUTES a SPATIAL PATTERN ANALYSIS based on " 100 PRINT " T-SQUARE SAMPLING DISTANCE DATA, including:": PRINT 110 PRINT " 1. INDEX of CLUMPING " 120 PRINT " 2. INDEX of DISPERSION ": PRINT 130 PRINT " T-SQUARE DISTANCE DATA includes:": PRINT 140 PRINT " 1. POINT-to-NEAREST-INDIVIDUAL distances " 150 PRINT " 2. INDIVIDUAL-to-NEAREST-NEIGHBOR distances, EXCLUDING" 160 PRINT " those INDIVIDUALS beyond a T-SQUARE half-plane" 170 PRINT " (see TEXT, Chapter 5, Figure 5.1)." 180 PRINT " ----------------------------------------------------------------" 190 PRINT "PRESS ANY KEY TO CONTINUE" 200 IF INKEY$ = "" THEN 200 210 CLS 220 PRINT " - - - - - - - - PART I. DATA ENTRY - - - - - - - - - -": PRINT 230 PRINT "This program requires distance data tabulated in the form:": PRINT 240 PRINT " SAMPLE POINT-TO- INDIVIDUAL- " 250 PRINT " POINT NEAREST- TO-NEAREST- " 260 PRINT " Pt INDIVIDUAL NEIGHBOR " 270 PRINT " ------ ---------- ----------- " 280 PRINT " 1 X(1) Y(1) " 290 PRINT " 2 X(2) Y(2) " 300 PRINT " . . . " 310 PRINT " . . . " 320 PRINT " N X(N) Y(N) ": PRINT 330 GOSUB 690 340 CLS : PRINT "- - - PART II. COMPUTE SPATIAL PATTERN INDICES - - -": PRINT 350 X1 = 0: X2 = 0: X3 = 0: X4 = 0: Y1 = 0: Y2 = 0 360 FOR PT = 1 TO N 370 X1 = X1 + x(PT) 380 XSQ = x(PT) * x(PT) 390 X2 = X2 + XSQ 400 X4 = X4 + (XSQ ^ 2) 410 Y1 = Y1 + y(PT) 420 YSQ = y(PT) * y(PT) 430 Y2 = Y2 + YSQ 440 X3 = X3 + (XSQ / (XSQ + (YSQ / 2))) 450 NEXT PT 460 PRINT "DISTANCE STATISTICS and PATTERN INDICES:" 470 XBAR = X1 / N 480 PRINT : PRINT " MEAN Point-to-Nearest Individual DISTANCE... = "; 490 PRINT USING "####.##"; XBAR 500 YBAR = Y1 / N 510 PRINT : PRINT " MEAN Individual-to-Nearest Neighbor DISTANCE = "; 520 PRINT USING "####.##"; YBAR 530 C = X3 / N 540 PRINT : PRINT " T-SQUARE Index of Clumping................ C = "; 550 PRINT USING "####.##"; C 560 Z = (C - .5) / SQR(1 / (12 * N)) 570 PRINT " with a z-STATISTIC..................... z = "; 580 PRINT USING "####.##"; Z 590 D = ((N + 1) * X4) / (X2 ^ 2) 600 PRINT : PRINT " JOHNSON & ZIMMER Index of Dispersion...... I = "; 610 PRINT USING "####.##"; D 620 Z = (D - 2) / SQR((4 * (N - 1)) / ((N + 2) * (N + 3))) 630 PRINT " with a z-STATISTIC .................... z = "; 640 PRINT USING "####.##"; Z 650 PRINT : PRINT " The PROBABILITY of these Z-STATISTICS is given in a " 660 PRINT " z-table for the probabilities of deviations" 670 PRINT " for a standard NORMAL DISTRIBUTION." 680 END 690 REM - - - - - SUBROUTINE FOR DATA ENTRY - - - - - 700 PRINT "Distance Data INPUT options:" 710 PRINT " Option 1 - Distance Data already exists in a STORED data file" 720 PRINT " Option 2 - Distance Data is to be manually entered from keyboard" 730 PRINT " (and subsequently STORED, if desired)" 740 INPUT "Choose OPTION: Enter 1 or 2 "; OPT 750 IF OPT < 1 OR OPT > 2 THEN PRINT "value out-of-range, try again ": GOTO 740 760 PRINT "First INPUT the NUMBER of POINTS at which distances were measured?" 770 PRINT " (these points maybe random or from a grid -- see TEXT)": PRINT 780 INPUT "NUMBER OF POINTS..."; N 790 DIM x(N), y(N) 800 IF OPT = 1 THEN GOTO 1000 ELSE IF OPT <> 2 THEN GOTO 810 810 PRINT "Next, INPUT the PAIRED DISTANCE DATA: X and Y" 830 PRINT "(Input one X, Y pair at a time, separating X and Y with a comma) " 840 PRINT : PRINT " Pt X , Y " 850 PRINT " _______ " 860 FOR PT = 1 TO N 870 PRINT " ", PT; 880 INPUT " ", x(PT), y(PT) 890 NEXT PT 900 INPUT "STORE THIS DATASET ON DISK ? (ENTER Y for YES / N for NO) "; A$ 910 IF A$ = "N" OR A$ = "n" THEN GOTO 1070 ELSE GOTO 920 920 INPUT "Specify a name for this DATASET (e.g., DISTANCE.DAT) "; OUTDAT$ 930 INPUT "Specify DISK drive: ENTER A, B, C, etc. "; DD$ 940 OUTDAT$ = DD$ + ":" + OUTDAT$ 950 OPEN OUTDAT$ FOR OUTPUT AS #1 960 FOR PT = 1 TO N 970 PRINT #1, x(PT), y(PT); 980 NEXT PT: PRINT 990 GOTO 1070 1000 INPUT "Specify name of DATA File (e.g., DISTANCE.DAT) "; DATAFIL$ 1010 INPUT "Specify DISK DRIVE where located: A, B, C, etc."; DD$ 1020 FILENAM$ = DD$ + ":" + DATAFIL$ 1030 OPEN "I", #1, FILENAM$ 1040 FOR PT = 1 TO N 1050 INPUT #1, x(PT), y(PT) 1060 NEXT PT: PRINT 1070 INPUT "Would you like to list the DATA ? (Y for Yes / N for NO) "; A$ 1080 IF A$ = "Y" OR A$ = "y" THEN GOTO 1090 ELSE GOTO 1150 1090 PRINT "LISTING of the DISTANCE DATA SET:": PRINT 1100 FOR PT = 1 TO N 1110 PRINT "Pt "; PT; " X="; x(PT); " Y="; y(PT) 1120 NEXT PT: PRINT 1130 PRINT "PRESS ANY KEY TO CONTINUE" 1140 IF INKEY$ = "" THEN 1140 1150 CLOSE #1 1160 RETURN