Nothing
## ../../testts/R/arma_Q0dotdotstats.R
## Do not edit this file manually.
## It has been automatically generated from *.org sources.
library(sarima)
## "Gardner1980"
arma_Q0Gardner <- function(phi, theta, tol = .Machine$double.eps){
## tol is not used here
.Call(stats:::C_getQ0, phi, theta)
}
## "Rossignol2011"
arma_Q0bis <- function(phi, theta, tol = .Machine$double.eps){
.Call(stats:::C_getQ0bis, phi, theta, tol)
}
## arma_Q0naive <- function(phi, theta, tol = .Machine$double.eps){
## p <- length(phi)
## q <- length(theta)
## r <- max(p, q+1)
##
## T <- cbind(numeric(r), rbind(diag(r - 1), numeric(r - 1)))
## if(p > 0)
## T[1:p, 1] <- phi
##
## Sigma <- matrix(0, r, r)
## Sigma[1:(q+1), 1:(q + 1)] <- c(1, theta) %o% c(1, theta)
##
## A <- T %x% T
## v <- solve(diag(nrow(A)) - A, as.vector(Sigma))
## matrix(v, r)
## }
##
## arma_Q0gnbR <- function(phi, theta, tol = .Machine$double.eps){
## p <- length(phi)
## q <- length(theta)
## r <- max(p, q+1)
##
## if(r == 1) # q = 0; p = 0 or 1 here
## return( matrix(if(p == 1) 1/(1-phi^2) else 1.0, 1, 1) )
##
## rphi <- if(p == r) phi else c(phi, numeric(r - p))
##
## Sigma <- matrix(0, r, r)
## Sigma[1:(q+1), 1:(q + 1)] <- c(1, theta) %o% c(1, theta)
##
## A <- diag(r)
## b <- numeric(r)
## for(k in seq_len(r)){
## b[k] <- Sigma[1, k]
## A[k,2] <- A[k,2] - rphi[k]
## # ak1 <- rphi[r - k + 1] * rphi[k + (r - k + 1) - 1]
## ak1 <- rphi[r - k + 1] * rphi[r]
## if(k < r){
## for(i in 1:(r - k)){
## b[k] <- b[k] + Sigma[1 + i, k + i]
## A[k, k + i] <- A[k, k + i] - rphi[i]
## if(2 + i <= r)
## A[k, 2 + i] <- A[k, 2 + i] - rphi[k + i]
##
## ak1 <- ak1 + rphi[i] * rphi[k + i - 1]
## }
## }
## A[k, 1] <- A[k, 1] - ak1
## }
##
## g1 <- solve(A, b)
##
## res <- matrix(0.0, r, r)
## res[1, ] <- g1
## res[r, r] <- rphi[r]^2 * g1[1] + Sigma[r, r]
## if(r > 2){
## for(i in (r-1):2){
## res[i, r] <- rphi[i] * rphi[r] * g1[1] + rphi[r] * g1[i + 1] + Sigma[i, r]
## for(j in (r-1):i){
## res[i, j] <- rphi[i] * rphi[j] * g1[1] +
## rphi[i] * g1[j + 1] + rphi[j] * g1[i + 1] +
## Sigma[i,j] + res[i + 1, j + 1]
## }
## }
## }
## ## fill the elements under the diagonal, symmetrically;
## ## r > 1 here, so we don't check
## res[2,1] <- res[1,2]
## if(r > 2){
## for(i in (1:(r - 1)))
## for(j in (i + 1) : r)
## res[j,i] <- res[i, j]
## }
##
## res
## }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.