Funkcja optymalizacji służy tylko do obsługi jednego argumentu funkcji, jak rozumiem. Czasami jednak funkcja może zależeć od różnych zakresów wejściowych zmiennych i parametrów.Czy mogę przekazać więcej argumentów do funkcji optimize() w R
na przykład:
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. domena x przekazywana do y może się zmienić z próbki na próbkę. Zamiast używać ogólnego x, chcę móc rysować z wielu domen wartości x.r, aby uruchomić y over. Czy istnieje jakiś sposób modyfikacji funkcji optymalizacji, aby móc przekazać zarówno y, funkcję i x jej zmienne domeny, jak i parametry optymalizacji p?
Z powyższego pojawia się błąd:
> optimize(y,upper=range(x.r)[2],lower=range(x.r)[1])
Error in p * 1 : 'p' is missing
EDIT: za sugestię poniżej (co ma sens ... ale) próbowałem.
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)
wyniki były: Błąd w p * 1: 'p' brakuje
również
> 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'
jakieś inne pomysły?
edytuj 2: za komentarz poniżej zadziała pętla, ale wydaje się dziwnym sposobem podejścia do niej. Nie jestem pewien, czy to w unikalny sposób bierze pod uwagę domenę 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
...
Spróbuj czegoś takiego jak 'optimize (y, upper = range (xr) [2], lower = range (xr) [1], p = some_variable)' chodzi o dodanie parametru 'p' na końcu i podanie do dowolnej zmiennej, którą chcesz – iTech
Edytowałem, aby spróbować. Próbowałem również kilka wariantów (inc.robienie jako pierwszego argumentu y, ponieważ optymalizacja domyślnie pobiera pierwszy argument). Klucz, który próbuję uzyskać, przekazuje różne domeny x do optymalizacji. – pat
powinieneś dodać argument jako 'p = 3' na przykład – iTech