Synthetic data

I created 24 synthetic acoustic data sets. Together the data sets represent all possible combinations of 4 varying parameters:

  1. Duration: short (average duration 150 ms) & long (300 ms)
  2. Harmonicity: low & high harmonic content
  3. Background noise: low (20 dB signal-to-noise ratio) & and high background noise (2 dB signal-to-noise ratio)
  4. Repertoire size: 20, 50 & 100 elements

This are all possible combinations in a data frame:

sim.scenarios <- expand.grid(duration = c("short.dur", "long.dur"), 
            harmonicity = c("low.harm", "high.harm"), 
            bgn = c("low.bgn", "high.bgn"),
            repertoire = c(20, 50, 100))

# add scenario label
sim.scenarios$scenario <- apply(sim.scenarios, 1, paste, collapse = "_")

sim.scenarios
duration harmonicity bgn repertoire scenario
1 short.dur low.harm low.bgn 20 short.dur_low.harm_low.bgn_ 20
2 long.dur low.harm low.bgn 20 long.dur_low.harm_low.bgn_ 20
3 short.dur high.harm low.bgn 20 short.dur_high.harm_low.bgn_ 20
4 long.dur high.harm low.bgn 20 long.dur_high.harm_low.bgn_ 20
5 short.dur low.harm high.bgn 20 short.dur_low.harm_high.bgn_ 20
6 long.dur low.harm high.bgn 20 long.dur_low.harm_high.bgn_ 20
7 short.dur high.harm high.bgn 20 short.dur_high.harm_high.bgn_ 20
8 long.dur high.harm high.bgn 20 long.dur_high.harm_high.bgn_ 20
9 short.dur low.harm low.bgn 50 short.dur_low.harm_low.bgn_ 50
10 long.dur low.harm low.bgn 50 long.dur_low.harm_low.bgn_ 50
11 short.dur high.harm low.bgn 50 short.dur_high.harm_low.bgn_ 50
12 long.dur high.harm low.bgn 50 long.dur_high.harm_low.bgn_ 50
13 short.dur low.harm high.bgn 50 short.dur_low.harm_high.bgn_ 50
14 long.dur low.harm high.bgn 50 long.dur_low.harm_high.bgn_ 50
15 short.dur high.harm high.bgn 50 short.dur_high.harm_high.bgn_ 50
16 long.dur high.harm high.bgn 50 long.dur_high.harm_high.bgn_ 50
17 short.dur low.harm low.bgn 100 short.dur_low.harm_low.bgn_100
18 long.dur low.harm low.bgn 100 long.dur_low.harm_low.bgn_100
19 short.dur high.harm low.bgn 100 short.dur_high.harm_low.bgn_100
20 long.dur high.harm low.bgn 100 long.dur_high.harm_low.bgn_100
21 short.dur low.harm high.bgn 100 short.dur_low.harm_high.bgn_100
22 long.dur low.harm high.bgn 100 long.dur_low.harm_high.bgn_100
23 short.dur high.harm high.bgn 100 short.dur_high.harm_high.bgn_100
24 long.dur high.harm high.bgn 100 long.dur_high.harm_high.bgn_100

Each row is a single data set. The last column has the synthetic data set ID.

These are some examples of how the synthetic data looks like. Elements belonging to the same element type are all in the same row:

Long, low harmonicity, low background noise: catalog

Short, high harmonicity, low background noise: catalog

Notice that element type replicates are similar but not exactly the same, which is more realistic.


The list with all 24 data sets is found in the dropbox folder I shared (or found here) and can be read as follows:

sim.ests <- readRDS("Simulated extended selection tables n24.RDS") 

I’ts pretty big! so it can take some time to read it.

Each element of the list is an extended selection table ready to be analyzed:

sim.ests[[1]]
## object of class 'extended_selection_table' 
##  contains a selection table data frame with 200 rows and 9 columns: 
##   sound.files selec channel start       end elm.type bottom.freq top.freq
## 1         1-1     1       1   0.1 0.2526757        1      3.1895  13.1895
## 2         1-2     1       1   0.1 0.2549433        1      3.3365  13.3365
## 3         1-3     1       1   0.1 0.2499320        1      3.1895  13.1895
## 4         1-4     1       1   0.1 0.2552608        1      3.3365  13.3365
## 5         1-5     1       1   0.1 0.2537642        1      2.8955  12.8955
## 6         1-6     1       1   0.1 0.2553515        1      3.3365  13.3365
##        SNR
## 1 19.97621
## 2 20.00891
## 3 20.03948
## 4 19.96617
## 5 20.01352
## 6 20.01463
## ... and 194 more rows 
## 200 wave objects (as attributes): 
## [1] "1-1" "1-2" "1-3" "1-4" "1-5" "1-6"
## ... and 194 more 
## and a data frame (check.results) generated by checkres() (as attribute) 
## the selection table was created by song (see 'class_extended_selection_table')

The name of the each element of the list has the parameters used for synthetic data set:

names(sim.ests)[1]
## [1] "short.dur_low.harm_low.bgn_20"

The “elm.type” column contains the element type labels:

unique(sim.ests[[1]]$elm.type)
##  [1] 1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20
## Levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Each element is repeated 10 times:

table(sim.ests[[1]]$elm.type)
## 
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 
## 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

Random Forest

The next steps for the supervised RF test are:

  1. measure a bunch of things on them
  2. use supervised Random Forest to predict element types
  3. Measure classification accuracy

For the unsupervised RF test the next steps are:

  1. measure a bunch of things on them
  2. use unsupervised Random Forest to summmarize meaninful variation
  3. classify sound in element types
  4. Measure classification accuracy

Supervised Random Forest

The idea would be to build and R code that will do that sequence of steps on a single data set and then run that code over each data set using a loop (ideally a lapply loop).

These is an example on how to do the measuring in a single data set:

library(warbleR)

# set warbleR settings
warbleR_options(wl = 300, parallel = parallel::detectCores() - 1, ovlp = 90, pb = FALSE, bp = "frange", dens = 0.7, img = FALSE)

 # read first data
Y <- sim.ests[[1]]

# measure spectral parameters
sp <- specan(Y)

# cross-correlation
xc <- xcorr(Y)

# MDS cross-correlation
xc.mds <- cmdscale(1 - xc, k = 5)

#rename columns
colnames(xc.mds) <- paste0("xc.dim.", 1:5)

# DTW distance
dtw.dist <- dfDTW(Y)

# MDS on DTW distance
dtw.mds <- cmdscale(dtw.dist, k = 5)

#rename columns
colnames(dtw.mds) <- paste0("dtw.dim.", 1:5)

# cepstral coefficients
cps.cf <- mfcc_stats(Y)

# put data together
prms <- data.frame(Y[, c("sound.files", "elm.type")], sp[, -c(1:4)], xc.mds, dtw.mds, cps.cf[, -c(1:2)])

This are all the parameters:

names(prms)
##   [1] "sound.files" "elm.type"    "duration"    "meanfreq"    "sd"         
##   [6] "freq.median" "freq.Q25"    "freq.Q75"    "freq.IQR"    "time.median"
##  [11] "time.Q25"    "time.Q75"    "time.IQR"    "skew"        "kurt"       
##  [16] "sp.ent"      "time.ent"    "entropy"     "sfm"         "meandom"    
##  [21] "mindom"      "maxdom"      "dfrange"     "modindx"     "startdom"   
##  [26] "enddom"      "dfslope"     "meanpeakf"   "xc.dim.1"    "xc.dim.2"   
##  [31] "xc.dim.3"    "xc.dim.4"    "xc.dim.5"    "dtw.dim.1"   "dtw.dim.2"  
##  [36] "dtw.dim.3"   "dtw.dim.4"   "dtw.dim.5"   "min.cc1"     "min.cc2"    
##  [41] "min.cc3"     "min.cc4"     "min.cc5"     "min.cc6"     "min.cc7"    
##  [46] "min.cc8"     "min.cc9"     "min.cc10"    "min.cc11"    "min.cc12"   
##  [51] "min.cc13"    "min.cc14"    "min.cc15"    "min.cc16"    "min.cc17"   
##  [56] "min.cc18"    "min.cc19"    "min.cc20"    "min.cc21"    "min.cc22"   
##  [61] "min.cc23"    "min.cc24"    "min.cc25"    "max.cc1"     "max.cc2"    
##  [66] "max.cc3"     "max.cc4"     "max.cc5"     "max.cc6"     "max.cc7"    
##  [71] "max.cc8"     "max.cc9"     "max.cc10"    "max.cc11"    "max.cc12"   
##  [76] "max.cc13"    "max.cc14"    "max.cc15"    "max.cc16"    "max.cc17"   
##  [81] "max.cc18"    "max.cc19"    "max.cc20"    "max.cc21"    "max.cc22"   
##  [86] "max.cc23"    "max.cc24"    "max.cc25"    "median.cc1"  "median.cc2" 
##  [91] "median.cc3"  "median.cc4"  "median.cc5"  "median.cc6"  "median.cc7" 
##  [96] "median.cc8"  "median.cc9"  "median.cc10" "median.cc11" "median.cc12"
## [101] "median.cc13" "median.cc14" "median.cc15" "median.cc16" "median.cc17"
## [106] "median.cc18" "median.cc19" "median.cc20" "median.cc21" "median.cc22"
## [111] "median.cc23" "median.cc24" "median.cc25" "mean.cc1"    "mean.cc2"   
## [116] "mean.cc3"    "mean.cc4"    "mean.cc5"    "mean.cc6"    "mean.cc7"   
## [121] "mean.cc8"    "mean.cc9"    "mean.cc10"   "mean.cc11"   "mean.cc12"  
## [126] "mean.cc13"   "mean.cc14"   "mean.cc15"   "mean.cc16"   "mean.cc17"  
## [131] "mean.cc18"   "mean.cc19"   "mean.cc20"   "mean.cc21"   "mean.cc22"  
## [136] "mean.cc23"   "mean.cc24"   "mean.cc25"   "var.cc1"     "var.cc2"    
## [141] "var.cc3"     "var.cc4"     "var.cc5"     "var.cc6"     "var.cc7"    
## [146] "var.cc8"     "var.cc9"     "var.cc10"    "var.cc11"    "var.cc12"   
## [151] "var.cc13"    "var.cc14"    "var.cc15"    "var.cc16"    "var.cc17"   
## [156] "var.cc18"    "var.cc19"    "var.cc20"    "var.cc21"    "var.cc22"   
## [161] "var.cc23"    "var.cc24"    "var.cc25"    "skew.cc1"    "skew.cc2"   
## [166] "skew.cc3"    "skew.cc4"    "skew.cc5"    "skew.cc6"    "skew.cc7"   
## [171] "skew.cc8"    "skew.cc9"    "skew.cc10"   "skew.cc11"   "skew.cc12"  
## [176] "skew.cc13"   "skew.cc14"   "skew.cc15"   "skew.cc16"   "skew.cc17"  
## [181] "skew.cc18"   "skew.cc19"   "skew.cc20"   "skew.cc21"   "skew.cc22"  
## [186] "skew.cc23"   "skew.cc24"   "skew.cc25"   "kurt.cc1"    "kurt.cc2"   
## [191] "kurt.cc3"    "kurt.cc4"    "kurt.cc5"    "kurt.cc6"    "kurt.cc7"   
## [196] "kurt.cc8"    "kurt.cc9"    "kurt.cc10"   "kurt.cc11"   "kurt.cc12"  
## [201] "kurt.cc13"   "kurt.cc14"   "kurt.cc15"   "kurt.cc16"   "kurt.cc17"  
## [206] "kurt.cc18"   "kurt.cc19"   "kurt.cc20"   "kurt.cc21"   "kurt.cc22"  
## [211] "kurt.cc23"   "kurt.cc24"   "kurt.cc25"   "mean.d1.cc"  "var.d1.cc"  
## [216] "mean.d2.cc"  "var.d2.cc"

215 parameters (excluding the first 2 info columns)

Now prepare data (with caret package) and run random forest:

# remove colinear, boxcox transform and scale/center
preprms <- preProcess(prms[, -c(1:2)], method=c("center", "scale", "BoxCox", "corr"))

trns.prms <- predict(preprms, prms)

# make classification column a factor
trns.prms$elm.type <- as.factor(trns.prms$elm.type)

# remove sound files column
trns.prms$sound.files <- NULL

# set seed to get always the same results
set.seed(27)

# run RF (must be 1000 trees)
rf.elm.type <- randomForest(elm.type ~ ., data = trns.prms, ntree = 1000)

# mean out-of-bag accuracy
m.oob.err <- mean(rf.elm.type$err.rate[,1])

m.oob.err
## [1] 0.03126458
# get accuracy
cm <- confusionMatrix(predict(rf.elm.type, trns.prms), trns.prms$elm.type) 

cm$overall
##       Accuracy          Kappa  AccuracyLower  AccuracyUpper   AccuracyNull 
##   1.000000e+00   1.000000e+00   9.817247e-01   1.000000e+00   5.000000e-02 
## AccuracyPValue  McnemarPValue 
##  6.223015e-261            NaN
# importance
imp <- importance(rf.elm.type)

Error rate of 3%. Pretty good!!


Classifying all data sets

The same routine has to be run over each data set. Ideally each iteration will return the out-of-bag error, the variable importance and the name of the data set (as a single list).

If all of the above worked fine then we can put it together in a couple of functions so we can apply the same functions on each data set using a loop.

I think the best approach is to have 1 function to measure all paramaters and another one to process the data and run the Random forest classification.

Function 1 (measuring)

# takes 1 argument, Y = selection table
meas_FUN <- function(Y) {
  
# measure spectral parameters
sp <- specan(Y)

# cross-correlation
xc <- xcorr(Y)

# MDS cross-correlation
xc.mds <- cmdscale(1 - xc, k = 5)

#rename columns
colnames(xc.mds) <- paste0("xc.dim.", 1:5)

# DTW distance
dtw.dist <- dfDTW(Y)

# MDS on DTW distance
dtw.mds <- cmdscale(dtw.dist, k = 5)

#rename columns
colnames(dtw.mds) <- paste0("dtw.dim.", 1:5)

# cepstral coefficients
cps.cf <- mfcc_stats(Y)

# put data together
prms <- data.frame(Y[, c("sound.files", "elm.type")], sp[, -c(1:4)], xc.mds, dtw.mds, cps.cf[, -c(1:2)])

return(prms)  
}

Testing it over a a single data set:

warbleR_options(wl = 300, parallel = parallel::detectCores() - 1, ovlp = 90, pb = FALSE, bp = "frange", dens = 0.7, img = FALSE)

out <- meas_FUN(Y = sim.ests[[1]][1:20, ])

Using a for loop to run over several data sets (in this example 2 data sets):

warbleR_options(wl = 300, parallel = parallel::detectCores() - 1, ovlp = 90, pb = FALSE, bp = "frange", dens = 0.7, img = FALSE)

params <- list()

for(i in sim.ests[1:2])
params[[length(params) + 1]] <- meas_FUN(Y = i[1:20, ])

The following chunk is almost the same but with a progress bar and a try() function to catch any error without stoping the loop:

params <- list()

prbr <- txtProgressBar(min = 0, max = 2, initial = 0)

for(i in sim.ests[1:2])
{
out <- try(meas_FUN(Y = i[1:20, ]), silent = TRUE)

params[[length(params) + 1]] <- out

setTxtProgressBar(prbr, length(params))
}
## ===========================================================================
# only 1 and 2 because we used a subsample
names(params) <- names(sim.ests)[1:2]

# look at results
lapply(params, head, 2)
## $short.dur_low.harm_low.bgn_20
##   sound.files elm.type duration meanfreq     sd freq.median freq.Q25
## 1         1-1        1  0.15268   5.6108 1.4865      5.3913   4.7688
## 2         1-2        1  0.15494   5.5622 1.5254      5.2539   4.6858
##   freq.Q75 freq.IQR time.median time.Q25 time.Q75 time.IQR   skew   kurt
## 1   5.6076  0.83879      0.0685 0.042813 0.094188 0.051375 3.9348 20.057
## 2   5.7316  1.04584      0.0657 0.034278 0.094265 0.059987 2.7799 11.858
##    sp.ent time.ent entropy     sfm meandom mindom maxdom dfrange modindx
## 1 0.81539  0.89036 0.72599 0.23894  5.3618 3.6015 11.098   7.497  2.9804
## 2 0.84539  0.88961 0.75207 0.25185  5.4496 4.3365 11.393   7.056  3.1667
##   startdom enddom dfslope meanpeakf xc.dim.1   xc.dim.2  xc.dim.3
## 1  11.0985 4.9245 -40.439    5.5125 -0.30586 -0.0034746  0.025757
## 2   7.4235 7.4235   0.000    5.3655 -0.28553  0.0370665 -0.015561
##    xc.dim.4  xc.dim.5 dtw.dim.1 dtw.dim.2 dtw.dim.3 dtw.dim.4 dtw.dim.5
## 1 -0.067074  0.024308  -10.8897    2.9403   6.79466 -0.070095    2.8260
## 2  0.056299 -0.022998   -6.1219    4.5384   0.54794 -2.252115   -4.9641
##   min.cc1  min.cc2 min.cc3 min.cc4 min.cc5 min.cc6 min.cc7 min.cc8 min.cc9
## 1 -46.930 -11.1688 -18.326 -22.182 -7.1307 -15.249 -20.189 -19.573 -23.414
## 2 -50.826  -9.1959 -19.598 -20.884 -6.5251 -15.927 -21.087 -20.976 -22.514
##   min.cc10 min.cc11 min.cc12 min.cc13 min.cc14 min.cc15 min.cc16 min.cc17
## 1  -21.079  -22.108  -15.467  -22.824  -18.721  -24.197  -19.631  -18.779
## 2  -18.675  -21.757  -19.025  -17.845  -15.889  -17.445  -20.024  -14.058
##   min.cc18 min.cc19 min.cc20 min.cc21 min.cc22 min.cc23 min.cc24 min.cc25
## 1  -12.612  -15.874  -15.773  -9.8643  -13.321 -10.5763  -8.8769  -10.326
## 2  -15.050  -14.054  -17.094 -13.6048  -13.518  -9.2958 -10.9443  -10.906
##   max.cc1  max.cc2  max.cc3 max.cc4 max.cc5 max.cc6 max.cc7 max.cc8
## 1 -34.477 -0.95515 -0.61363  7.3263  24.323  23.496  23.237  13.943
## 2 -38.741  1.87727 -0.38425  9.8296  21.761  21.505  21.132  13.635
##   max.cc9 max.cc10 max.cc11 max.cc12 max.cc13 max.cc14 max.cc15 max.cc16
## 1  22.583   16.156   21.753   20.840   25.117   16.655   18.533   14.701
## 2  21.020   22.715   16.851   18.396   19.561   19.038   14.739   18.878
##   max.cc17 max.cc18 max.cc19 max.cc20 max.cc21 max.cc22 max.cc23 max.cc24
## 1   18.980   18.492   14.502   10.858   14.667   16.765   10.290   13.660
## 2   20.024   15.483   25.419   15.656   14.565   10.769   11.851   11.908
##   max.cc25 median.cc1 median.cc2 median.cc3 median.cc4 median.cc5
## 1   13.546    -40.499    -5.4181    -9.9656    -5.3375     11.112
## 2   11.681    -45.435    -5.1972    -9.1688    -4.7583     10.477
##   median.cc6 median.cc7 median.cc8 median.cc9 median.cc10 median.cc11
## 1     5.7527    -7.3456    -7.0017   -0.95546      5.0815     -1.9473
## 2     5.2733    -8.7634    -6.3007    3.55936      7.4506     -1.4906
##   median.cc12 median.cc13 median.cc14 median.cc15 median.cc16 median.cc17
## 1      -2.406      4.8134     0.62071     -3.4158    -0.34459     3.61041
## 2      -4.038      2.1376     2.22532     -3.3490    -3.18840     0.39595
##   median.cc18 median.cc19 median.cc20 median.cc21 median.cc22 median.cc23
## 1     -1.1117     -1.7904     0.45877     1.95177    -0.13051    -1.21702
## 2      1.1014     -0.9336    -1.24643    -0.51072    -0.40971     0.02411
##   median.cc24 median.cc25 mean.cc1 mean.cc2 mean.cc3 mean.cc4 mean.cc5
## 1     0.62224      1.1445  -40.571  -5.5187  -9.7731  -5.8566   9.2676
## 2     0.24360      0.8566  -45.272  -4.7711  -9.2918  -5.2648   9.2128
##   mean.cc6 mean.cc7 mean.cc8 mean.cc9 mean.cc10 mean.cc11 mean.cc12
## 1   5.4930  -5.0842  -6.5622   2.2354    3.5708   -1.1514   -1.7397
## 2   4.8287  -5.7010  -5.4674   2.8528    4.3836   -2.2485   -3.1505
##   mean.cc13 mean.cc14 mean.cc15 mean.cc16 mean.cc17 mean.cc18 mean.cc19
## 1    3.2169    1.0451   -3.2660   -1.3083   2.62832  -0.10732  -1.81823
## 2    1.3566    1.7852   -2.5013   -2.5558   0.11988   0.84863  -0.22043
##   mean.cc20 mean.cc21 mean.cc22 mean.cc23 mean.cc24 mean.cc25 var.cc1
## 1   0.58992   1.99521  -0.16320  -1.06415   0.77856   1.17630  7.1997
## 2  -0.45467  -0.04601  -0.62056   0.11781   0.50321   0.47443  8.0136
##   var.cc2 var.cc3 var.cc4 var.cc5 var.cc6 var.cc7 var.cc8 var.cc9 var.cc10
## 1  4.4618  16.482  40.231  61.527  78.436  128.90  59.977  171.01   60.167
## 2  5.4602  14.225  57.520  46.558  75.452  120.47  65.468  131.10   91.927
##   var.cc11 var.cc12 var.cc13 var.cc14 var.cc15 var.cc16 var.cc17 var.cc18
## 1   147.97   55.054  116.827   47.971   91.865   58.580   59.381   47.095
## 2   122.20   79.116   91.478   66.377   55.763   66.657   54.580   41.849
##   var.cc19 var.cc20 var.cc21 var.cc22 var.cc23 var.cc24 var.cc25 skew.cc1
## 1   40.496   32.100    28.81   27.420   15.088   16.532   18.736 -0.12841
## 2   57.612   33.823    25.88   23.937   18.939   21.835   20.064  0.31641
##   skew.cc2  skew.cc3 skew.cc4 skew.cc5 skew.cc6 skew.cc7 skew.cc8
## 1 -0.31747  0.077770 -0.15143 -0.45718 -0.22891  0.58026  0.39452
## 2  0.90891 -0.062949 -0.20615 -0.51067 -0.17739  0.66626  0.42737
##    skew.cc9 skew.cc10 skew.cc11 skew.cc12 skew.cc13 skew.cc14 skew.cc15
## 1 -0.019713   -0.7428  0.131076   0.71915  -0.36009 -0.181122   0.25658
## 2 -0.349930   -0.7098 -0.017163   0.47159  -0.20993 -0.048903   0.41545
##   skew.cc16 skew.cc17 skew.cc18 skew.cc19 skew.cc20 skew.cc21 skew.cc22
## 1  -0.20042  -0.56719  0.500014  0.088118  -0.33183   0.12365  0.209044
## 2   0.36559   0.16915 -0.085773  0.936254   0.16992   0.23863 -0.022825
##   skew.cc23 skew.cc24 skew.cc25 kurt.cc1 kurt.cc2 kurt.cc3 kurt.cc4
## 1  0.141144  0.356192 -0.041577   2.2324   2.8687   2.5312   2.5685
## 2  0.091365  0.041284  0.035167   2.3814   3.4630   2.7690   2.4952
##   kurt.cc5 kurt.cc6 kurt.cc7 kurt.cc8 kurt.cc9 kurt.cc10 kurt.cc11
## 1   2.3035   2.5392   2.2487   2.2763   1.6195    2.9701    1.6835
## 2   2.4372   2.2570   2.4508   2.3092   1.9576    2.3871    1.5671
##   kurt.cc12 kurt.cc13 kurt.cc14 kurt.cc15 kurt.cc16 kurt.cc17 kurt.cc18
## 1    3.2871    2.4005    3.3365    2.2854    2.4122    2.7963    2.3511
## 2    2.2905    1.8679    2.1822    2.5124    2.5654    2.4874    2.3793
##   kurt.cc19 kurt.cc20 kurt.cc21 kurt.cc22 kurt.cc23 kurt.cc24 kurt.cc25
## 1    2.1332    2.5282    2.4990    3.1955    2.6622    3.2586    3.2285
## 2    4.3833    2.7622    2.6471    2.5652    2.4465    2.7148    2.7185
##   mean.d1.cc var.d1.cc mean.d2.cc var.d2.cc
## 1     72.412     21678    -931.89   2201738
## 2     78.470     26417   -1045.60   2787547
## 
## $long.dur_low.harm_low.bgn_20
##   sound.files elm.type duration meanfreq     sd freq.median freq.Q25
## 1         1-1        1  0.32485   6.8066 1.5781      7.3228   5.2169
## 2         1-2        1  0.32485   6.5194 1.5128      6.8310   5.1438
##   freq.Q75 freq.IQR time.median time.Q25 time.Q75 time.IQR   skew    kurt
## 1   7.6276   2.4107     0.16835  0.11131  0.25670  0.14539 3.4764 16.0862
## 2   7.5576   2.4138     0.18366  0.10574  0.26018  0.15444 2.1840  7.6322
##    sp.ent time.ent entropy     sfm meandom mindom maxdom dfrange modindx
## 1 0.86130  0.88046 0.75834 0.27955  6.1379 3.0135 9.9225   6.909  5.1064
## 2 0.87954  0.88059 0.77452 0.27275  6.2341 3.7485 8.0115   4.263  3.6897
##   startdom enddom dfslope meanpeakf xc.dim.1 xc.dim.2 xc.dim.3 xc.dim.4
## 1   3.0135 7.4235 13.5754    4.6305 -0.35498 -0.20270 -0.15872 0.032917
## 2   4.3365 7.4235  9.5028    7.5705 -0.32985 -0.11607  0.16816 0.079479
##   xc.dim.5 dtw.dim.1 dtw.dim.2 dtw.dim.3 dtw.dim.4  dtw.dim.5 min.cc1
## 1 -0.14544   -11.563  5.054386   -8.9436   14.0548 -0.0042972 -56.381
## 2  0.22577    -3.804 -0.079803   -1.1089    6.0733 -1.6689193 -57.020
##   min.cc2  min.cc3 min.cc4 min.cc5 min.cc6 min.cc7 min.cc8 min.cc9
## 1 -17.450  -7.9344 -2.8564 -15.241 -19.088 -17.100 -13.795 -23.295
## 2 -17.592 -12.7596 -3.2414 -14.972 -14.308 -15.075 -18.118 -22.617
##   min.cc10 min.cc11 min.cc12 min.cc13 min.cc14 min.cc15 min.cc16 min.cc17
## 1  -23.301  -15.998  -22.650  -16.194  -16.358  -22.723  -18.146  -23.109
## 2  -21.221  -19.574  -23.561  -20.815  -20.631  -22.094  -20.963  -21.847
##   min.cc18 min.cc19 min.cc20 min.cc21 min.cc22 min.cc23 min.cc24 min.cc25
## 1  -22.678  -17.483  -18.862  -18.853  -24.119  -18.411  -18.828  -20.189
## 2  -21.229  -19.712  -23.889  -16.275  -20.885  -18.066  -16.635  -20.254
##   max.cc1 max.cc2 max.cc3 max.cc4 max.cc5 max.cc6 max.cc7 max.cc8 max.cc9
## 1 -43.886 -9.1734  5.2753  12.143  5.6857  17.918  16.502  19.097  16.353
## 2 -44.674 -9.6548  4.4528  13.768  5.5702  15.493  18.892  21.436  18.104
##   max.cc10 max.cc11 max.cc12 max.cc13 max.cc14 max.cc15 max.cc16 max.cc17
## 1   20.668   21.942   17.004    24.01   18.829   19.662   23.964   22.743
## 2   25.675   22.396   24.923    20.19   22.077   21.314   21.076   24.134
##   max.cc18 max.cc19 max.cc20 max.cc21 max.cc22 max.cc23 max.cc24 max.cc25
## 1   21.444   18.926   21.070   30.552   14.574   20.971   15.968   15.698
## 2   21.076   19.105   21.347   24.535   20.580   19.793   19.169   13.168
##   median.cc1 median.cc2 median.cc3 median.cc4 median.cc5 median.cc6
## 1    -51.280    -12.797    -1.2061     3.3186    -5.4479    0.55928
## 2    -52.842    -12.745    -0.9537     4.4685    -6.9632    1.84769
##   median.cc7 median.cc8 median.cc9 median.cc10 median.cc11 median.cc12
## 1     3.4443    -2.2998     3.4655    -0.23625     2.74160     -3.4314
## 2     2.7281    -4.0565     3.8601    -0.80711     0.11834     -2.5624
##   median.cc13 median.cc14 median.cc15 median.cc16 median.cc17 median.cc18
## 1    0.037272    2.261626     -5.4009      1.3071     -2.9568     0.91373
## 2    0.805947   -0.019919     -4.1015      2.2223     -3.3683     2.26002
##   median.cc19 median.cc20 median.cc21 median.cc22 median.cc23 median.cc24
## 1 -0.00025852     -2.1612      2.3880     -3.2140      1.4371      2.5464
## 2 -0.40888785     -2.7388      5.5233     -3.0993      1.0675      2.4816
##   median.cc25 mean.cc1 mean.cc2 mean.cc3 mean.cc4 mean.cc5 mean.cc6
## 1     -4.6480  -50.408  -12.827  -1.2033   3.7838  -5.0887   0.3082
## 2     -3.7687  -52.235  -12.794  -1.2715   4.7093  -6.2590   1.4086
##   mean.cc7 mean.cc8   mean.cc9 mean.cc10 mean.cc11 mean.cc12 mean.cc13
## 1   2.1313  -1.3542 -0.0076662  -0.75857   2.07130   -3.2891    0.8982
## 2   1.8991  -2.9402  1.1887020  -0.97935   0.35537   -1.6381    1.1937
##   mean.cc14 mean.cc15 mean.cc16 mean.cc17 mean.cc18 mean.cc19 mean.cc20
## 1   1.57554   -2.9644    2.2091   -1.8467  -0.15248   0.64491   -1.4252
## 2  -0.47839   -2.1812    1.9961   -2.2589   0.85712  -0.43052   -2.6410
##   mean.cc21 mean.cc22 mean.cc23 mean.cc24 mean.cc25 var.cc1 var.cc2
## 1    2.8409   -2.5887     1.279    1.9726   -3.5972  8.5421  2.0794
## 2    4.5269   -2.9778     1.070    2.1466   -3.5198  6.4983  1.5130
##   var.cc3 var.cc4 var.cc5 var.cc6 var.cc7 var.cc8 var.cc9 var.cc10
## 1  9.3588  12.231  14.934  73.018  68.585  45.938  98.846   100.79
## 2 10.6973  14.567  12.097  60.388  75.201  68.775  97.841   134.65
##   var.cc11 var.cc12 var.cc13 var.cc14 var.cc15 var.cc16 var.cc17 var.cc18
## 1   99.614   94.441   59.099   62.571   112.00   74.171  104.047   79.618
## 2  139.214  126.436   62.174   85.614   106.73  105.664   94.751   80.089
##   var.cc19 var.cc20 var.cc21 var.cc22 var.cc23 var.cc24 var.cc25 skew.cc1
## 1   71.164   77.653   71.483   46.136   48.038    36.05   42.763  0.48209
## 2   79.987   81.296   69.133   58.105   40.848    38.21   38.463  0.94528
##   skew.cc2  skew.cc3 skew.cc4 skew.cc5 skew.cc6  skew.cc7 skew.cc8
## 1 -0.19143 -0.022192  0.36174 0.055675 -0.19695 -0.321600  0.52485
## 2 -0.38268 -0.531716  0.24757 0.840242 -0.19775 -0.021468  0.52990
##   skew.cc9 skew.cc10 skew.cc11 skew.cc12 skew.cc13  skew.cc14 skew.cc15
## 1 -0.71640 -0.012524  0.105002 -0.030037   0.20610 -0.1411343   0.17909
## 2 -0.83892  0.252938  0.077452  0.114550   0.12148  0.0014322   0.18307
##   skew.cc16 skew.cc17 skew.cc18 skew.cc19 skew.cc20 skew.cc21 skew.cc22
## 1   0.17538   0.43312  -0.24663 0.1637153   0.32746  0.011783 -0.045274
## 2  -0.17601   0.39502  -0.29964 0.0025707   0.18506 -0.272762  0.166202
##   skew.cc23 skew.cc24 skew.cc25 kurt.cc1 kurt.cc2 kurt.cc3 kurt.cc4
## 1 -0.098557 -0.352920   0.39075   2.2252   2.8345   1.8870   2.2031
## 2 -0.117080 -0.042432   0.24073   3.3455   3.5907   2.6779   2.3194
##   kurt.cc5 kurt.cc6 kurt.cc7 kurt.cc8 kurt.cc9 kurt.cc10 kurt.cc11
## 1   2.9249   1.9963   1.8779   2.8621   2.2927    1.9895    1.7415
## 2   3.6378   1.9184   1.7481   2.5406   2.6962    1.8136    1.5259
##   kurt.cc12 kurt.cc13 kurt.cc14 kurt.cc15 kurt.cc16 kurt.cc17 kurt.cc18
## 1    1.8081    2.3698    1.9052    1.6138    2.2367    2.4748    2.2415
## 2    1.7745    2.3090    2.0025    1.7631    1.8566    2.4244    2.2133
##   kurt.cc19 kurt.cc20 kurt.cc21 kurt.cc22 kurt.cc23 kurt.cc24 kurt.cc25
## 1    2.0234    2.4271    2.4884    2.9444    2.9004    3.1103    2.7348
## 2    2.0191    2.2737    2.4101    2.6818    2.9724    2.6331    2.6822
##   mean.d1.cc var.d1.cc mean.d2.cc var.d2.cc
## 1     79.901     31985    -1233.6   2973458
## 2     82.749     33997    -1278.1   3175735

So now we can run it over all data sets (removing the “[1:2]” in the for loop and the “[1:20, ]” in i).

Function 2 (process + classifying)

Again, is mostly copying the processing and random forest code from above. It also has an extra code at the end adding the names of the data sets to the list (to keep track of which is which). The function will return a list containing the data set name, the OOB error and the variable importance:

# takes 1 argument, Y = selection table
prscss.rf_FUN <- function(Y, dataset.name) {
  
  # remove missing levels
  Y <- droplevels(Y)

  # remove colinear, boxcox transform and scale/center
preprms <- preProcess(Y[, -c(1:2)], method=c("center", "scale", "BoxCox", "corr"))

trns.prms <- predict(preprms, Y)

# make classification column a factor
trns.prms$elm.type <- as.factor(trns.prms$elm.type)

# remove sound files column
trns.prms$sound.files <- NULL

# set seed to get always the same results
set.seed(27)

# run RF (must be 1000 trees)
rf.elm.type <- randomForest(elm.type ~ ., data = trns.prms, ntree = 1000)

# mean out-of-bag accuracy
m.oob.err <- mean(rf.elm.type$err.rate[,1])

out <- list(dataset = dataset.name, oob.error = m.oob.err, importance = importance(rf.elm.type))

return(out)
}

Testing it over a a single data set, we need to run the previous function first:

# using 20 rows will test 2 different element types
out <- meas_FUN(Y = sim.ests[[1]][1:20, ])

# test function 2
prscss.rf_FUN(Y = out, dataset.name = "trial")
## $dataset
## [1] "trial"
## 
## $oob.error
## [1] 0.0048352
## 
## $importance
##             MeanDecreaseGini
## duration           0.0035000
## sd                 0.0072418
## freq.Q75           0.0643881
## freq.IQR           0.0099318
## time.median        0.0050727
## time.Q25           0.0000000
## time.Q75           0.1952662
## time.IQR           0.0403000
## kurt               0.0068682
## time.ent           0.0135444
## entropy            0.0032000
## sfm                0.0073500
## meandom            0.4498742
## mindom             0.0231217
## dfrange            0.0013333
## modindx            0.0073833
## startdom           0.0198564
## enddom             0.0054000
## dfslope            0.0120239
## meanpeakf          0.0136929
## xc.dim.2           0.0018000
## xc.dim.3           0.0125778
## xc.dim.4           0.0036571
## xc.dim.5           0.0065713
## dtw.dim.1          0.1339619
## dtw.dim.2          0.2293483
## dtw.dim.3          0.0069371
## dtw.dim.4          0.0078250
## dtw.dim.5          0.0000000
## min.cc2            0.0000000
## min.cc3            0.0033846
## min.cc4            0.0261924
## min.cc6            0.0208312
## min.cc7            0.0390253
## min.cc8            0.0032000
## min.cc9            0.0028571
## min.cc10           0.0032000
## min.cc11           0.0293992
## min.cc12           0.0000000
## min.cc13           0.0194158
## min.cc14           0.0036905
## min.cc15           0.0162890
## min.cc16           0.0238722
## min.cc17           0.0228818
## min.cc18           0.0240798
## min.cc19           0.0051515
## min.cc20           0.0018571
## min.cc21           0.0555038
## min.cc22           0.0329379
## min.cc23           0.0055105
## min.cc24           0.0018182
## min.cc25           0.0017778
## max.cc3            0.0099606
## max.cc4            0.1930172
## max.cc5            0.0097000
## max.cc6            0.0051000
## max.cc7            0.1430205
## max.cc8            0.0110000
## max.cc9            0.0459396
## max.cc10           0.0601078
## max.cc11           0.0145778
## max.cc12           0.0018333
## max.cc13           0.0213000
## max.cc14           0.0000000
## max.cc15           0.0173394
## max.cc16           0.0276321
## max.cc17           0.0287572
## max.cc18           0.0170781
## max.cc19           0.0035960
## max.cc20           0.0052667
## max.cc21           0.0018000
## max.cc22           0.0081818
## max.cc23           0.0101500
## max.cc24           0.0129538
## max.cc25           0.0018462
## median.cc2         0.0191152
## median.cc3         0.0110154
## median.cc6         0.0127111
## median.cc7         0.1242580
## median.cc9         0.0000000
## median.cc10        0.2073728
## median.cc11        0.0049935
## median.cc13        0.0512977
## median.cc14        0.1557457
## median.cc16        0.0291363
## median.cc17        0.0696071
## median.cc18        0.0053556
## median.cc19        0.0195333
## median.cc20        0.0152846
## median.cc21        0.0084364
## median.cc22        0.0018571
## median.cc23        0.0108890
## median.cc24        0.0104831
## median.cc25        0.0238367
## mean.cc6           0.0079492
## mean.cc8           0.1862898
## mean.cc9           0.0207532
## mean.cc10          0.0147140
## mean.cc12          0.0175974
## mean.cc15          0.0660779
## mean.cc16          0.1711937
## var.cc1            0.0738097
## var.cc2            0.1152942
## var.cc3            0.0032000
## var.cc4            0.0053571
## var.cc5            0.4669631
## var.cc6            0.0567946
## var.cc7            0.0018000
## var.cc8            0.0018750
## var.cc9            0.3684022
## var.cc10           0.0558163
## var.cc11           0.1063468
## var.cc12           0.0929611
## var.cc13           0.4410254
## var.cc14           0.0063515
## var.cc15           0.0128626
## var.cc16           0.0081818
## var.cc17           0.0076190
## var.cc18           0.0408452
## var.cc19           0.0547435
## var.cc20           0.0000000
## var.cc21           0.0065846
## var.cc22           0.0050500
## var.cc23           0.0085253
## var.cc24           0.0000000
## var.cc25           0.0116147
## skew.cc1           0.0017143
## skew.cc2           0.0839925
## skew.cc3           0.0463520
## skew.cc4           0.0083000
## skew.cc5           0.1780213
## skew.cc6           0.0050505
## skew.cc7           0.0000000
## skew.cc8           0.5132032
## skew.cc9           0.0018182
## skew.cc10          0.4904929
## skew.cc11          0.0116962
## skew.cc12          0.3950705
## skew.cc13          0.0097278
## skew.cc14          0.1153650
## skew.cc15          0.0227444
## skew.cc16          0.0098596
## skew.cc17          0.0109182
## skew.cc18          0.0018182
## skew.cc19          0.0034286
## skew.cc20          0.0113727
## skew.cc21          0.0036667
## skew.cc22          0.0032000
## skew.cc23          0.0000000
## skew.cc24          0.0018000
## skew.cc25          0.0000000
## kurt.cc1           0.0036239
## kurt.cc2           0.0183455
## kurt.cc3           0.0917573
## kurt.cc4           0.4537068
## kurt.cc5           0.0167227
## kurt.cc6           0.0437772
## kurt.cc7           0.0018667
## kurt.cc9           0.2683432
## kurt.cc10          0.1590102
## kurt.cc11          0.5385775
## kurt.cc12          0.0873427
## kurt.cc13          0.3039507
## kurt.cc14          0.0000000
## kurt.cc15          0.0223154
## kurt.cc16          0.0108650
## kurt.cc17          0.0000000
## kurt.cc18          0.0149924
## kurt.cc19          0.0092848
## kurt.cc20          0.0018182
## kurt.cc21          0.0036643
## kurt.cc22          0.0030000
## kurt.cc23          0.0096794
## kurt.cc24          0.0018182
## kurt.cc25          0.0066182
## var.d1.cc          0.0034182

Now let’s put the second function in a loop. We will use the result of the example loop for function 1 (‘params’) as input:

clssf.res <- list()

prbr <- txtProgressBar(min = 0, max = length(params), initial = 0)

for(i in 1:length(params))
{
out <- try(prscss.rf_FUN(Y = params[[i]], dataset.name = names(params)[i]), silent = TRUE)

clssf.res[[length(clssf.res) + 1]] <- out

setTxtProgressBar(prbr, i)
}
## ===========================================================================
#print results
clssf.res
## [[1]]
## [[1]]$dataset
## [1] "short.dur_low.harm_low.bgn_20"
## 
## [[1]]$oob.error
## [1] 0.0032352
## 
## [[1]]$importance
##             MeanDecreaseGini
## duration           0.0000000
## sd                 0.0036905
## freq.Q75           0.0571546
## freq.IQR           0.0000000
## time.median        0.0032727
## time.Q25           0.0260891
## time.Q75           0.2136741
## time.IQR           0.0602152
## kurt               0.0104515
## time.ent           0.0167897
## entropy            0.0051846
## sfm                0.0035238
## meandom            0.5221654
## mindom             0.0358998
## dfrange            0.0000000
## modindx            0.0335242
## startdom           0.0121420
## enddom             0.0054000
## dfslope            0.0133033
## meanpeakf          0.0619412
## xc.dim.2           0.0102000
## xc.dim.3           0.0081111
## xc.dim.4           0.0032000
## xc.dim.5           0.0017500
## dtw.dim.1          0.1546563
## dtw.dim.2          0.2165210
## dtw.dim.3          0.0050909
## dtw.dim.4          0.0476250
## dtw.dim.5          0.0121833
## min.cc2            0.0277270
## min.cc3            0.0069528
## min.cc4            0.0114182
## min.cc6            0.0485721
## min.cc7            0.0096714
## min.cc8            0.0018182
## min.cc9            0.0017778
## min.cc10           0.0105500
## min.cc11           0.0126300
## min.cc12           0.0000000
## min.cc13           0.0000000
## min.cc14           0.0144840
## min.cc15           0.0090890
## min.cc16           0.0018462
## min.cc17           0.0098667
## min.cc18           0.0240038
## min.cc19           0.0051515
## min.cc20           0.0036967
## min.cc21           0.0290461
## min.cc22           0.0265084
## min.cc23           0.0018462
## min.cc24           0.0000000
## min.cc25           0.0018000
## max.cc3            0.0036167
## max.cc4            0.2449707
## max.cc5            0.0000000
## max.cc6            0.0051000
## max.cc7            0.1095523
## max.cc8            0.0067333
## max.cc9            0.0658430
## max.cc10           0.0391455
## max.cc11           0.0190775
## max.cc12           0.0122314
## max.cc13           0.0401993
## max.cc14           0.0017778
## max.cc15           0.0033846
## max.cc16           0.0239376
## max.cc17           0.0313580
## max.cc18           0.0117930
## max.cc19           0.0033846
## max.cc20           0.0000000
## max.cc21           0.0033846
## max.cc22           0.0247818
## max.cc23           0.0066500
## max.cc24           0.0050000
## max.cc25           0.0064000
## median.cc2         0.0247283
## median.cc3         0.0348427
## median.cc6         0.0132450
## median.cc7         0.0771552
## median.cc9         0.0054421
## median.cc10        0.2338964
## median.cc11        0.0000000
## median.cc13        0.0725786
## median.cc14        0.1963409
## median.cc16        0.0361327
## median.cc17        0.0498952
## median.cc18        0.0105743
## median.cc19        0.0162383
## median.cc20        0.0000000
## median.cc21        0.0290002
## median.cc22        0.0100390
## median.cc23        0.0253722
## median.cc24        0.0088132
## median.cc25        0.0367374
## mean.cc6           0.0000000
## mean.cc8           0.1713919
## mean.cc9           0.0281032
## mean.cc10          0.0164860
## mean.cc12          0.0207548
## mean.cc15          0.0462515
## mean.cc16          0.1119363
## var.cc1            0.0772162
## var.cc2            0.0989394
## var.cc3            0.0070366
## var.cc4            0.0080667
## var.cc5            0.5606139
## var.cc6            0.0359513
## var.cc7            0.0000000
## var.cc8            0.0232574
## var.cc9            0.3098030
## var.cc10           0.0163556
## var.cc11           0.0806405
## var.cc12           0.1906971
## var.cc13           0.4017240
## var.cc14           0.0017500
## var.cc15           0.0214361
## var.cc16           0.0072111
## var.cc17           0.0035833
## var.cc18           0.0368758
## var.cc19           0.0681672
## var.cc20           0.0094278
## var.cc21           0.0033846
## var.cc22           0.0036000
## var.cc23           0.0110722
## var.cc24           0.0035960
## var.cc25           0.0089641
## skew.cc1           0.0145288
## skew.cc2           0.0538440
## skew.cc3           0.0345512
## skew.cc4           0.0066273
## skew.cc5           0.1237440
## skew.cc6           0.0000000
## skew.cc7           0.0000000
## skew.cc8           0.4418713
## skew.cc9           0.0072977
## skew.cc10          0.5005852
## skew.cc11          0.0211779
## skew.cc12          0.3751117
## skew.cc13          0.0035682
## skew.cc14          0.1101345
## skew.cc15          0.0018182
## skew.cc16          0.0132239
## skew.cc17          0.0164331
## skew.cc18          0.0000000
## skew.cc19          0.0000000
## skew.cc20          0.0000000
## skew.cc21          0.0000000
## skew.cc22          0.0050909
## skew.cc23          0.0046349
## skew.cc24          0.0000000
## skew.cc25          0.0018000
## kurt.cc1           0.0000000
## kurt.cc2           0.0363287
## kurt.cc3           0.0708524
## kurt.cc4           0.4925847
## kurt.cc5           0.0035278
## kurt.cc6           0.0126435
## kurt.cc7           0.0000000
## kurt.cc9           0.3173523
## kurt.cc10          0.1139310
## kurt.cc11          0.4442891
## kurt.cc12          0.0940919
## kurt.cc13          0.3509447
## kurt.cc14          0.0018000
## kurt.cc15          0.0315671
## kurt.cc16          0.0055215
## kurt.cc17          0.0036462
## kurt.cc18          0.0033846
## kurt.cc19          0.0000000
## kurt.cc20          0.0000000
## kurt.cc21          0.0000000
## kurt.cc22          0.0099500
## kurt.cc23          0.0049573
## kurt.cc24          0.0000000
## kurt.cc25          0.0140040
## var.d1.cc          0.0034182
## 
## 
## [[2]]
## [[2]]$dataset
## [1] "long.dur_low.harm_low.bgn_20"
## 
## [[2]]$oob.error
## [1] 0.0024133
## 
## [[2]]$importance
##             MeanDecreaseGini
## duration           0.0000000
## sd                 0.1088747
## freq.median        0.0695115
## freq.Q25           0.2196975
## freq.Q75           0.0036462
## freq.IQR           0.0194459
## time.median        0.1473360
## time.Q25           0.0017500
## time.Q75           0.1943773
## time.IQR           0.0159357
## skew               0.0000000
## time.ent           0.0084273
## entropy            0.0214444
## sfm                0.4233409
## mindom             0.0153998
## dfrange            0.0000000
## modindx            0.0203111
## startdom           0.0064000
## enddom             0.0054333
## dfslope            0.0034286
## meanpeakf          0.0572016
## xc.dim.2           0.0082654
## xc.dim.3           0.0054017
## xc.dim.4           0.0018462
## xc.dim.5           0.0131000
## dtw.dim.1          0.5267894
## dtw.dim.2          0.0103304
## dtw.dim.3          0.0000000
## dtw.dim.4          0.0000000
## dtw.dim.5          0.0000000
## min.cc2            0.0172308
## min.cc3            0.0841372
## min.cc4            0.0035143
## min.cc5            0.0283824
## min.cc6            0.5088094
## min.cc7            0.0018000
## min.cc8            0.0128000
## min.cc9            0.2032372
## min.cc10           0.0018571
## min.cc11           0.0054000
## min.cc12           0.1274709
## min.cc13           0.0442346
## min.cc14           0.0096110
## min.cc15           0.0301000
## min.cc16           0.0562707
## min.cc17           0.0087539
## min.cc18           0.0000000
## min.cc19           0.0017500
## min.cc20           0.0000000
## min.cc21           0.0829500
## min.cc22           0.0122000
## min.cc23           0.0000000
## min.cc24           0.0282889
## min.cc25           0.0064707
## max.cc1            0.0000000
## max.cc3            0.0045176
## max.cc4            0.0018571
## max.cc5            0.3260846
## max.cc6            0.0018182
## max.cc7            0.0017500
## max.cc8            0.2685171
## max.cc9            0.0841962
## max.cc10           0.0000000
## max.cc11           0.0514530
## max.cc12           0.0066273
## max.cc13           0.0066667
## max.cc14           0.0050909
## max.cc15           0.0117182
## max.cc16           0.0195755
## max.cc17           0.0018182
## max.cc18           0.0000000
## max.cc19           0.0144396
## max.cc20           0.0018182
## max.cc21           0.0000000
## max.cc22           0.0385668
## max.cc23           0.0035476
## max.cc24           0.0018571
## max.cc25           0.1549983
## median.cc2         0.0399840
## median.cc3         0.4673742
## median.cc4         0.0051515
## median.cc7         0.0244000
## median.cc14        0.0000000
## median.cc18        0.0139599
## median.cc19        0.0083905
## median.cc21        0.5403654
## median.cc23        0.0000000
## mean.cc2           0.0973674
## mean.cc4           0.0071500
## mean.cc7           0.0037000
## mean.cc14          0.0018333
## mean.cc15          0.1711999
## mean.cc18          0.0030000
## mean.cc19          0.0017778
## mean.cc20          0.1536544
## mean.cc23          0.0101394
## var.cc2            0.0018000
## var.cc4            0.0206143
## var.cc5            0.1066057
## var.cc7            0.0101273
## var.cc8            0.0203929
## var.cc10           0.0000000
## var.cc11           0.0086658
## var.cc12           0.0328909
## var.cc13           0.4328226
## var.cc14           0.0037128
## var.cc15           0.0000000
## var.cc16           0.0100390
## var.cc17           0.0441857
## var.cc18           0.0000000
## var.cc19           0.0017778
## var.cc20           0.0018333
## var.cc21           0.0692629
## var.cc22           0.0132404
## var.cc23           0.2578470
## var.cc24           0.0839068
## var.cc25           0.1964150
## skew.cc1           0.0000000
## skew.cc2           0.0036349
## skew.cc3           0.0018182
## skew.cc4           0.0099000
## skew.cc5           0.0098229
## skew.cc6           0.0036182
## skew.cc7           0.0235587
## skew.cc9           0.0000000
## skew.cc10          0.0915672
## skew.cc11          0.0061714
## skew.cc12          0.1986746
## skew.cc13          0.0855033
## skew.cc14          0.0035143
## skew.cc15          0.1840768
## skew.cc18          0.0182128
## skew.cc19          0.0395019
## skew.cc20          0.3988532
## skew.cc21          0.0467444
## skew.cc22          0.0064000
## skew.cc23          0.0084214
## skew.cc24          0.1156234
## skew.cc25          0.0054239
## kurt.cc1           0.0018182
## kurt.cc2           0.0018182
## kurt.cc3           0.0035556
## kurt.cc4           0.1622455
## kurt.cc5           0.0031111
## kurt.cc6           0.1358214
## kurt.cc7           0.1895633
## kurt.cc8           0.0289000
## kurt.cc9           0.0679799
## kurt.cc10          0.0653087
## kurt.cc11          0.0273167
## kurt.cc12          0.0454595
## kurt.cc13          0.0135071
## kurt.cc14          0.0000000
## kurt.cc15          0.0000000
## kurt.cc16          0.0000000
## kurt.cc17          0.1101064
## kurt.cc18          0.0359057
## kurt.cc19          0.0018182
## kurt.cc20          0.0000000
## kurt.cc21          0.0802169
## kurt.cc22          0.0356500
## kurt.cc23          0.0267000
## kurt.cc24          0.1019068
## kurt.cc25          0.0457794
## mean.d1.cc         0.0000000

Running both functions

Cool! almost there. Now we need to run both loops over every single data set. We should save the results at each step. It would look like this (but the 2nd function may not work if there is any error in the 1st one):

# first loop for measuring things

params <- list()

prbr <- txtProgressBar(min = 0, max = length(sim.ests), initial = 0)

for(i in sim.ests)
{
out <- try(meas_FUN(Y = i), silent = TRUE)

params[[length(params) + 1]] <- out

setTxtProgressBar(prbr, length(params))
}

# only 1 and 2 because we used a subsample
names(params) <- names(sim.ests)

# save first loop results
saveRDS(params, "Acoustic parameters on synthetic data sets.RDS")

# check if any error
any(sapply(params, class) %in% "try-error")

## second loop for RF
clssf.res <- list()

prbr <- txtProgressBar(min = 0, max = length(params), initial = 0)

for(i in 1:length(params))
{
out <- try(prscss.rf_FUN(Y = params[[i]], dataset.name = names(params)[i]), silent = TRUE)

clssf.res[[length(clssf.res) + 1]] <- out

setTxtProgressBar(prbr, i)
}

# check if any error
any(sapply(clssf.res, class) %in% "try-error")


# save second loop results
saveRDS(clssf.res, "Supervised RF classification performance.RDS")

That should be it!