Ich habe mehr als eine Funktion und statt die optim
Funktion zu jedem einzelnen zu wiederholen. Ich habe viele andere manuelle Funktionen ausprobiert. Alle meine eigenen Funktionen funktionieren jedoch nicht. Dann habe ich versucht, Funktionen zu verwenden, aber das gleiche, es ist nicht funktionieren.Wenden Sie Optimierungsfunktion auf mehrere Funktionen in r mit Sapply-Funktion
Zum Beispiel
my_fun <- function(x,start=c(0,1),mu=c(0.5,2),sd=c(0.3,0.2)){
ll_1 <- function(mu,sd){
-sum(log(dnorm(x,mu[[1]],sd[[1]]))
}
ll_2 <- function(mu,sd){
-sum(log(dnorm(x,mu[[2]],sd[[2]]))
}
## apply ll to different dnorm functions
}
}
optimm_1 <- optim(start,fn=ll_1)
optimm_2 <- optim(start,fn=ll_2)
## Ich möchte, dass die Optim-Funktion für jede Funktion anzuwenden und geben mir das Ergebnis eines jeden.
x <- rnorm(10,0.5,3) ##to get the data
Ich habe versucht, ll Funktion innerhalb der for
Schleife zu machen. Also, anstatt meine Funktion immer wieder zu wiederholen. Außerdem habe ich es satt, alle diese Funktionen gleichzeitig zu optimieren, ohne sie für jede Funktion zu wiederholen.
Es ist nicht klar, was Sie optimieren, weil 'll' auffällig keine Funktion ist. – Frank
Ja, du hast Recht, es war ein Fehler. Ich aktualisiere es. –
Ok, nun hat dein 'start' eine Länge von 2 während' ll's erstes Argument (das einzige Argument 'optim') betrachtet wird, hat scheinbar eine Länge von 1. du kannst' f <- function (par) -sum (zum Beispiel log (dnorm (x, par [1], par [2]))) statt. – Frank