Welcome State space notation Functions > ckal.fil.bin.beta.logit
Last update Jul 10, 2004

DESCRIPTION:

Conjugated Kalman filter for binomial data assuming logit-link and partially specified linear latent process. The conjugated prior on the probability parameter is beta. The specific model is
Observation equation:
(yt | ht)
~
bin(nt,pt),
Signal:
lt
=
FtTqt,
System equation:
qt
=
Gtqt-1 + wt,
    wt
~
[0,Wt],
Initial prior:
q0
~
[m0,C0].

USAGE:

      ckal.fil.bin.beta.logit(ssm)

REQUIRED ARGUMENTS:

ssm:
Object of class ssm (state space model).
The following attributes must be specified in ssm:
Yt:
1 × n vector containing the binomial observations.
nt:
1 × n vector containing the number of trials at each time-point.
Ft:
Function returning a p × 1 design vector.
Gt:
Function returning a p × p evolution transfer matrix.
Wt:
Function returning a p × p evolution variance matrix.
m0:
p × 1 vector (prior mean).
C0:
p × p matrix (prior variance).

OPTIONAL ARGUMENTS:

The following attributes of the ssm object might be needed:
Xt:
Matrix containing the covariates needed in Ft, Gt and/or Wt. This matrix must have n rows, such that row t contains the covariates needed for generating the system matrices at time t.
psi:
Parameter vector must be supplied if it is needed in the calculation of the system matrices.
The following attributes of the ssm object are optional:
fam:
Tacitly assumed to have value binomial.
link:
Tacitly assumed to have value identity.
m.start:
Not used in the conjugate filter.

VALUE:

Returns an object of class ssm with the same attributes as the object in the call, but with attribute filtered updated with:
mt:
Posterior means mt given the observations up to and including time t. These are arranged row-wise in a matrix.
Ct:
Posterior variances Ct given the observations up to and including time t. These are arranged in a 3-dimensional array such that Ct is placed in filtered$Ct[,,t].
Rt:
Prior variances for the states arranged in 3-dimensional array such that Rt is placed in filtered$Rt[,,t]. The reason for returning these is that they are needed in the Kalman smoother.
The returned object can the be given as argument to the Kalman smoother.

SIDE EFFECTS:

Global variables ft and qt is generated by the function. If they already exists, they are overwritten! The function deletes ft and qt before returning.

DETAILS:

This is the conjugate filter introduced for the class of dynamic generalized linear models by West, Harrison and Migon (1985). Instead of approximating the observational model with a Gaussian one like in the extended Kalman filter, the latent process guides the choice of the conjugate prior on the natural parameter.

REFERENCES:

Klein, (2003), State Space Models for Exponential Family Data, Ph.D. Thesis, Department of Statistics, University of Southern Denmark.
West & Harrison, (1997), Bayesian Forecasting and Dynamic Models, Springer Series in Statistics.
West, Harrison & Migon, (1985),Dynamic Generalized Linear Models and Bayesian Forecasting (with discussion), Journal of the American Statistical association, 80, 73-97.

EXAMPLES:

# Specify a state space model
ss <- ssm(Ft = function(i,x,phi) 
                       {c(1,1)},
          Gt = function(i,x,phi)  
                       {matrix(c(1,0,0,0),ncol=2,byrow=T)},
          Wt = function(i,x,phi)  
                       {diag(2)/25},
          m0 = c(0,0),
          C0 = diag(10,2),
          nt = rep(10,20),
          fam = "binomial",
          link = "logit")

# Simulate observations
ss <- simulate.ssm(ss, n=20)


# Apply the conjugated Kalman filter
ss <- ckal.fil.bin.beta.logit(ss)

# Response function
expit <- function(x) exp(x)/(1+exp(x))

# Make plots
plot(expit(apply(ss$filtered$mt,1,sum)),
     ylab="mean", lty=1, type="l", 
     ylim=c(0,1))
lines(expit(ss$simulated$lambda), lty=2)
points(ss$Yt/ss$nt, pch=16)
legend(0,1,legend=c("Filtered probability",
                    "Simulated probability","Yt/nt"), 
       lty=c(1,2,-1), marks=c(-1,-1,16))
title("Results from ckal.fil.beta.bin.logit")