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!

È stato utile?

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().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top