libsim Versione 7.2.6
|
◆ densityindex()
Definizione alla linea 1290 del file simple_stat.f90. 1291real,intent(out) :: di(:)
1292real,intent(out) :: nlimbins(:)
1293integer,intent(out) :: occu(:)
1294REAL, DIMENSION(:), INTENT(IN) :: rnum !< data to analize
1295real,intent(in) :: limbins(:)
1296
1297real :: nnum(size(rnum))
1298integer :: i,k,sample_count
1299logical :: sample_mask(size(rnum))
1300
1301di=rmiss
1302occu=imiss
1303nlimbins=rmiss
1304
1305nlimbins(1)=limbins(1) ! compute unique limits
1306k=1
1307do i=2,size(limbins)
1308 if (limbins(i) /= limbins(k)) then
1309 k=k+1
1310 nlimbins(k)= limbins(i)
1311 end if
1312end do
1313
1314di=rmiss
1315if (k == 1) return
1316
1317sample_mask = (rnum /= rmiss) ! remove missing values
1318sample_count = count(sample_mask)
1319IF (sample_count == 0) RETURN
1320nnum(1:sample_count) = pack(rnum, mask=sample_mask)
1321
1322do i=1,k-2 ! compute occorrence and density index
1323 occu(i)=count(nnum>=nlimbins(i) .and. nnum<nlimbins(i+1))
1324 di(i) = float(occu(i)) / (nlimbins(i+1) - nlimbins(i))
1325end do
1326
1327i=k-1 ! the last if is <=
1328occu(i)=count(nnum>=nlimbins(i) .and. nnum<=nlimbins(i+1))
1329di(i) = float(occu(i)) / (nlimbins(i+1) - nlimbins(i))
1330
|