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.
Definitions of constants and functions for working with missing values.
Bin a sample into equally spaced intervals to form a histogram.
Compute the mode of the random variable provided taking into account missing data.
Operatore di valore assoluto di un intervallo.
Compute a set of percentiles for a random variable.
Module for basic statistical computations taking into account missing data.
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...
Compute the linear correlation coefficient between the two random variables provided, taking into account missing data.