bandwidth_cross_validation: Cross-validation bandwidth for local polymnomial estimator of...

View source: R/bandwidth_cross_validation.R

bandwidth_cross_validationR Documentation

Cross-validation bandwidth for local polymnomial estimator of a psychometric function

Description

This function finds the cross-validation bandwidth for a local polynomial estimate of the psychometric function with specified guessing and lapsing rates.

Usage

bandwidth_cross_validation( r, m, x, H, link = "logit", guessing = 0,
                           lapsing = 0, K = 2, p = 1, ker = "dnorm",
                           maxiter = 50, tol = 1e-6, method = "all")

Arguments

r

number of successes at points x

m

number of trials at points x

x

stimulus levels

H

search interval

link

(optional) name of the link function to be used; default is "logit"

guessing

(optional) guessing rate; default is 0

lapsing

(optional) lapsing rate; default is 0

K

(optional) power parameter for Weibull and reverse Weibull link; default is 2

p

(optional) degree of the polynomial; default is 1

ker

(optional) kernel function for weights; default is "dnorm"

maxiter

(optional) maximum number of iterations in Fisher scoring; default is 50

tol

(optional) tolerance level at which to stop Fisher scoring; default is 1e-6

method

(optional) loss function to be used in cross-validation: choose from: "ISEeta", "ISE", "deviance"; by default all possible values are calculated

Value

⁠h ⁠ cross-validation bandwidth for the chosen "method"; if no "method" is specified, then it has three components: $pscale, $etascale and $deviance

Examples

data("Miranda_Henson")
x = Miranda_Henson$x
r = Miranda_Henson$r
m = Miranda_Henson$m
numxfit <- 199; # Number of new points to be generated minus 1
xfit <- (max(x)-min(x)) * (0:numxfit) / numxfit + min(x)
# Find a cross-validation bandwidth
bwd_min <- min( diff( x ) )
bwd_max <- max( x ) - min( x )
bwd <- bandwidth_cross_validation( r, m, x, c( bwd_min, bwd_max ) )
bwd <- bwd$deviance # Choose the estimate based on cross-validated deviance
pfit <- locglmfit( xfit, r, m, x, bwd )$pfit
# Plot the fitted curve
plot( x, r / m, xlim = c( 0.1, 1.302 ), ylim = c( 0.0165, 0.965 ), type = "p", pch="*" )
lines(xfit, pfit )

modelfree documentation built on May 31, 2023, 7:17 p.m.