20 PROGRAM simple_stat_test
25 REAL :: s1(6)=(/4.,6.,7.,8.,9.,11./), s2(6)=(/11.,9.,8.,7.,6.,4./)
26 REAL :: s3(6)=(/rmiss,6.,7.,8.,9.,rmiss/), s4(6)=(/rmiss,9.,rmiss,rmiss,6.,rmiss/)
27 REAL :: val1, val2, valv(5)
28 REAL :: opt1, opt2, opt3, opt4
29 INTEGER,
ALLOCATABLE :: bin(:)
30 REAL,
PARAMETER :: epsy=1.0e-20
32 print*,
'=== Testing simple_stat module ===' 34 print*,
'Checking average' 37 print*,
'averages: ',val1,val2
38 IF (abs(val1-7.5) > epsy)
CALL exit(1)
39 IF (abs(val2-7.5) > epsy)
CALL exit(1)
41 print*,
'Checking average with missing data' 44 print*,
'averages: ',val1,val2
45 IF (abs(val1-7.5) > epsy)
CALL exit(1)
46 IF (abs(val2-7.5) > epsy)
CALL exit(1)
48 print*,
'Checking variances' 51 print*,
'variances: ',val1,val2
52 print*,
'averages: ',opt1,opt2
54 print*,
'Checking variances with missing data' 57 print*,
'variances: ',val1,val2
58 print*,
'averages: ',opt1,opt2
60 print*,
'Checking linear correlation' 62 print*,
'correlation: ',val1
63 print*,
'averages and variances: ', opt1, opt2, opt3, opt4
64 IF (abs(val1+1.) > epsy)
CALL exit(1)
66 print*,
'Checking linear correlation with missing data' 68 print*,
'correlation: ',val1
69 print*,
'averages and variances: ', opt1, opt2, opt3, opt4
70 IF (abs(val1+1.) > epsy)
CALL exit(1)
72 print*,
'Checking linear regression' 74 print*,
'regression coefficients: ',val1,val2
75 IF (abs(val1-15.) > epsy .OR. abs(val2+1.) > epsy)
CALL exit(1)
77 print*,
'Checking linear regression with missing data' 79 print*,
'regression coefficients: ',val1,val2
80 IF (abs(val1-15.) > epsy .OR. abs(val2+1.) > epsy)
CALL exit(1)
82 print*,
'Checking percentiles' 84 print*,
'percentiles: ',valv
85 IF (abs(valv(1)-s2(6)) > epsy)
CALL exit(1)
86 IF (abs(valv(5)-s2(1)) > epsy)
CALL exit(1)
88 print*,
'Checking percentiles with missing data' 90 print*,
'percentiles: ',valv
91 IF (abs(valv(1)-s3(2)) > epsy)
CALL exit(1)
92 IF (abs(valv(5)-s3(5)) > epsy)
CALL exit(1)
94 print*,
'Checking binning' 96 print*,
'bin population: ',bin
97 IF (any(bin /= (/1,2,2,1/)))
CALL exit(1)
99 print*,
'bin population: ',bin
100 IF (any(bin /= (/1,2,2,1/)))
CALL exit(1)
102 print*,
'Checking binning with missing data' 103 CALL stat_bin(s3, bin, 4, 3.5, 11.5)
104 print*,
'bin population: ',bin
105 IF (any(bin /= (/0,2,2,0/)))
CALL exit(1)
106 CALL stat_bin(s4, bin, 4, 3.5, 11.5)
107 print*,
'bin population: ',bin
108 IF (any(bin /= (/0,1,1,0/)))
CALL exit(1)
110 print*,
'Checking mode' 113 IF (abs(val1-6.5) > epsy)
CALL exit(1)
116 IF (abs(val1-6.5) > epsy)
CALL exit(1)
118 print*,
'Checking mode with missing data' 121 IF (abs(val1-6.5) > epsy)
CALL exit(1)
124 IF (abs(val1-6.5) > epsy)
CALL exit(1)
126 END PROGRAM simple_stat_test
Compute the average of the random variable provided, taking into account missing data.
Bin a sample into equally spaced intervals to form a histogram.
Compute the mode of the random variable provided taking into account missing data.
Compute a set of percentiles for a random variable.
Compute the linear regression coefficients between the two random variables provided, taking into account missing data.
Compute the variance of the random variable provided, taking into account missing data...
Definitions of constants and functions for working with missing values.
Module for basic statistical computations taking into account missing data.
Compute the linear correlation coefficient between the two random variables provided, taking into account missing data.