Skip to contents

A class for MixAR models with arbitrary noise distributions. "MixARgen" inherits from "MixAR".

Objects from the Class

Objects can be created by calls of the form new("MixARgen", dist, ...) or mixARgen(...). The two forms are completely equivalent. The latter is available from version 0.19-15 of package MixAR.

Slots

Most slots are inherited from class "MixAR".

prob:

the mixing probabilities, "numeric".

order:

the AR orders, "numeric".

shift:

intercept terms, "numeric".

scale:

scaling factor, "numeric".

arcoef:

autoregressive coefficients, an object from class "raggedCoef" containing one row for each mixture component.

dist:

Object of class "list", representing the noise distributions. The list contains one element for each component of the MixAR model or a single element if the noise distribution is the same for all components.

If the distributions do not contain parameters (e.g. Gaussian or \(t_4\)) it is sufficient to give the list of functions in the element dist of the list.

If the distributions do contain parameters the recommended arrangement is to give a list with components generator and param, such that a call generator(param) should produce the required list of distributions.

This is not finalised but if changed, backward compatibility with existing objects will be maintained.

Extends

Class "MixAR", directly.

Methods

get_edist

signature(model = "MixARgen"): ...

initialize

signature(.Object = "MixARgen"): ...

lik_params

signature(model = "MixARgen"): ...

mix_cdf

signature(model = "MixARgen", x = "missing", index = "missing", xcond = "numeric"): ...

mix_cdf

signature(model = "MixARgen", x = "numeric", index = "missing", xcond = "numeric"): ...

mix_cdf

signature(model = "MixARgen", x = "numeric", index = "numeric", xcond = "missing"): ...

mix_pdf

signature(model = "MixARgen", x = "missing", index = "missing", xcond = "numeric"): ...

mix_pdf

signature(model = "MixARgen", x = "numeric", index = "missing", xcond = "numeric"): ...

mix_pdf

signature(model = "MixARgen", x = "numeric", index = "numeric", xcond = "missing"): ...

noise_dist

signature(model = "MixARgen"): ...

noise_params

signature(model = "MixARgen"): ...

noise_rand

signature(model = "MixARgen"): ...

Examples

showClass("MixARgen")
#> Class "MixARgen" [package "mixAR"]
#> 
#> Slots:
#>                                                                         
#> Name:        dist       prob      order      shift      scale     arcoef
#> Class:       list    numeric    numeric    numeric    numeric raggedCoef
#> 
#> Extends: "MixAR"

exampleModels$WL_ibm_gen@dist
#> [[1]]
#> [[1]]$pdf
#> [1] "dnorm"
#> 
#> [[1]]$cdf
#> [1] "pnorm"
#> 
#> [[1]]$rand
#> [1] "rnorm"
#> 
#> [[1]]$logpdf
#> function (x) 
#> log(dnorm(x))
#> <bytecode: 0x563b245b2b90>
#> <environment: 0x563b245aec70>
#> 
#> [[1]]$Fscore
#> function (x) 
#> -x
#> <bytecode: 0x563b245b2500>
#> <environment: 0x563b245aec70>
#> 
#> [[1]]$xFscore
#> function (x) 
#> -x^2
#> <bytecode: 0x563b245b1f50>
#> <environment: 0x563b245aec70>
#> 
#> [[1]]$Parscore
#> function () 
#> 0
#> <bytecode: 0x563b245b5760>
#> <environment: 0x563b245aec70>
#> 
#> [[1]]$get_param
#> function () 
#> numeric()
#> <bytecode: 0x563b245b5258>
#> <environment: 0x563b245aec70>
#> 
#> [[1]]$set_param
#> function () 
#> stop("Standard normal has no parameters to set.")
#> <bytecode: 0x563b245b4d18>
#> <environment: 0x563b245aec70>
#> 
#> [[1]]$any_param
#> function () 
#> param_flag
#> <bytecode: 0x563b245b4730>
#> <environment: 0x563b245aec70>
#> 
#> [[1]]$show
#> function () 
#> "Standard normal distribution"
#> <bytecode: 0x563b245b40a0>
#> <environment: 0x563b245aec70>
#> 
#> 
noise_dist(exampleModels$WL_ibm_gen, "cdf")
#> [[1]]
#> [1] "pnorm"
#> 
noise_dist(exampleModels$WL_ibm_gen, "pdf")
#> [[1]]
#> [1] "dnorm"
#> 
noise_dist(exampleModels$WL_ibm_gen, "pdf", expand = TRUE)
#> [[1]]
#> [1] "dnorm"
#> 
#> [[2]]
#> [1] "dnorm"
#> 
#> [[3]]
#> [1] "dnorm"
#> 
noise_dist(exampleModels$WL_ibm_gen, "cdf", expand = TRUE)
#> [[1]]
#> [1] "pnorm"
#> 
#> [[2]]
#> [1] "pnorm"
#> 
#> [[3]]
#> [1] "pnorm"
#> 

## data(ibmclose, package = "fma")  # for `ibmclose'

pdf1 <- mix_pdf(exampleModels$WL_ibm, xcond = as.numeric(fma::ibmclose))
cdf1 <- mix_cdf(exampleModels$WL_ibm, xcond = as.numeric(fma::ibmclose))
gbutils::plotpdf(pdf1, cdf = cdf1, lq = 0.001, uq = 0.999)


pdf1gen <- mix_pdf(exampleModels$WL_ibm_gen, xcond = as.numeric(fma::ibmclose))
cdf1gen <- mix_cdf(exampleModels$WL_ibm_gen, xcond = as.numeric(fma::ibmclose))
gbutils::plotpdf(pdf1gen, cdf = cdf1gen, lq = 0.001, uq = 0.999)

length(fma::ibmclose)
#> [1] 369
cdf1gena <- mix_cdf(exampleModels$WL_ibm_gen, xcond = as.numeric(fma::ibmclose)[-(369:369)])
pdf1gena <- mix_pdf(exampleModels$WL_ibm_gen, xcond = as.numeric(fma::ibmclose)[-(369:369)])
gbutils::plotpdf(pdf1gena, cdf = cdf1gena, lq = 0.001, uq = 0.999)


pdf1a <- mix_pdf(exampleModels$WL_ibm, xcond = as.numeric(fma::ibmclose)[-(369:369)])
cdf1a <- mix_cdf(exampleModels$WL_ibm, xcond = as.numeric(fma::ibmclose)[-(369:369)])
gbutils::plotpdf(pdf1a, cdf = cdf1a, lq = 0.001, uq = 0.999)


cdf1gena <- mix_cdf(exampleModels$WL_ibm_gen, xcond = as.numeric(fma::ibmclose)[-(369:369)])

cond_loglik(exampleModels$WL_ibm, as.numeric(fma::ibmclose))
#> [1] -1212.188
cond_loglik(exampleModels$WL_ibm_gen, as.numeric(fma::ibmclose))
#> [1] -1212.188

ts1gen <- mixAR_sim(exampleModels$WL_ibm_gen, n = 30, init = c(346, 352, 357), nskip = 0)
plot(ts1gen)


plot(mixAR_sim(exampleModels$WL_ibm_gen, n = 100, init = c(346, 352, 357), nskip = 0),
     type = "l")


plot(diff(mixAR_sim(exampleModels$WL_ibm_gen, n = 100, init = c(346, 352, 357), nskip = 0)),
     type = "l")


noise_dist(exampleModels$WL_ibm_gen, "Fscore")
#> [[1]]
#> function (x) 
#> -x
#> <bytecode: 0x563b245b2500>
#> <environment: 0x563b245aec70>
#> 

prob   <- exampleModels$WL_ibm@prob
scale  <- exampleModels$WL_ibm@scale
arcoef <- exampleModels$WL_ibm@arcoef@a

mo_WLt3  <- new("MixARgen", prob = prob, scale = scale, arcoef = arcoef,
                dist = list(fdist_stdt(3)))
mo_WLt30 <- new("MixARgen", prob = prob, scale = scale, arcoef = arcoef,
                dist = list(fdist_stdt(30)))