10 REM ***************MAIN****************************** 20 MAXFILES=3 30 GOTO 90:' SETUP 40 GOSUB 210 :'GETINFO 50 GOSUB 900 :'KAPPAGEN 60 GOSUB 790 :'WAYOUT 80 REM ************SETUP******************************* 90 BEEP:CLS:CLEAR 200:DIM D$(2):OB=0:N=0:N1=0:N2=0 100 PRINT TAB(5); " >>>KAPPA.BA<<<" 110 PRINT TAB(5); " ADAPTED BY ELIAS ROBLES" 120 PRINT TAB(5); "FROM J. OUND & J. SATTLER (1984) 130 PRINT TAB(5); "FOR THE JANE GOODALL INSTITUTE" 140 PRINT TAB(5); " MARCH 1989. 150 PRINT: PRINT " PRESS ANY KEY TO CONTINUE..." 160 IF INKEY$="" THEN 160 170 CLS: GOSUB 820: 'MESSAGE 180 BEEP 190 GOTO 40 200 REM *************GETINFO**************************** 210 INPUT "ENTER NAME OF DATA FILE (OMIT .DO) FOR OBSERVER 1:";O1$ 220 O1$="RAM:"+O1$+".DO" 230 INPUT "ENTER NAME OF DATA FILE (OMIT .DO) FOR OBSERVER 2:";O2$ 240 O2$="RAM:"+O2$+".DO" 245 O3$="RAM:TEMP.DO" 250 OPEN O1$ FOR INPUT AS #1 260 OPEN O2$ FOR INPUT AS #2 265 OPEN O3$ FOR OUTPUT AS #3 270 INPUT# 1, N1: INPUT# 2, N2 280 IF N1<>N2 THEN PRINT "**ERROR**UNIQUAL SAMPLE SIZE":GOSUB 790:'WAYOUT 290 CLS:PRINT "PLEASE WAIT"; 300 FOR I=1 TO N1 310 PRINT "."; 320 FOR K=1 TO 2 330 INPUT# K, D$(K) 335 NEXT K 340 GOSUB 410: 'SIZE 350 GOSUB 550: 'BEHAV 360 NEXT I 380 CLOSE: CLS 390 RETURN 400 REM ********************SIZE************************* 410 IF LEN(D$(1))>LEN(D$(2)) THEN 420 ELSE 470 420 J=LEN(D$(1))-LEN(D$(2)) 430 FOR C=1 TO J 440 D$(2)=D$(2)+"9" 450 NEXT C 470 IF LEN(D$(2))>LEN(D$(1)) THEN 480 ELSE 530 480 J=LEN(D$(2))-LEN(D$(1)) 490 FOR C=1 TO J 500 D$(1)=D$(1)+"9" 510 NEXT C 530 RETURN 540 REM *****************BEHAV************************** 550 FOR L=1 TO LEN(D$(1)) STEP 2 560 FOR M=1 TO LEN(D$(2)) STEP 2 570 IF MID$(D$(1),L,2)=MID$(D$(2),M,2) AND MID$(D$(1),L,2)<>"00" THEN 580 ELSE 640 580 OB=OB+1 590 PRINT# 3, MID$(D$(1),L,2) 600 PRINT# 3, MID$(D$(2),M,2) 610 D$(1)=LEFT$(D$(1),L-1)+"00"+RIGHT$(D$(1),LEN(D$(1))-(L+1)) 620 D$(2)=LEFT$(D$(2),M-1)+"00"+RIGHT$(D$(2),LEN(D$(2))-(M+1)) 640 NEXT M 650 NEXT L 660 FOR L=1 TO LEN(D$(1)) STEP 2 670 FOR M=1 TO LEN(D$(2)) STEP 2 680 IF MID$(D$(1),L,2)<>"00" AND MID$(D$(2),M,2)<>"00" THEN 690 ELSE 750 690 OB=OB+1 700 PRINT# 3, MID$(D$(1),L,2) 710 PRINT# 3, MID$(D$(2),M,2) 720 D$(1)=LEFT$(D$(1),L-1)+"00"+RIGHT$(D$(1),LEN(D$(1))-(L+1)) 730 D$(2)=LEFT$(D$(2),M-1)+"00"+RIGHT$(D$(2),LEN(D$(2))-(M+1)) 750 NEXT M 760 NEXT L 770 RETURN 780 REM ****************WAYOUT************************* 790 CLOSE:KILL O3$ 800 BEEP:BEEP:BEEP 810 MENU 820 REM ***************MESSAGE************************** 830 PRINT:PRINT:PRINT "THIS PROGRAM COMPUTES THE RELIABILITY" 840 PRINT "INDEX KAPPA. IT REQUIRES THAT BOTH" 850 PRINT "DATA FILES GENERATED BY 'RELY.BA' ARE" 860 PRINT "PRESENT IN THIS MACHINE'S MEMORY." 870 PRINT: PRINT " ...PRESS ANY KEY TO CONTINUE" 880 IF INKEY$="" THEN 880 885 CLS 890 RETURN 895 REM ***************KAPPAGEN************************* 900 DIM Y(100):S=OB:R=2: DIM X(S,R) ,B(R) 940 FOR I=1 TO R: B(I)=I: NEXT I 980 OPEN O3$ FOR INPUT AS #1 990 FOR L=1 TO S 1000 FOR I=1 TO R 1010 INPUT #1,X(L,I) 1020 NEXT I 1030 NEXT L 1050 B(1)=1: B(2)=2 1060 PRINT "PLEASE WAIT..." 1070 C=0: M1=0 1090 FOR L=1 TO S 1100 FOR M=1 TO R 1110 I=B(M) 1120 IF X(L,I)<>0 THEN 1140 1130 M1=M1+1 1140 IF X(L,I)=0 THEN 1240 1150 C=C+1 1160 Y(C)=X(L,I) 1170 IF C=1 THEN 1240 1180 C1=C-1 1190 FOR K=1 TO C1 1200 IF Y(C1+1)=Y(K) THEN 1220 1210 IF Y(C1+1)<>Y(K) THEN 1230 1220 C=C-1 1230 NEXT K 1240 NEXT M 1250 NEXT L 1260 R1=0 1270 FOR L=1 TO S 1280 R2=0 1290 FOR M=1 TO R 1300 I=B(M) 1310 IF X(L,I)=0 THEN 1330 1320 R2=R2+1 1330 NEXT M 1340 R2=R2*(R2-1) 1350 R1=R1+R2 1360 NEXT L 1370 P0=0 1380 FOR K=1 TO C 1390 S6=0 1400 FOR L=1 TO S 1410 S5=0 1420 FOR M=1 TO R 1430 I=B(M) 1440 IF X(L,I)<>Y(K) THEN 1460 1450 S5=S5+1 1460 NEXT M 1470 S6=S6+(S5*(S5-1)) 1480 NEXT L 1490 P0=P0+S6/R1 1500 NEXT K 1510 P1=0 1520 FOR M=1 TO R-1 1530 I=B(M) 1540 FOR N=M+1 TO R 1550 J=B(N) 1560 S1=0 1570 S2=0 1580 S3=0 1590 S4=0 1600 FOR L=1 TO S 1610 IF X(L,I)=0 THEN 1630 1620 S1=S1+1 1630 IF X(L,J)=0 THEN 1650 1640 S2=S2+1 1650 NEXT L 1660 FOR K=1 TO C 1670 W=0 1680 Z=0 1690 FOR L=1 TO S 1700 IF X(L,I)<>Y(K) THEN 1720 1710 W=W+1 1720 IF X(L,J)<>Y(K) THEN 1740 1730 Z=Z+1 1740 NEXT L 1750 S3=S3+(W*Z) 1760 NEXT K 1770 S3=S3/(S1*S2) 1780 S4=0 1790 FOR L=1 TO S 1800 IF (X(L,I)*X(L,J))=0 THEN 1820 1810 S4=S4+1 1820 NEXT L 1830 P1=P1+(S4*S3/(R1/2)) 1840 NEXT N 1850 NEXT M 1860 CLS 1870 B0=INT(1000*P0+.5)/1000 1880 PRINT "OBSERVED AGREEMENT = ";B0 1890 B1=INT(1000*P1+.5)/1000 1900 PRINT "CHANCE OF AGREEMENT = ";B1 1910 K1=(P0-P1)/(1-P1) 1920 K2=INT(1000*K1+.5)/1000 1930 PRINT "KAPPA = ";K2;" "; 1940 IF M1<>0 THEN 2080 1950 Z1=K1/SQR(P1/(S*(1-P1))) 1960 Z3=INT(1000*Z1+.5)/1000 1970 PRINT "STD. Z-VALUE = ";Z3 1980 Z1=SQR((P0*(1-P0))/(S*(1-P1)*(1-P1))) 1990 Z3=INT(1000*Z1+.5)/1000 2000 PRINT "STD. ERROR = ";Z3 2010 Z2=K1+1.96*Z1 2020 Z2=INT(1000*Z2+.5)/1000 2030 PRINT "95% CONFIDENCE INTERVAL OF KAPPA:" 2040 PRINT "UPPER BOUND = ";Z2 2050 Z2=K1-1.96*Z1 2060 Z2=INT(1000*Z2+.5)/1000 2070 PRINT "LOWER BOUND = ";Z2 2080 IF INKEY$="" THEN 2080 2090 RETURN