2020-01-15 17:05:36 +01:00
|
|
|
#' @export
|
|
|
|
|
#' @title Etsi Paras
|
|
|
|
|
#' @description Search for the best?
|
|
|
|
|
#' @param osuus Percentages?
|
|
|
|
|
#' @param omaFreqs own Freqs?
|
|
|
|
|
#' @param osuusTaulu Percentage table?
|
|
|
|
|
#' @param logml log maximum likelihood
|
2021-11-10 14:02:35 +01:00
|
|
|
etsiParas <- function(osuus, osuusTaulu, omaFreqs, logml) {
|
|
|
|
|
ready <- 0
|
|
|
|
|
while (ready != 1) {
|
|
|
|
|
muutokset <- laskeMuutokset4(osuus, osuusTaulu, omaFreqs, logml)
|
2020-01-15 17:05:36 +01:00
|
|
|
|
2022-02-03 10:43:34 +01:00
|
|
|
# Work around R's base::max() limitation on complex numbers
|
2021-11-10 14:02:35 +01:00
|
|
|
if (any(sapply(muutokset, class) == "complex")) {
|
2022-02-03 10:43:34 +01:00
|
|
|
maxRe <- base::max(Re(as.vector(muutokset)))
|
|
|
|
|
maxIm <- base::max(Im(as.vector(muutokset)))
|
2021-11-10 14:02:35 +01:00
|
|
|
maxMuutos <- complex(real = maxRe, imaginary = maxIm)
|
|
|
|
|
} else {
|
2022-02-03 10:43:34 +01:00
|
|
|
maxMuutos <- base::max(as.vector(muutokset))
|
2020-01-14 13:06:36 +01:00
|
|
|
}
|
2021-11-10 14:02:35 +01:00
|
|
|
indeksi <- which(muutokset == maxMuutos)
|
|
|
|
|
if (Re(maxMuutos) > 0) {
|
|
|
|
|
osuusTaulu <- suoritaMuutos(osuusTaulu, osuus, indeksi)
|
|
|
|
|
logml <- logml + maxMuutos
|
|
|
|
|
} else {
|
|
|
|
|
ready <- 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return(c(osuusTaulu, logml))
|
|
|
|
|
}
|