% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/04_kalman.R
\name{kalman}
\alias{kalman}
\title{Maximum Likelihood Estimation of Parameters for iAR, CiAR, and BiAR Models using the Kalman Filter}
\usage{
kalman(x, ...)
}
\arguments{
\item{x}{An object of class \code{iAR}, \code{CiAR}, or \code{BiAR} containing the model specification and parameters:
\itemize{
  \item For \code{iAR} models, the object should contain:
    \itemize{
      \item \code{series}: A numeric vector of the time series data.
      \item \code{times}: A numeric vector specifying the time points of the series.
      \item \code{series_esd}: A numeric vector specifying the error structure.
      \item \code{zero_mean}: A logical value indicating if the series should be zero-centered.
      \item \code{standardized}: A logical value indicating if the series should be standardized.
    }
  \item For \code{CiAR} models, the object should contain:
    \itemize{
      \item \code{series}: A numeric vector of the time series data.
      \item \code{times}: A numeric vector specifying the time points of the series.
      \item \code{series_esd}: A numeric vector specifying the error structure.
      \item \code{zero_mean}: A logical value indicating if the series should be zero-centered.
      \item \code{standardized}: A logical value indicating if the series should be standardized.
      \item \code{c}: A numeric value specifying the scale parameter for the CiAR model.
      \item \code{niter}: An integer specifying the number of iterations for the Kalman filter.
      \item \code{seed}: An integer seed for random number generation (optional).
    }
  \item For \code{BiAR} models, the object should contain:
    \itemize{
      \item \code{series}: A numeric matrix containing two columns for bivariate time series data.
      \item \code{times}: A numeric vector specifying the time points of the series.
      \item \code{series_esd}: A numeric matrix specifying the error structure for both series.
      \item \code{zero_mean}: A logical value indicating if the series should be zero-centered.
      \item \code{niter}: An integer specifying the number of iterations for the Kalman filter.
      \item \code{seed}: An integer seed for random number generation (optional).
    }
}}

\item{...}{Additional arguments (unused).}
}
\value{
An updated object of class \code{iAR}, \code{CiAR}, or \code{BiAR}, where the \code{coef} property is updated with the estimated model parameters (using MLE) and the \code{kalmanlik} property contains the log-likelihood value of the model.
}
\description{
Performs Maximum Likelihood Estimation (MLE) of the parameters of the iAR, CiAR, and BiAR models by maximizing the likelihood function using the Kalman filter.
This method applies the Kalman filter to compute the likelihood and estimate the model parameters that maximize the likelihood for each model type.
}
\details{
This function applies the Kalman filter to perform Maximum Likelihood Estimation (MLE) of the parameters of the autoregressive models (iAR, CiAR, BiAR). The Kalman filter is used to maximize the likelihood function based on the given time series data, and the parameters that maximize the likelihood are estimated.

- For \code{iAR}, the Kalman filter is applied to estimate the model parameters by maximizing the likelihood.
- For \code{CiAR}, the Kalman filter is applied to estimate the parameters of the complex autoregressive model by maximizing the likelihood.
- For \code{BiAR}, the Kalman filter is applied to estimate the parameters of the bivariate autoregressive model by maximizing the likelihood.

The method returns the updated model object, including the estimated parameters and the log-likelihood value.
}
\examples{
# Example 1: Applying Kalman filter for MLE of iAR model parameters
library(iAR)
n=100
set.seed(6714)
times=gentime(n=n)@times
model_norm <- iAR(family = "norm", times = times, coef = 0.9,hessian=TRUE)
model_norm <- sim(model_norm)
model_norm <- kalman(model_norm)
print(model_norm@coef)  # Access the estimated coefficients
print(model_norm@kalmanlik)  # Access the Kalman likelihood value

# Example 2: Applying Kalman filter for MLE of CiAR model parameters
set.seed(6714)
model_CiAR <- CiAR(times = times,coef = c(0.9, 0))
model_CiAR <- sim(model_CiAR)
y=model_CiAR@series
y1=y/sd(y)
model_CiAR@series=y1
model_CiAR@series_esd=rep(0,n)
model_CiAR <- kalman(model_CiAR)
print(model_CiAR@coef)
print(model_CiAR@kalmanlik)

# Example 3: Applying Kalman filter for MLE of BiAR model parameters
set.seed(6714)
model_BiAR <- BiAR(times = times,coef = c(0.9, 0.3), rho = 0.9)
model_BiAR <- sim(model_BiAR)
y=model_BiAR@series
y1=y/apply(y,2,sd)
model_BiAR@series=y1
model_BiAR@series_esd=matrix(0,n,2)
model_BiAR <- kalman(model_BiAR)
print(model_BiAR@coef)
print(model_BiAR@kalmanlik)

}
\references{
\insertRef{Eyheramendy_2018}{iAR},\insertRef{Elorrieta_2019}{iAR},\insertRef{Elorrieta_2021}{iAR}
}
