Unit 19 Psi weights with AR models:

ψ0=1 ψ1=ϕ1 ψ2=ϕ1ψ1+ϕ2 ψ3=ϕ1ψ2+ϕ2ψ1+ϕ3 ψ=pi=1ϕiψi

multfun <- function(phi, l, psi) {
    sum(phi[1:l] * psi[1:l])
}
phitest <- function(phi, l) {
    if (l > length(phi)) {
        return(append(phi, rep(0, l - length(phi))))
    } else {
        return(phi)
    }
}
arpsiweights <- function(phi, theta = as.numeric(0), l) {
    phi <- phitest(phi, l)
    psi <- as.numeric(1)
    for (i in 2:l) {
        psi[i] <- multfun(phi, i - 1, rev(psi))
    }
    psi
}

19.1 Psi weights for ARMA

ψ0=1 ψ1=ϕ1θ1 ψ2=ϕ1ψ1+ϕ2θ2 ψ3=ϕ1ψ2+ϕ2ψ1+ϕ3theta3 ψ=pi=1ϕiψiθi

psiweights <- function(phi, theta = as.numeric(0), l) {
    phi <- phitest(phi, l)
    psi <- as.numeric(1)
    theta <- c(0, theta)
    theta <- phitest(theta, l)
    for (i in 2:l) {
        psi[i] <- multfun(phi, i - 1, rev(psi)) - theta[i]
    }
    psi
}