2016-04-09 16 views
2

Ich bin ein Neuling in R und in mehreren Foren gesucht, aber bis jetzt keine Antwort bekommen. Wir werden gebeten, eine Maximum-Likelihood-Schätzung in R für ein AR (1) -Modell durchzuführen, ohne den Befehl arima() zu verwenden. Wir sollten den Schnittpunkt Alpha, den Koeffizienten Beta und die Varianz Sigma2 schätzen. Die Daten sollten einer normalen Verteilung folgen, von der ich die Log-Likelihood-Funktion abgeleitet habe. Ich habe dann versucht, die Funktion mit dem folgenden Code zu programmieren:Maximale Wahrscheinlichkeit Schätzung von Hand für die Normalverteilung in R

Y <- data$V2 
nlogL <- function(theta,Y){ 
    alpha <- theta[1] 
    rho <- theta[2] 
    sigma2 <- theta[3] 
    logl <- -(100/2)*log(2*pi) - (100/2)*log(theta[3]) - (0.5*theta[3])*sum(Y-(theta[1]/(1-theta[2]))**2) 


    return(-logl) 
} 
par0 <- c(0.1,0.1,0.1) 
opt <- optim(par0, nlogL, hessian = TRUE) 

Wenn dieser Code ausgeführt wird ich die Fehlermeldung immer erhalten: Error in Y - (theta[1]/(1 - theta[2]))^2 : 'Y' is missing. Es wäre toll, wenn Sie schauen könnten, ob die Likelihood-Funktion korrekt abgeleitet ist.

Vielen Dank im Voraus für Ihre Hilfe!

+0

Hinweis: Sie können die Argumente der Zielfunktion in den Beispielen in der? Optim-Dokumentation genauer betrachten – chinsoon12

Antwort

0

Ihre nlogL Funktion sollte nur ein einziges Argument, theta nehmen. So können Sie Ihr unmittelbares Problem beheben, indem Sie einfach das zweite Argument der Funktion entfernen, und die Variable Y würde durch ihre Definition außerhalb von nlogL aufgelöst. Alternativ können Sie die Signatur nlogL unverändert lassen und Y als zusätzliches Argument durch optim wie folgt übergeben: optim(par0, nlogL, hessian = TRUE, Y=Y). Auch würde ich zweiten Vorschlag von chinson12 empfehlen, ?optim zu überprüfen.

Verwandte Themen