R кодов:
library(forecast)
library(FitAR)
set.seed(54321)
c<-0 # Counter for correct model under method
n=50
nsim=10
phi=c(0.5,-0.2)
t=1:n
t.square=t^2
beta1=2
beta2=3
beta3=4
for (i in 1: nsim) {
error<-arima.sim(model=list(ar=phi),n=n,innov=rnorm(n,0,1))
yt=beta1+beta2*t+beta3*t.square+error
dt=cbind(t,t.square)
p<- SelectModel(as.ts(error), lag.max = 15, Criterion = "BIC", Best=1)
f1=Arima(yt, xreg=dt, order=c(p,0,0),include.drift=FALSE, include.constant
= FALSE, method = "ML")
print((coef(f1)))
}
Вывод:
ar1 ar2 ar3 t t.square
0.9031324 -0.4968706 0.4069485 3.1808610 3.9965791
ar1 t t.square
0.7372397 3.1051317 3.9989081
t t.square
3.178753 3.996895
ar1 t t.square
0.6279603 3.1813097 3.9967204
ar1 t t.square
0.5789377 3.1561776 3.9976448
ar1 ar2 t t.square
0.8023629 -0.2414305 3.1717066 3.9968250
ar1 ar2 t t.square
0.8423128 -0.3565319 3.1768333 3.9966517
ar1 t t.square
0.5170698 3.0990545 3.9987464
ar1 t t.square
0.5521029 3.1356383 3.9978553
ar1 t t.square
0.5280407 3.1679048 3.9972218
Количество симуляций равно 10. Приведенный выше вывод является оценкой для AR порядка 2 и с переменными tи t.square.
Я хочу получить коды только тогда, когда у нас есть два коэффициента для AR (2).Это означает, что для каждой симуляции, если ar1 и ar2 существуют, сохраните строку, если не удалите ее.
Так что я хотел бы получить
ar1 ar2 t t.square
0.8023629 -0.2414305 3.1717066 3.9968250
ar1 ar2 t t.square
0.8423128 -0.3565319 3.1768333 3.9966517
Заранее спасибо.