以下は、AR(pmax) を指定して最適な「しきい値変数」を見つけるためのコードです。可変係数 AR は、TAR を一般化したもので、より複雑な滑らかなダイナミクスに対応します。Pmax は AR(pmax) を制御します。P は、最初のコンポーネントの最大ラグです。Q は、2 番目のコンポーネントの最大ラグです。R は、2 番目のコンポーネントの最大パワーです。
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)+.. の代わりに+am*X(tm). トリプル ループを使用して一般的な遷移変数を見つけることを計画しています。これが、a[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)
最適なポリシーは、おそらく有効な自由度が最も低い遷移変数を表示することですが、私が抱えている問題は次のとおりです。a[i、j、k]のエラー= blagg[、c(i)] * blagg[、c (j)]^k : 添字の数が正しくありません。あなたの時間と配慮していただきありがとうございます