1

以下是在给定 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)+.. +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 : 下标数不正确。感谢您的时间和考虑

4

0 回答 0