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