I created 24 synthetic acoustic data sets. Together the data sets represent all possible combinations of 4 varying parameters:
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: —
Short, high harmonicity, low background noise:
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
The next steps for the supervised RF test are:
For the unsupervised RF test the next steps are:
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!!
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.
# 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).
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
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!