要正确估计d值,应该是要用FARIMA吧.
FARIMA:
Fits a fractional ARIMA model to a univariate time series.
利用simulate.FARIMA模拟出10000笔数据,
再以FARIMA估计,d,ar,ma都蛮接近的.
1)set.seed(394)
y2 = simulate.FARIMA(list(d=0.4,ar=0.9,ma=0.5,mean=0,sigma2=1), 10000)
y2.d=FARIMA(y2,p=1,q=1)
y2.d
summary(y2.d)
执行结果
Coefficients:
Value Std. Error t value Pr(>|t|)
d 0.4268 0.0220 19.4021 0.0000
AR(1) 0.8939 0.0110 81.3499 0.0000
MA(1) 0.5151 0.0120 43.0246 0.0000
2)set.seed(394)
y3 = simulate.FARIMA(list(d=0.3,ar=c(0.5,-0.2),ma=0.5,mean=0,sigma2=1), 10000)
y3.d=FARIMA(y3,p=2,q=1)
y3.d
summary(y3.d)
执行结果
Coefficients:
Value Std. Error t value Pr(>|t|)
d 0.3043 0.0169 18.0057 0.0000
AR(1) 0.4693 0.0203 23.0891 0.0000
AR(2) -0.2044 0.0167 -12.2167 0.0000
MA(1) 0.4702 0.0189 24.9123 0.0000