2017-06-12 2 views
1

J'ai une fonction logit.aic(x,y) qui fournit une sortie, étant donné deux entrées x et y.Comment sélectionner les entrées (a, b) qui minimisent la sortie de la fonction f (a, b)?

Restrictions: Les deux entrées peuvent être toute valeur non-entier positif compris entre 0 et . En outre, il devrait être x < y.

Exemple:logit.aic(20,80) renvoie la valeur 41,38729.

Problème: J'ai besoin de trouver la paire d'entrées qui minimise la sortie de ma fonction.

Merci d'avance.

+0

Non, cela prend seulement des valeurs simples. Le problème est que l'entrée désirée n'est pas un nombre entier, donc j'ai besoin d'un moyen de minimiser automatiquement. – smars

Répondre

2

Une "recherche de grille" est juste pour cela.

Prévoir que logit.aic est une fonction vectorisé, vous pouvez le faire

oo <- outer(0:100, 0:100, logit.aic) 
oo[lower.tri(oo, diag = TRUE)] <- NA 
ind <- which(oo == min(oo, na.rm = TRUE), arr.ind = TRUE) 
ind - 1 # because index starts from 0 

Si ce ne sont pas facilement si, faire

logit.aic <- Vectorize(logit.aic, c("x", "y")) 

Comme une note de côté, vous pouvez visualiser la surface par

contour(0:100, 0:100, oo) 
points(ind, pch = 19) # minimum 

mise à jour

ind - 1 retourne une matrice qui n'a pas de sens. J'ai besoin de la paire de valeurs non-entières qui minimise la sortie de ma fonction.

Cela signifie que vous avez plusieurs minima. Chaque ligne du résultat est un.

+0

Comment puis-je obtenir la paire de valeurs qui minimise la sortie? Indique une matrice qui n'a aucun sens. – smars

+0

J'ai besoin de la paire de valeurs non-entières qui minimise la sortie de ma fonction. – smars

+0

Je comprends. Merci. Mais ce ne sont que des entiers seulement. Je devais vérifier toutes les valeurs non entières possibles. – smars