5 COMMON m1(), x() 20 CLS 30 PRINT " STATISTICAL ECOLOGY: A PRIMER ON METHODS AND COMPUTING" 40 PRINT 50 PRINT " I N T E R A C T I V E B A S I C P R O G R A M " 60 PRINT 70 PRINT " B Q V . B A S " 80 PRINT 90 PRINT " -----------------------------------------------------------" 100 PRINT " THIS PROGRAM COMPUTES A SPATIAL PATTERN ANALYSIS " 110 PRINT " BY BLOCKED-QUADRAT VARIANCES FOR:": PRINT 120 PRINT " 1. Hill's Two-Term Local Quadrat Variance (TTLQV) method": PRINT 130 PRINT " 2. Greig-Smith's Blocked Quadrat Variance (BQV) method as " 140 PRINT " applied to contiguous quadrat data from a belt transect" 150 PRINT " ------------------------------------------------------------" 160 PRINT 170 PRINT "PRESS ANY KEY TO CONTINUE" 180 IF INKEY$ = "" THEN 180 190 CLS 200 PRINT "- - - - - - - - - PART I. DATA ENTRY - - - - - - - - - - -": PRINT 210 PRINT "This program utilizes abundance data for a species obtained from " 220 PRINT " contiguous (adjacent) SAMPLING UNITS (SUs) (e.g., quadrats) " 230 PRINT " along a belt transect, assuming the belt is positioned across " 240 PRINT " a homogeneous ecological community (see Text).": PRINT 250 PRINT "These data are organized as follows:": PRINT 280 PRINT " Quadrat/SU" 290 PRINT " 1 2 3 4 5 6 7 ... N" 300 PRINT " -- -- -- -- -- -- -- --" 310 PRINT " Species 1: 1 0 3 5 2 1 4 ... 6": PRINT 320 GOSUB 960 330 CLS : PRINT "- - - PART II. COMPUTE BLOCKED-QUADRAT VARIANCES - - -" 340 PRINT 350 PRINT " S P A T I A L P A T T E R N A N A L Y S I S ": PRINT 360 PRINT " INPUT the QUADRAT VARIANCE METHOD Option:": PRINT 370 PRINT " 1 = Hill's Two-Term Local Quadrat Variance Method (TTLQV - Eq. 4.2)": PRINT 380 PRINT " 2 = Greig-Smith's Blocked Quadrat Variance Method (BQV - Eq. 4.1)": PRINT 390 INPUT P: PRINT 400 IF P < 1 OR P > 2 THEN PRINT "value out-or-range, try again": GOTO 390 410 FOR I = 0 TO 20 420 NQ = 2 ^ I 430 IF NQ > n THEN GOTO 450 440 NEXT I 450 NQ = 2 ^ (I - 1): PRINT 460 PRINT "INPUT the MAXIMUM BLOCK SIZE NUMBER to be analysed, with " 470 PRINT " the RESTRICTION that this NUMBER can NOT be greater than" 480 PRINT " one-half the total number of quadrats/SUs (N)" 490 PRINT " (A number equal to about 10% of the total number (N) is " 500 PRINT " recommended -- see discussion in TEXT)" 510 IF P = 1 THEN GOTO 540 520 PRINT " and this NUMBER must be a POWER of 2, (e.g., 1, 2, 4, 8," 530 PRINT " 16, 32, 64, 128, 256, ... )." 540 INPUT NM: PRINT 550 IF NM < 1 OR NM > (n / 2) THEN PRINT "out-of-range, try again ": GOTO 540 560 FOR I = 0 TO 20 570 N1 = 2 ^ I 580 m1(I + 1) = N1 590 IF N1 > NM THEN GOTO 610 600 NEXT I 610 N3 = I: PRINT : PRINT 620 PRINT " BLK-SIZE DF VARIANCE " 630 PRINT " -------- --- -------- " 640 N4 = NM 650 IF P = 2 THEN N4 = N3 660 REM - LOOP BY BLOCK-SIZES SPECIFIED 670 FOR I = 1 TO N4 680 S1 = 0: S2 = 0: D1 = 0 690 K1 = 2 * I 700 IF P = 2 THEN K1 = 2 * m1(I) 710 N5 = (n - K1) + 1 720 IF P = 2 THEN N5 = (NQ - K1) + 1 730 K2 = 1 740 IF P = 2 THEN K2 = K1 750 FOR J = 1 TO N5 STEP K2 760 K = (J + I) - 1 770 IF P = 2 THEN K = (J + m1(I)) - 1 780 L1 = K: X1 = 0: X2 = 0 790 FOR L2 = J TO K 800 L1 = L1 + 1 810 X1 = X1 + x(L1) 820 X2 = X2 + x(L2) 830 NEXT L2 840 X3 = X1 - X2 850 S1 = S1 + ((X3 * X3) / K1) 860 D1 = D1 + 1 870 NEXT J 880 S2 = S1 / D1 890 IF P = 1 THEN PRINT USING "########"; I; 900 IF P = 2 THEN PRINT USING "########"; m1(I); 910 PRINT USING "##########"; D1; 920 PRINT USING "########.#"; S2 930 NEXT I 940 INPUT "Run again with different OPTION ? (Y/N)"; AJO$ 950 IF AJO$ = "Y" OR AJO$ = "y" THEN GOTO 330 ELSE END 960 REM - - - - - SUBROUTINE FOR DATA ENTRY - - - - - 970 PRINT "Species Data INPUT options:" 980 PRINT " Option 1 - Species Data already exists in a STORED data file" 990 PRINT " Option 2 - Species Data is to be manually entered from keyboard" 1000 PRINT " (and subsequently STORED, if desired)" 1010 INPUT "Choose OPTION: Enter 1 or 2 "; OPT 1020 IF OPT < 1 OR OPT > 2 THEN PRINT "value out-of-range, try again ": GOTO 1010 1030 PRINT "INPUT the total number of CONTIGUOUS QUADRATS (SUs) SAMPLED " 1040 INPUT " along the BELT TRANSECT: N ? ", n: PRINT 1041 DIM m1(n), x(n) 1060 IF OPT = 1 THEN GOTO 1240 1080 PRINT "The data matrix is created one COLUMN (Quadrat or SU) at a time:" 1090 PRINT "INPUT abundances for a species by quadrat (SU)": PRINT 1100 FOR SU = 1 TO n 1110 PRINT "Abundance in SU "; SU 1120 INPUT " "; x(SU) 1130 NEXT SU 1140 INPUT "STORE This DATASET ON DISK ? (ENTER Y for YES / N for NO) "; A$ 1150 IF A$ = "N" OR A$ = "n" THEN GOTO 1310 ELSE GOTO 1160 1160 INPUT "Specify a name for this DATASET (e.g., BQV.DAT) "; OUTDAT$ 1170 INPUT "Specify DISK drive: ENTER A, B, C, etc. "; DD$ 1180 OUTDAT$ = DD$ + ":" + OUTDAT$ 1190 OPEN OUTDAT$ FOR OUTPUT AS #1 1200 FOR SU = 1 TO n 1210 PRINT #1, x(SU); 1220 NEXT SU: PRINT 1230 GOTO 1310 1240 INPUT "Specify name of DATA File (e.g., BQV.DAT) "; DATAFIL$ 1250 INPUT "Specify DISK DRIVE where located: A, B, C, etc. "; DD$ 1260 FILENAM$ = DD$ + ":" + DATAFIL$ 1270 OPEN "I", #1, FILENAM$ 1280 FOR SU = 1 TO n 1290 INPUT #1, x(SU) 1300 NEXT SU: PRINT 1310 INPUT "Would you like to list the DATA ? (Y for Yes / N for NO) "; A$ 1320 IF A$ = "Y" OR A$ = "y" THEN GOTO 1330 ELSE GOTO 1400 1330 PRINT "LISTING OF THE DATA SET. ROWS=species, COLUMNS=SUs " 1340 PRINT " " 1350 FOR SU = 1 TO n 1360 PRINT x(SU); 1370 NEXT SU: PRINT : PRINT 1380 PRINT "PRESS ANY KEY TO CONTINUE" 1390 IF INKEY$ = "" THEN 1390 1400 CLOSE #1 1410 RETURN