Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Статистический анализ данных в геологии. Кн. 2

.pdf
Скачиваний:
14
Добавлен:
12.11.2023
Размер:
19.38 Mб
Скачать

ПРИЛОЖЕНИЕ

Тексты программ СТАТ.

Настоящее приложение написано на основе приложения к книге Дж. С. Дэвиса «Как пользоваться программой СТАТ», написанного Стивом Йи, в котором приведены рекомендации об использовании дискеты. На дискете помещены основные стати­ стические процедуры, изложенные в книге. Дискета предназна­ чена для персонального компьютера типа IBM-PC, использую­ щего операционную систему PC-DOS или MS-DOS (версия 2.10) с памятью 128 К-

В настоящем приложении приведены тексты соответствую­ щих программ, написанные на языке ФОРТРАН.

СТАТ — комплекс программ на языке ФОРТРАН, содержа­ щих ряд статистических процедур, описанных в этой книге. В него вошли программы ввода данных, элементарной статисти­ ки и основных операций над матрицами. Поиск необходимого пользователю модуля происходит путем указания соответствую­ щего режима.

Ввод данных.

Вводимые данные имеют структуру матрицы. Ниже приво­ дится таблица, характеризующая эту структуру в различных случаях:

Д а н н ы е С т р о к и С т о л б ц ы

О д н о м ер н ы е

Мн о го м ер н ы е

Од н ом ер н ы й

ный ан ал и з Д в у м е р н ы й ный ан ал и з

да н н ы е д а н н ы е

ди с п е р с и о н ­

ди с п е р с и о н ­

На б л ю д е н и я

На б л ю д е н и я

Копии

Уровни

I

З н а ч ен и я к оо р д и н а т

Пр о б ы

Пр о б ы

Элементарная статистика.

Если пользователь выбрал режим элементарной статистики, то можно воспользоваться следующими пятью программами: 1— одномерные статистики и одновыборочнып /-критерий; 2 — дву­ мерные статистики; 3 — линейная регрессия; 4 — одномерный дисперсионный анализ; 5 — двумерный дисперсионный анализ.

3 7 2

В следующей таблице приведены соответствующие ограни чения на размеры матрицы данных:

Метод

О д н о м е р н ы й Д в у м е р н ы й

Л и н е й н а я регрессия О д н ом ер н ы й д и с п е р с и о н ­ ный анализ

Д в у м е р н ы й д и с п е р с и о н ­ ный ан али з

Число строк

Число столбцов

Максимум

Минимум

Максимум

Минимум

Н е т

2

1

1

Н е т

2

2

2

100

2

2

2

Н е т

2

100

2

Н е т

2

100

2

П р и м е ч а н и е . .Максимальные размеры матрицы ограничены только размерами

опера г и б л о й памяти используемого компьютера.

Результаты вычислений по каждой программе по желанию заносятся в файл, который может быть использован в даль­ нейшем.

Ниже приводится перечень различных статистик, которые вычисляются в программе:

М е т о д

О д н о м е р н ы е статистики

Д в у м е р н ы е статистики

Л и н ей н ая р егресси я

О д н ом ер н ы й A N O V A Д в у м е р н ы й A N O V A

 

 

 

 

С татистики

 

 

 

 

 

Ч и с л о

н а б л ю д ен и й ,

су м м а ,

с у м м а

к в ад р ат ов,

д и с ­

персия,

с т а н д а р т н о е

откл он ени е,

ср ед н ее,

о д н о в ы ­

бор о ч н а я /-стати сти к а

 

 

 

 

 

 

 

 

Ч и с л о

н а б л ю д е н н ы х

пар, су м м а

п оп ар н ы х

п р о и з ­

веден и й , к оэф ф и ц и ен т

ковари аци и ,

к оэф ф и ц и ен т

к орреляци и , м е ж д у

X!

и Х г\

сум м а,

с у м м а

к в а д ­

ратов,

ср ед н ее,

д и с п ер си я ,

с т а н д а р т н о е

о т к л о н е ­

ние

 

 

 

 

 

 

 

 

 

 

 

 

 

Ч лен ы

н ор м ал ь н ого

ур а в н ен и я

(т. е. число

н а б л ю ­

д е н н ы х

пар; су м м а

к вад р ат ов

Я -ов и

У -ов ),

с у м ­

ма

У-ов,

с у м м а

п оп ар н ы х

п р о и зв ед ен и й

X

и У,

оц ен е н н ы е

п ар ам етр ы

у р авн ен и я

регрессии,

о с т а т ­

ки,

о б щ а я

сум м а

к вад р ат ов,

к ачество

ап п р о к си м а ­

ции

и к оэф ф и ц и ен т к ор реляци и

 

 

 

 

 

 

Т абл и ц а

о д н о м е р н о г о A N O V A

Т а б л и ц а

д в у м е р н о г о A N O V A

Матричные операции.

В разделе матричные операции содержатся следующие мо­ дули:

1 — напечатать матрицу;

2 — сложить две матрицы;

3 — перемножить две матрицы;

4 — умножить матрицу на постоянную;

5 — обратить матрицу;

6 — транспонировать матрицу;

373

7 — вычислить собственные векторы

и собственные значения

симметрической матрицы.

 

 

Для всех программ максимальный размер матрицы 50x50.

Программа 7 записывает вектор

собственных значений

в

убывающем порядке в некоторый файл.

на

Апробацию программ СТАТ рекомендуется проводить

примерах данных, помещенных в тексте. Там же можно найти и результаты вычислений и их интерпретацию.

Дополнительные программы.

Террастат — обширная библиотека программ почти всех про­

цедур, описанных в этой книге. Они

реализованы

на

дискете

для персонального компьютера типа IBM—-PC и совместимых

с ним, использующих операционные системы

PC — DOS или

MS — DOS. Информацию о Террастат, включая цены и совме­

стимость компьютера, можно получить по адресу.

 

 

 

TERRASCIENCE, INC.

 

 

 

 

755 West Tenth

Avenue

 

 

 

Желающие

Lakewood,

Colorado

USA 80215.

 

книге

получить

копию дискеты СТАТ к

Дж. С. Дэвиса с инструкцией и комментариями

на

русском

языке могут

обратиться

по адресу:

ВИЭМС,

123853

Москва,

 

3-я Магистральная ул., 38.

 

 

 

О О О

MAIN PROGRAM FOR STAT STATISTICAL PACKAGE

О О О

PROGRAM STAT

COMMON /IOLUN/ I5.I6.J5.J6.J4 COMMON /IONAT/ KORF.MON.IPRT.KORFO CHARACTER'1 KORF.MON.IPRT.KORFO

COMMON /МАТО/ AM(50.50),BM(50.50),CM(50,50) 1 NRA.NCA.NRB.NCB.NRC.NCC.CONST

COMMON /NAMEF/ FNAME CHARACTER'16 FNAME

COMMON ЯЬС/ SV(20),LZ,LU,Z11,Z22,D11,D22,NZZ,NSP,DPC,DFT,UPA

... INITIALIZE CONSOLE I/O UNITS

О О О

...

!5 = 0

I6 = 0

INITIALIZE FILE I/O UNITS

J4 = 0

J5 = 0

J6 = 0

О О О

... SET MAX MATRIX DIMENSIONS

MAXR = 50

 

 

 

 

 

 

 

MAXC = 50

 

 

 

 

 

 

 

CALL INITTS

 

 

 

 

 

 

CALL INOUT(O.IOP,KOP,MAXR,MAXC)

 

 

CALL CLEAR

 

 

 

 

 

 

WRITE(I6,200)

 

 

 

 

 

 

200

FORMAT^ STAT

-

Version 1.5*.

 

 

1 /’ (C) Copyright by Terrasciences Inc. 1987’,

1//’

This program presents a sample of the

statistical,

1

/’

procedures described

in "Statistics

and

Data Analysis’.

1 /’ in Geology" by John

C. Davis’)

 

 

C

 

 

 

 

 

 

 

 

 

111 CALL DATE

 

 

 

 

 

 

101 CALL CLEAR

 

 

 

 

 

 

WRITE(I6,204)

 

 

 

 

 

 

204

FORMAT(///,15X,’*

*

*

Main Menu

of Options * * ",

1 //’

Option

Description’,

 

 

 

1//,4X,’1

Data Entry’,

 

 

 

1

/,4X,’2

Elementary

Statistics',

 

 

1

/,4X,'3

 

Matrix

Operations',

 

 

1 /,4X,’0 — Exit Stat

and

Return to DOS',

 

1//,'

Enter

Option Number:

')

 

 

375

108 CALL IREAD(1,КОР,105,105,105) IF(LZ.LT.O) CALL CLEAR IF(LZ.LT.O) GOTO 111 IF(KOP.EQ.O) STOP

IF(K0P.EQ.1) CALL DATENT

IF(KOP EQ.1 .AND.LZ.LT.O) CALL CLSALL IF(KOP.EQ.I) GOTO 101

IF(K0P.EQ.2) GOTO 100

IF(K0P.EQ.3) GOTO 102 CALL INVLID(1)

GOTO 108

 

 

 

100 CALL CLEAR

 

WRITE(I6,201)

Elementary Statistics Menu oi Option

201

F0RMAT(/,15X,''

1//' Option

Description’,

1 //,4X,’1

---

Univariate Statistics and One-Sample t Test1

1

/,4X,'2

--

Bivariate Statistics',

1

'’,4X,’3

---

Linear

Regression',

1 /,4X,’4 — One Way Analysis of Variance'

1 /,4X,’5

--

Two WSy Analysis of Variance'

1

/,4X,’0 --- Return

to Main Menu of Options’

1/Л’ Enter Option Number: ’) 109 CALL !READ(1,!OP,105,105.105)

IF(LZ.LT.O) GOTO 101 IF(IOP.LT.0.OR.!OP.GT.5) CALL INVLID(I) iVIOP.LT.O.OR.IOP.GT.5) GOTO 109 IF(IOP.EQ.O) GOTO 101

GOTO 1C3

 

 

 

 

102 CALL CLEAR

 

 

WRiTE(l6,202)

Matrix Operations Menu of Oprions

202

FORMAT(/,15X,’*

M f Option

 

Description’,

1//,4X,’1

 

Print

Out

a Matrix',

1

/,4X,'2

Add Two

Matrices’,

1

/,4X,'3

---

Multiply Two Matrices',

1

/,4X,'4

---

Multiply a Matrix by a Constant',

1 /,4X,’5

---

Invert a Matrix’,

1

/,4X,’6 —

Transpose

a Matrix’.

i

/,4X,’7 —

Compute Eigenvalues and Vectors of Symmetr

1

/,4X,'0

Return

to Main Menu of Options',

1//' Enter Option Number: ’)

110 CALL IREAD(1,IOP,105,105,105) IF(LZ.LT.O) GOTO 101 ]F(IOP.LT.O.OR.IOP.GT.7) CALL INVLID(1) 1F(IOP.LT.O.OR.IOP.GT.7) GOTO 110 IF(IOP.EQ.O) GOTO 101

C

C... DETERMINE JOPTYPE OF INPUT/OUTPUT

3

с

103 IF(K0P.EQ.2) JOP = 1 IF(KOP.EQ.3.AND.IOP.EQ.1) JOP = 1 IF(KOP.EQ.3.AND.(IOP.GE.2.AND.!GP.LE,3)) JOP = 2

IF(KOP.EQ.3.AND.IOP.GE.4) JOP = 3 CALL INOUT(JOP,IOP,KOP,MAXR,MAXC) IF(LZ.GE.O) GOTO 112

300 CALL CLSALL IF(KOP.EQ.2) GOTO 100 GOTO 102

112 IF(JOP.EQ.-l) GOTO 95 IF(KOP.EQ.3) GOTO 104 CALL CLEAR

GOTO (1,10,15,20,25),IOP

104 GOTO (30,35,40.45,50,55,60),IOP

1 CALL VARIAN GOTO 99

10 CALLBICOR GOTO 99

15 CALL UNFIT GOTO S’l

20 CALL OJEOV GOTO 99

25 CALL TWOVA GOTO 99

30 CALL PRINTM(1,CM,NRC,NCC,MAXR,MAXC) CALL PAUSE(2;

GOTO 99

35 CALL ADDM(AM,BM,CM,NRA,NCA,MAXR,MAXC) GOTO 97

40 CALL MMULTtAM.BM.CM.NRA.NCA.NCB.MAXR.MAXC.MAXR.MAXC.MAXR.MAX

GOTO 97

45 CALL CMULT(AM,CONST,CM,NRA,NCA,MAXR,MAXC)

GOTO 97

50 CALL MINV(AM,CM,NRA,MAXR,DET) GOTO 97

55 CALL MTRANS(AM,CM,NRA NCA,MAXR,MAXC)

GOTO .-'7

60 C U L EIGENJ(AM,CM,NRA,MAXR)

ООО

...

CLOSE I/O FILES

97 IF(LZ.GE.O) GOTO 113 GOTO 300

113 IF(KORFO.EQ.’K’) GOTO 94 REWIND J4

CALL ICLOSE(J4,1)

94 IF(JOP,EQ,3) GOTO 98

99 IF(LZ.GE.O) GOTO 114

,GOTO 300

114 IF(KORF.EQ.'K’) GOTO 98 REWIND J5

CALL 1CL0SE(J5,1)

98 IF(KOP.EQ.3.AND.IOP.EQ.5.AND.DET.EQ.O.O) GOTO 102 IF(KOP.EQ.3.AND.IOP.GE.2) GOTO 96

IF(IPRT.EQ.’N’) GOTO 95 REWIND J6

CALL ICLOSE(J6,1)

95 lF(KOP.EQ.2) GOTO 100 GOTO 102

О О О

... WRITE OUT SOLUTION MATRICES

_

О О О

96 WRITE(I6,205)

205 FORMAT(/' Enter name of file to store matrix C: ’) CALL FNRDIN(FNAME)

IF(LZ.LT.O) GOTO 300 CALL F!LOPN(1,20,FNAME)

tWRITE(20,*) NRC.NCC DO 105 1=1 ,NRC

WRITE(20,') (CM(I,J),J=1,NCC)

105 CONTINUE ' REWIND 20

CALL ICLOSE(20,1) WRITE(I6,207) FNAME

207 FORMATS Matrix C is now stored in file ',A16) IF(IOP.LE.6) CALL PAUSE(2)

IF(SOP.LE.6) GOTO 102

... STORE EIGENVALUES

FNAME = 'EIGENVAL.DAT

CALL FILOPN(1,20,FNAME) WRITE(20,*) NRA.1

DO 107 1=1 ,NRA WRITE(20,*) AM(l,i)

107 CONTINUE

REWIND 20

CALL ICLOSE(20,1) WRITE(I6,208) FNAME

208 FORMAT(/' The eigenvalues are now stored as a column vector’, 1’ in file ’,A16)

CALL PAUSE(2) GOTO 102 END

78

с

сDETERMINE I/O DATA OPTIONS

С

СJOP = 0 : INITIALIZE I/O OPTIONS

с1 I/OOPTIONS FOR ELEMENTARY STAT AND PRINTM

C

2 . INPUT TWO MATRICES

C

3 • INPUT ONE MATRIX

C

 

C * * *

.................................................................................. .................................................................

SUBROUTINE INOUT(JOP,lOP.KOP,MAXR,MAXC) COMMON /IOLUN/ I5.I6.J5.J6.J4

COMMON /IONAT/ KORF.MON.IPRT.KORFO CHARACTER-1 KORF.MON.IPRT.KORFO

COMMON /МАТО/ AM(50,50),BM(50,50).CM(50,50), 1 NRA.NCA.NRB.NCB.NRC.NCC.CONST

COMMON /NAMEF/ FNAME CHARACTER*!6 FNAME

COMMON /DATIM/ IDATE(8),ITIME(5' CHARACTERS IDATE.ITIME

COMMON ЯLCI SV(20),LZ,LU,Z11,Z22,D11,D22,NZZ,NSP,DPC,DFT.JPA COMMON /ASC/ IALPHA(96'

CHARACTER*1 (ALPHA

C

 

 

IF(JOP.EQ.O) GOTO 99

. .

 

GOTO (102,400,400), JOP

О О

... INITIALIZE I/O OPTIONS

 

О

 

 

О О О

99 KORF = ’F’ KORF0 = ’F’ MON = ’Y’ IPRT = ’N’ RETURN

... ASK USER FOR NATURE OF OUTPUT

-

102 CALL CLEAR WR!TE(I6,225)

225 FORMATS SELECT OUTPUT OPTIONS'.//)

100 WRITE(I6,200)

200 FORMAT(/' Oulpul results to monitor Y or N: ’) CALL AREAD(2,J05,K05,I05,I05)

IF(LZ.LT.O) RETURN

MON = IALPHA(J05) IF(MON.EQ.’y') MON = 'Y' IF(MON.EQ.’n') MON = ’N’

IF(MON.NE.’Y'.AND.MON.NE.’N') CALL INVLID(1) IF(MON.NE.’Y’.AND.MON.NE.'N') GOTO 100

379

101 WRITE(16,201)

201 FORMAT^ Output results to file • Y or N: ') CALL AREAD(2,J05,K05,I05,I05)

IF(LZ.LT.O) RETURN

IPRT - IALPHA(J05)

IF(IPRT.EQ.y) IPRT - 'Y

IF(IPRT.EQ.’n’) IPRT - ’N' IF(IPRT.NE.,Y’.AND.IPRT.NE 'N') CALL INVLID(1) IF(IPRT.NE.’Y'.AND.IPRT.NE.'N) GOTO 101

C

C... OPEN I/O FILES IF THOSE OPTIONS ARE REQUESTED C

CALL CLEAR WRITE(I6,226)

226 FORMATS SELECT INPUT/OUTPUT FILES'//) IF(KORF.EQ.'F') GOTO 301

J5 ■=0

GOTO 350

C

C... OPEN INPUT DATA RLE C

301 J5 = 2 WRITE(!6,202)

202FORMAT^ Enter name ot input data file: ') CALL FNRDIN(FNAME)

IF(LZ.LT.O) RETURN

CALL FILOPN(0,J5,FNAME) IF(LZ.LT.O) RETURN

C

C... OPEN OUTPUT FILE C

350 IF(IPRT.EQ.'N') RETURN

J6 = 3 WRITE(I6,205)

2Э5 FORMATfO Enter name of output file: ’) CALL FNRDIN(FNAME)

IF(LZ.LTO) RETURN

CALL FlLOPN(1,J6,FNAME)

C

C WRITE OUT DATE AND TIME C

WRITE(J6,224) IDATE ITIME

224 FORMAT(//,

STAT Program Output'

VI, Date

,0A1/ Time 5A1,///)

RETURN

 

C

C INPUTONE OR TWO MATRICES

380

400 I0PM1 = юр ■1 CALL CLEAR

GOTO (41,42,43,44,45,46), ЮРМ1 41 WRITE(I6,206)

206 FORMATS MATRIX ADDITION: A + В = C',//) GOTO 50

42 WRITERS,207)

207 FORMATS MATRIX MULTIPLICATION: A * В = C',//) GOTO 50

43 WRITERS,208)

208 FORMAT^ MULTIPLY MATRIX BY CONSTANT: CONST * A - C'JI) WRITE{I6,204)

204 FORMAT(/’ Enter value for constant CONST: ') CALL RREAD(1,CONST,A05.A05.A05) IF(LZ.LT.O) RETURN

GOTO 50

44 WRITE(I6,209)

209 FORMAT^ MATRIX INVERSION: Inverse of A = C'/.’) GOTO 50

45 WRITERS,210)

210 FORMATS MATRIX TRANSPOSITION: Transpose of A = C\ll) t' GOTO 50

46 VVF.;TE(i6,211)

211 FORMAT(/' EIGENVALUES AND EIGENVECTORS'//,

1/' Compute eigenvalues and vectors of symmetric matrix A', 1//' Eigenvalues (in descending order) are stored in file’,

1' EIGENVAL.DAT',

1//' Corresponding eigenvectors are represented by columns of’, 1’ matrix C)

ООО

READ IN MATRIX A

50 KORF'O = ’F’ IF(KORFO.EQ.'K') J4 = 0 IF(KORFO.EQ.’K') GOTO 51 J4 = 1

WRiTE(l6,214)

214 FORMAT(/' Enter name of file containing matrix A: ’) CAL^FNRDIN(FNAME)

IF(LZ.LT.O) RETURN

CALL FILOPN(0,J4,FNAME) IF(LZ.LT.O) RETURN

51 IF(KORFO.EQ.'K’) WRITE(16,215)

215 FORMAT(/' Enter number of rows and columns for matrix A: ’) READ(J4,*,END=500) NRA.NCA

IF(NRA.LE.MAXR.AND.NCA.LE.MAXC) GOTO 52 57 WRITE(I6,216) MAXR.MAXC

216 FORMAT(/’ Number of rows, columns exceed max of ‘,13,’ by ’,13)