GMMStuff/R/iterative.GMM.R

40 lines
1.1 KiB
R
Raw Normal View History

2014-03-04 03:18:26 +00:00
# Iterative GMM method
2014-03-03 01:20:34 +00:00
#
2014-03-04 03:18:26 +00:00
# Author: Francois Pelletier
#
# LGPL-3.0
2014-03-03 01:20:34 +00:00
###############################################################################
2014-03-04 03:18:26 +00:00
#' Iterative GMM method
#'
2014-03-03 01:20:34 +00:00
#' @param start Starting values for the parameters and lagrangian
#' @param conditions.vector Vector of moment conditions
#' @param data Individual data sample
2014-03-03 01:20:34 +00:00
#' @param W Weighting matrix
2014-03-08 05:41:05 +00:00
#' @param ... Functions of the vector of moment conditions
2014-03-03 01:20:34 +00:00
#' @param max.iter Maximum number of iterations
#' @param epsilon Minimum precision level
#' @return A list containing the optimized vector of parameter and corresponding covariance matrix
#' @export iterative.GMM
2014-03-03 01:20:34 +00:00
#' @author François Pelletier
2014-03-08 05:41:05 +00:00
iterative.GMM <- function(start,conditions.vector,data,W,...,max.iter=50,epsilon=1E-6)
2014-03-03 01:20:34 +00:00
{
2014-03-08 05:41:05 +00:00
theta1 <- optim.GMM(start,conditions.vector,data,W,...)
2014-03-03 01:20:34 +00:00
i <- 1
repeat
{
2014-03-08 05:41:05 +00:00
theta2 <- optim.GMM(theta1,conditions.vector,data,W,...)
S <- covariance.GMM(conditions.vector,param,data,...)
2014-03-03 01:20:34 +00:00
if(sqrt(sum((theta1-theta2)^2))<epsilon)
return(list(par=theta2,cov=S))
else if (i>max.iter)
stop("Iterative GMM does not converge")
else
{
theta1 <- theta2
i <- i+1
}
}
}