File: getLamb.Rd

package info (click to toggle)
r-cran-gmm 1.8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,592 kB
  • sloc: fortran: 131; ansic: 25; makefile: 2
file content (100 lines) | stat: -rw-r--r-- 3,919 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
\name{getLamb}

\alias{getLamb}

\title{Solving for the Lagrange multipliers of Generalized Empirical Likelihood (GEL) }

\description{
 It computes the vector of Lagrange multipliers, which maximizes the GEL objective function, using an iterative Newton method.
}
\usage{
getLamb(gt, l0, type = c("EL","ET","CUE", "ETEL", "HD","ETHD","RCUE"),
        tol_lam = 1e-7, maxiterlam = 100, 
	tol_obj = 1e-7, k = 1, method = c("nlminb", "optim", "iter", "Wu"),
        control = list())
}
\arguments{
\item{gt}{A \eqn{n \times q} matrix with typical element \eqn{g_i(\theta,x_t)}}

\item{l0}{Vector of starting values for lambda}

\item{type}{"EL" for empirical likelihood, "ET" for exponential tilting,
  "CUE" for continuous updated estimator, and "HD" for Hellinger
  Distance. See details for "ETEL" and "ETHD". "RCUE" is a restricted
  version of "CUE" in which the probabilities are bounded below by
  zero. In that case, an analytical Kuhn-Tucker method is used to find
  the solution.}

\item{tol_lam}{Tolerance for \eqn{\lambda} between two iterations. The
algorithm stops when \eqn{\|\lambda_i -\lambda_{i-1}\|} reaches
\code{tol_lam} }

\item{maxiterlam}{The algorithm stops if there is no convergence after
"maxiterlam" iterations.}

\item{tol_obj}{Tolerance for the gradiant of the objective function. The
algorithm returns a non-convergence message if \eqn{\max(|gradiant|)}
does not reach \code{tol_obj}. It helps the \code{gel} algorithm to
select the right space to look for \eqn{\theta}}

\item{k}{It represents the ratio k1/k2, where
\eqn{k1=\int_{-\infty}^{\infty} k(s)ds} and
\eqn{k2=\int_{-\infty}^{\infty} k(s)^2 ds}. See Smith(2004).}

\item{method}{The iterative procedure uses a Newton method for solving
  the FOC. It i however recommended to use \code{optim} or
  \code{nlminb}. If type is set to "EL" and method to "optim",
  \code{\link{constrOptim}} is called to prevent \eqn{log(1-gt'\lambda)}
  from producing NA. The gradient and hessian is provided to
  \code{nlminb} which speed up the convergence. The latter is therefore
  the default value. "Wu" is for "EL" only. It uses the algorithm of Wu
  (2005). The value of \code{method} is ignored for "CUE" because in
  that case, the analytical solution exists.}

\item{control}{Controls to send to \code{\link{optim}},
\code{\link{nlminb}} or \code{\link{constrOptim}}} } \details{ It solves
the problem \eqn{\max_{\lambda} \frac{1}{n}\sum_{t=1}^n
\rho(gt'\lambda)}. For the type "ETEL", it is only used by
\code{\link{gel}}. In that case \eqn{\lambda} is obtained by maximizing
\eqn{\frac{1}{n}\sum_{t=1}^n \rho(gt'\lambda)}, using
\eqn{\rho(v)=-\exp{v}} (so ET) and \eqn{\theta} by minimizing the same
equation but with \eqn{\rho(v)-\log{(1-v)}}. To avoid NA's,
\code{\link{constrOptim}} is used with the restriction \eqn{\lambda'g_t
< 1}. The type "ETHD" is experimental and proposed by Antoine-Dovonon
(2015). The paper is not yet available.  }

\value{
lambda: A \eqn{q\times 1} vector of Lagrange multipliers which solve the system of equations given above.
\code{conv}: Details on the type of convergence.
 }

\references{
Newey, W.K. and Smith, R.J. (2004), Higher Order Properties of GMM and 
Generalized Empirical Likelihood Estimators. \emph{Econometrica}, \bold{72}, 219-255.

Smith, R.J. (2004), GEL Criteria for Moment Condition Models. \emph{Working paper, CEMMAP}.

Wu, C. (2005), Algorithms and R codes for the pseudo empirical
likelihood method in survey sampling.
\emph{Survey Methodology}, \bold{31}(2), page 239.

}

\examples{
g <- function(tet,x)
	{
	n <- nrow(x)
	u <- (x[7:n] - tet[1] - tet[2]*x[6:(n-1)] - tet[3]*x[5:(n-2)])
	f <- cbind(u, u*x[4:(n-3)], u*x[3:(n-4)], u*x[2:(n-5)], u*x[1:(n-6)])
	return(f)
	}
n = 500
phi<-c(.2, .7)
thet <- 0.2
sd <- .2
x <- matrix(arima.sim(n = n, list(order = c(2, 0, 1), ar = phi, ma = thet, sd = sd)), ncol = 1)
gt <- g(c(0,phi),x)
getLamb(gt, type = "EL",method="optim")
}