#' Klein-Spady semiparametric binary response estimator #'
#' Kernel-based semiparametric log likelihood evaluation for the binary response #' model as proposed by Klein and Spady (1993). #'
#' @param b parameter vector #' @param X design matrix #' @param y binary response vector #' @param h kernel bandwidth #' @param k kernel index: 1 for Epanechnikov, 2 for Gaussian, and #' 3 for the 4th order kernel used by Horowitz (1993). #' @param eps trimming tolerance parameter #' @return A list with components: #' item logLik the log likelihood value #' item F trimmed probability estimates #' item sindex single index linear predictor #' @references #' Klein, R.W. and R.H. Spady (1993) An Efficient Semiparametric #' Estimator for Binary Response Models, Econometrica, 61, 387–421, #' @export KleinSpady <- function(b, X, y, h = NULL, k = 1, eps = 1e-20){
Xb <- X %*% b n <- length(y) Pn <- mean(y) K <- function(u) { switch(k, 15/16 * (1-u^2)^2 * (1*(abs(u) <= 1)), dnorm(u), (21/64) * (1- 5*(u/5)^2 + 7*(u/5)^4 - 3*(u/5)^6) * (1*(abs(u)<=5))) } F <- rep(NA, n) for (i in 1:n){ Kz <- K((Xb - Xb[i])/h) F[i] <- crossprod(Kz, y/sum(Kz)) } F[F <= eps] <- eps nF <- 1 - F nF[nF <= eps] <- eps logLik <- sum(y * log(F) + (1-y) * log(nF)) list(logLik = logLik, F = F, sindex = Xb) }