####################################################################### # R function for jackknifing ####################################################################### # Last modified: 16.01.2012 ####################################################################### # Warranty: none. ####################################################################### # Contact: Dr. Diego Kuonen, CStat PStat CSci, Statoo Consulting, CH # www.statoo.info - kuonen@statoo.com ####################################################################### JackKnife = function (x, theta, ...) { call = match.call() n = length(x) u = rep(0, n) for (i in 1:n) { u[i] = theta(x[-i], ...) } theta.hat = theta(x, ...) pseudo.values = n*theta.hat - (n-1)*u theta.jack = mean(pseudo.values) jack.se = sqrt(sum((pseudo.values - theta.jack)^2)/(n*(n-1))) # jack.bias = theta.jack - theta.hat jack.bias = (n-1)*(theta.hat - mean(u)) return(list(theta.hat = theta.hat, theta.jack = theta.jack, jack.se = jack.se, jack.bias = jack.bias, leave.one.out.values = u, pseudo.values = pseudo.values, call = call)) } ####################################################################### # Example ####################################################################### # JackKnife(c(10,27,31,40,46,50,52,104,146), median) ####################################################################### # Examples (from help of function "jackknife" from package "bootstrap") ####################################################################### # JackKnife(rnorm(20), mean) # # xdata = matrix(rnorm(30), ncol=2); n = 15 # theta = function(x, xdata){cor(xdata[x, 1],xdata[x, 2])} # JackKnife(1:n, theta, xdata) #######################################################################