C'è un modo per massimizzare / minimizzare una funzione personalizzata in R?


18

Sto cercando di ridurre a icona una funzione personalizzata. Dovrebbe accettare cinque parametri e il set di dati ed eseguire tutti i tipi di calcoli, producendo un singolo numero come output. Voglio trovare una combinazione di cinque parametri di input che produce il più piccolo output della mia funzione.

Risposte:


23

Ho scritto un post che elenca alcuni tutorial usandooptim .

Ecco una citazione della sezione pertinente:

  • "La combinazione della funzione R optime di una funzione obiettivo creata su misura, come una funzione di verosimiglianza negativa, fornisce un potente strumento per la stima dei parametri di modelli personalizzati.

  • 1
    Ultimamente ho giocato con DEoptim come un ottimo ottimizzatore "senza punti di partenza necessari".
    Mike Lawrence,

    1
    Un recente post di John Myles White sul comando optim in R potrebbe anche essere interessante .
    Andy W

    @Mike concordato; DEoptim offre un'alternativa più solida (DE = Evoluzione differenziale)
    Abe,

    12

    Oltre alla risposta di Jeromy Anglim, ho alcuni altri collegamenti.

    Accanto a optimc'è un'altra funzione nella base di R che permette di ciò che si vuole: nlminb. Controllare ?nlminbe ?optimper esempi di utilizzo.

    Ci sono un sacco di pacchetti che possono fare ottimizzazioni. Quello che ho trovato più interessante sono stati i pacchetti optimx e, abbastanza nuovo, il pacchetto neldermead per diverse versioni dell'algoritmo simplex.

    Inoltre, potresti voler dare un'occhiata alla Visualizzazione attività CRAN sull'ottimizzazione per più pacchetti

    Si prega di notare che tutti i miei consigli presuppongono che abbiate una funzione deterministica (cioè nessun rumore casuale). Per funzioni non strettamente deterministiche (o troppo grandi) è necessario utilizzare algoritmi come ricottura simulata o algoritmi genetici. Ma la Task View CRAN dovrebbe avere quello che ti serve.


    1

    La tua funzione è continua e differenziabile? Potresti essere in grado di utilizzare optim, con derivati ​​forniti dall'utente o approssimativi numericamente.

    Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
    Licensed under cc by-sa 3.0 with attribution required.