La funzione di ottimizzazione è progettata per gestire un argomento di funzione solo a quanto ho capito. Ma a volte una funzione può dipendere da diversi intervalli di input di variabili e parametri.Posso passare più argomenti alla funzione optimize() in R
ad esempio:
x.r<-rnorm(100)
y<-function(x,p) -x^2+p*1/exp(x^3)
optimize(y,upper=range(x.r)[2],lower=range(x.r)[1])
x.r. il dominio di x passato a y può cambiare da campione a campione. Invece di usare una x generica, voglio essere in grado di disegnare da molti domini di valori x.r per eseguire y su. C'è un modo per modificare la funzione di ottimizzazione in modo che io possa passare sia y, la funzione e x le sue variabili di dominio, sia i parametri di ottimizzazione p?
Con quanto sopra si ottiene un errore:
> optimize(y,upper=range(x.r)[2],lower=range(x.r)[1])
Error in p * 1 : 'p' is missing
edit: da suggerimento di sotto (che ha un senso ... ma) ho provato.
x.r<-rnorm(100)
p<-seq(-5,5,1)
y<-function(x,p) -x^2+p*1/exp(x^3)
optimize(y,upper=range(x.r)[2],lower=range(x.r)[1],p)
risultati era: Errore in p * 1: 'p' manca
Inoltre,
> optimize(y,upper=range(x.r)[2],lower=range(x.r)[1],p,x.r)
Error in optimize(y, upper = range(x.r)[2], lower = range(x.r)[1], p, :
invalid function value in 'optimize'
altre idee?
modifica 2: per commenti sotto un ciclo funzionerebbe, ma sembra un modo strano per avvicinarsi. Non sono sicuro che sia in grado di prendere in modo univoco il dominio x.r.
x.r<-rnorm(100)
p<-seq(-5,5,1)
y<-function(p=p,x=x.r) -x^2+p*1/exp(x^3)
for(v in p){
print(optimize(y,upper=range(p)[2],lower=range(p)[1],p=v))}
> for(v in p){
+ print(optimize(y,upper=range(p)[2],lower=range(p)[1],p=v))}
$minimum
[1] -4.999944
$objective
[1] -9.637547e+54
$minimum
[1] -4.999944
$objective
...
Provare qualcosa come 'optimize (y, upper = range (xr) [2], lower = range (xr) [1], p = some_variable)' l'idea è di aggiungere il parametro 'p' alla fine e passare ad esso qualsiasi variabile desiderata – iTech
ho modificato per provarlo. Ho anche provato diverse varianti (inc.facendo p come il primo argomento a y, dal momento che ottimizza il primo argomento per impostazione predefinita). La chiave che sto cercando di ottenere è il passaggio di diversi domini x all'ottimizzazione. – pat
dovresti aggiungere l'argomento come 'p = 3' ad esempio – iTech