Ken Knoblauch wrote on 3/9/2005 10:27 AM:
Hi,
I'm trying to calculate the value of the variable, dp, below, in the argument to the integral of dnorm(x-dp) * pnorm(x)^(m-1). This corresponds to the estimate of the sensitivity of an observer in an m-alternative forced choice experiment, given the probability of a correct response, Pc, a Gaussian assumption for the noise and no bias. The function that I wrote below gives me an error:
Error in f(x, ...) : recursive default argument reference
The problem seems to be at the statement using uniroot, because the furntion est.dp works fine outside of the main function. I've been using R for awhile but there are still many nuances about the scoping and the use of environments that I'm weak on and would like to understand better. I would appreciate any suggestions or solutions that anyone might offer for fixing my error. Thank you.
dprime.mAFC <- function(Pc, m) {
est.dp <- function(dp, Pc = Pc, m = m) {
pr <- function(x, dpt = dp, m0 = m) {
dnorm(x - dpt) * pnorm(x)^(m0 - 1)
}
Pc - integrate(pr, lower = -Inf, upper = Inf, dpt = dp, m0 = m)$value
}
dp.res <- uniroot(est.dp, interval = c(0,5), Pc = Pc, m = m)
dp.res$root
}
Ken,
Look at the argument list for ?uniroot and think "partial matching". You're "m" is being interpretted for "maxiter". Simply change to
dp.res <- uniroot(est.dp, interval = c(0,5), Pc = Pc, m0 = m)
and in other places for consistency and the error goes away. Of course, since you gave no working example, I'm not sure if other errors are present that I'm missing.
--sundar
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html