我正在尝试以y[t] = alpha + beta * y[t-1] + u[t]的形式估计 R 中的简单 AR(1) 模型,其中 u[t] 正态分布,均值为零和标准偏差西格玛。
我模拟了一个alpha = 10和beta = 0.1的 AR(1) 模型:
library(stats)
data<-arima.sim(n=1000,list(ar=0.1),mean=10)
第一次检查:OLS 产生以下结果:
lm(data~c(NA,data[1:length(data)-1]))
Call:
lm(formula = data ~ c(NA, data[1:length(data) - 1]))
Coefficients:
(Intercept) c(NA, data[1:length(data) - 1])
10.02253 0.09669
但我的目标是用 ML 估计系数。我的负对数似然函数是:
logl<-function(sigma,alpha,beta){
-sum(log((1/(sqrt(2*pi)*sigma)) * exp(-((data-alpha-beta*c(NA,data[1:length(data)-1]))^2)/(2*sigma^2))))
}
也就是说,所有对数单观测正态分布的总和,由 u[t] = y[t] - alpha - beta*y[t-1] 转换。滞后是由 c(NA,data[1:length(data)-1]) 创建的(就像上面的 OLS 估计一样)。
当我尝试将其投入使用时,出现以下错误:
library(stats4)
mle(logl,start=list(sigma=1,alpha=5,beta=0.05),method="L-BFGS-B")
Error in optim(start, f, method = method, hessian = TRUE, ...) :
L-BFGS-B needs finite values of 'fn'
当我尝试估计y[t] = alpha + beta * x[t] + u[t]形式的线性模型时,我的对数似然函数必须正确。
我只是看不到我的初始值如何导致非有限结果?尝试任何其他初始值都不能解决问题。
非常感谢任何帮助!