optim disuguaglianza vincolo
-
27-10-2019 - |
Domanda
Sto tentando di utilizzo optim()
in R per risolvere per lambda nella seguente equazione:
lambda / sigma ^ 2 - ln (lambda / sigma ^ 2) = 1 + 1 / Q
soggetto a vincolo:
lambda> sigma ^ 2.
Io non sono sicuro di come si va su come configurare questo in R.
Sono aperto a routine di ottimizzazione alternative come bene anche se l'equazione appare convessa e quindi optim
dovrebbe essere una buona scelta.
Grazie!
Soluzione
Si sta tentando di risolvere un'equazione. O meno il vincolo è soddisfatto, può essere deciso solo ex post.
È possibile utilizzare uniroot
come segue
f <- function(x,sigma=1,Q=1) {x/sigma^2 - log(x/sigma^2) - 1 - 1/Q}
uniroot(f,c(1,5))
dando
$root
[1] 3.146198
$f.root
[1] 3.552369e-06
$iter
[1] 5
$estim.prec
[1] 6.103516e-05
Altri suggerimenti
deciso che questo è più di una risposta di un commento.
Sia optim
e optimize
minimizzare funzioni, in modo da ciò che si vuole fare è scrivere una funzione di errore che restituisce, per esempio, l'errore quadratico per un dato lambda (se(lambda, sigma^2, Q)
, assicurarsi che il lambda è il primo argomento). Quindi chiamare optim(f = se, lower = sigma^2, sigma^2, Q)
e restituirà il valore di lambda che minimizza la vostra funzione di errore. Se si dispone di più punti di dati (Q, sigma ^ 2 paia) poi fare la vostra funzione di una somma di errori quadrati o provare a utilizzare nls()
.