Minimização Condicionada

Gostaria de saber qual é a melhor função para realizar uma minimização com restrições: nlm(), optim(), optimize() ou constrOptim(), ou outra? Abaixo vai a função objeto, e as restrições descritas. Qualquer dica já ajuda. O meu problema maior foi aplicar as restrições aos métodos de otimização. Obs.: Salvo engano, tudo abaixo é plenamente reproduzível. # Tenho a função abaixo. LogLik <- function(parametros,dados){ alpha <- parametros[1] delta <- parametros[2] epsilon.c <- parametros[3] epsilon.v <- parametros[4] mu <- parametros[5] B <- dados[,2] S <- dados[,3] logl <- sum(-epsilon.c-epsilon.v+((max(c(B,S))+min(c(B,S)))/2)* (log((epsilon.v/(mu+epsilon.v)))+ log((epsilon.c/(mu+epsilon.c))))+ B*log(mu+epsilon.c)+S*log(mu+epsilon.v))+ sum( log( (alpha)*(1-delta)*exp(-mu)* ((((epsilon.v/(mu+epsilon.v))))^ (S-((max(c(B,S))+min(c(B,S)))/2)))* ((epsilon.c/(mu+epsilon.c))^ (-((max(c(B,S))+min(c(B,S)))/2)))+ (alpha)*(delta)*exp(-mu)* ((((epsilon.c/(mu+epsilon.c))))^ (B-((max(c(B,S))+min(c(B,S)))/2)))* ((epsilon.v/(mu+epsilon.v))^ (-((max(c(B,S))+min(c(B,S)))/2)))+ (1-alpha)* ((epsilon.c/(mu+epsilon.c))^ (B-((max(c(B,S))+min(c(B,S)))/2)))* ((epsilon.v/(mu+epsilon.v))^ (S-((max(c(B,S))+min(c(B,S)))/2))) )) return(logl) } # Supondo os valores BS <- cbind(1,500,501) theta <- c(0.4,0.5,40,40,50) # Quero minimizar a função: LogLik(theta,BS) # Com as seguintes restrições, que eu não consegui implementar (as restrições são # aos valores de theta, ou "parametros" na função, em ordem): # 0 <= alpha <= 1 ("alpha" é um valor entre 0 e 1) # 0 <= delta <= 1 ("delta" é um valor entre 0 e 1) # epsilon.c > 20 ("epsilon.c" é maior que 20) # epsilon.v > 20 ("epsilon.v" é maior que 20) # mu > 30 ("mu" é maior que 30) Grato, Luciano.
participantes (1)
-
Luciano Ramos Gonçalves