libsim  Versione 7.1.9

◆ densityindex()

subroutine simple_stat::densityindex ( real, dimension(:), intent(out)  di,
real, dimension(:), intent(out)  nlimbins,
integer, dimension(:), intent(out)  occu,
real, dimension(:), intent(in)  rnum,
real, dimension(:), intent(in)  limbins 
)
private
Parametri
[in]rnumdata to analize

Definizione alla linea 1290 del file simple_stat.f90.

1291 real,intent(out) :: di(:)
1292 real,intent(out) :: nlimbins(:)
1293 integer,intent(out) :: occu(:)
1294 REAL, DIMENSION(:), INTENT(IN) :: rnum
1295 real,intent(in) :: limbins(:)
1296 
1297 real :: nnum(size(rnum))
1298 integer :: i,k,sample_count
1299 logical :: sample_mask(size(rnum))
1300 
1301 di=rmiss
1302 occu=imiss
1303 nlimbins=rmiss
1304 
1305 nlimbins(1)=limbins(1) ! compute unique limits
1306 k=1
1307 do i=2,size(limbins)
1308  if (limbins(i) /= limbins(k)) then
1309  k=k+1
1310  nlimbins(k)= limbins(i)
1311  end if
1312 end do
1313 
1314 di=rmiss
1315 if (k == 1) return
1316 
1317 sample_mask = (rnum /= rmiss) ! remove missing values
1318 sample_count = count(sample_mask)
1319 IF (sample_count == 0) RETURN
1320 nnum(1:sample_count) = pack(rnum, mask=sample_mask)
1321 
1322 do 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))
1325 end do
1326 
1327 i=k-1 ! the last if is <=
1328 occu(i)=count(nnum>=nlimbins(i) .and. nnum<=nlimbins(i+1))
1329 di(i) = float(occu(i)) / (nlimbins(i+1) - nlimbins(i))
1330 

Generated with Doxygen.