2016-04-09 14 views
2

私はRの初心者であり、いくつかのフォーラムで検索しましたが、これまでの回答はありませんでした。 arima()コマンドを使用せずにAR(1)モデルに対してRで最尤推定を行うように求められます。我々は、切片アルファ、係数ベータおよび分散σ2を推定すべきである。データは正規分布に従い、ここで対数尤度関数を導出する必要があります。私は、次のコードを使用して機能をプログラムしようとしていた:Error in Y - (theta[1]/(1 - theta[2]))^2 : 'Y' is missingRの正規分布のための手による最大尤度推定

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) 

このコードを実行しているとき、私は常にエラーメッセージが表示されます。 尤度関数が正しく導出されているかどうかを調べることができれば幸いです。

ご協力いただきありがとうございます。

+0

ヒント:?optimドキュメントに用意されている例題の目的関数の引数を詳しく見ることができます – chinsoon12

答えて

0

nlogL関数の引数は、thetaの1つのみです。したがって、関数への2番目の引数を削除するだけですぐに問題を解決できます。Y変数は、nlogL以外の定義によって解決されます。あるいは、nlogLの署名をそのままにして、のようにoptimによって追加の引数としてYを渡すことができます。また、私は?optimを見直すための第2のチンション12の提案をします。

関連する問題