R код, Поиск общих переменных перехода для пороговых авторегрессионных процессов
Ниже приведен код для поиска оптимальной "пороговой переменной" с учетом AR(pmax). Переменный коэффициент AR является обобщением TAR в том смысле, что он обеспечивает более сложную плавную динамику. Pmax контролирует AR(pmax). P - максимальная задержка первого компонента. Q - максимальная задержка второго компонента. R - максимальная мощность второго компонента.
A [i,j,k] является переменной в функциональном коэффициенте ==> X(t)=F0(a[i,j,k])+ F1(a[i,j,k])*X(t-1)+..+ Fm(a[i,j,k])*X(tm) вместо классического AR(m) X(t)=a0+a1*X(t-1)+..+ а * X (тм). Я планирую найти общую переменную перехода, используя тройной цикл, и по этой причине она представляет собой [i,j,k]= X(ti)*X^k(tj)
library(gamlss)
library(gamlss.add)
library(gam)
library(mgcv)
library(tsDyn)
llynx=log10(lynx)
minAICVCsplinetest=function(x,pmax,p,q,r){
blagg=na.remove(blag(x,pmax))
data=na.remove(blag(x,pmax))
alpha=array(0,dim=c(p,q,r))
a=rep(0, length(data[,c(1)]))
for(i in 1:p){
for(j in 1:q){
for(k in 1:r){
a[i,j,k]=blagg[,c(i)]*blagg[,c(j)]^k
for(m in 1:pmax){ll[m]=to.string(bquote("s(a[i,j,k],by=data[,c("~.(m)~"+1)])+"))}
gg=to.string((gsub( "[^][:alnum:],=()[+]", "", (ll))))
alpha[i,j,k]=AIC(gam(blagg[,c(1)]~cat(substr(gg, 1, nchar(gg)-1))))}}}
which(alpha==min(alpha), arr.ind=TRUE)}
minAICVCsplinetest(llynx,6,4,4,10)
Оптимальная политика, вероятно, состояла бы в том, чтобы показать переменную перехода с наименьшей эффективной степенью свободы, но у меня возникает следующая проблема: Ошибка в [i, j, k] = blagg[, c(i)] * blagg[, c(j)]^k: неверное количество подписчиков. Спасибо за ваше время и внимание