R-help - This code iterates over a function with 2 free parameters to find a list of values (which are the number of incorrect predictions for a computational model). I want to find the values of i,e when there is the minimum number of incorrect predictions. In other words, the value of "i" and "e" when variable "thesum" is at the lowest possible number. The bestDeltas variable at the bottom worked with 1 free parameter. structure(list(grid = c(3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L, 3162L), RepNum = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L ), stimbinary = c(1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), choice = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1), accuracy = c(0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 0L), actualcorrect = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1), correctstim = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), choseright = c(0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1), reward = c(0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L), resp = structure(c(5L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L, 3L, 5L, 3L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 3L), .Label = c("f11.bmp", "f13.bmp", "f14.bmp", "f4.bmp", "f7.bmp", "f9.bmp"), class "factor")), .Names = c("grid", "RepNum", "stimbinary", "choice", "accuracy", "actualcorrect", "correctstim", "choseright", "reward", "resp"), row.names = c(NA, 20L), class = "data.frame") install.packages("Hmisc", dependencies = T) library(Hmisc) bestDeltas= 0; betterThanChance = 0; minErr = 0 fitProp<- 0 thresholded_test <- 0 calc.probs <- function(delta,gamma){ # initial starting probabilities thList = 0 block = 0 # finMatrix <- 0 for (i in 1:length(dat2$choice)) { if (dat2$RepNum[i] != block) { pL = 0.5 pR = 0.5 block = dat2$RepNum[i] certState = 0.5 } # Markov Transitions pL <- pL*(1-delta) + pR*delta pR <- 1-pL # Apply feedback #denom <- p(F|L,C) * p(L) + p(F|R,C) * p(R) pflc <- ifelse(dat2$choice[i] == dat2$reward[i], .8, .2) pfrc <- 1 - pflc denom <- pflc * pL + pfrc * pR # What's the new belief given observation posteriorL <- pflc * pL/denom posteriorR <- 1-posteriorL pL <- posteriorL pR <- posteriorR certState = gamma * certState + (1 - gamma) * pL thList[i] = ifelse(certState > 0.55, 1, ifelse(certState < 0.45, 0, ifelse(pL > 0.5, 1, 0))) } return(thList) } thesum=0 j = 1 minx = 0.01; maxx = 0.5; incx = 0.05; x = seq(minx, maxx, incx) miny = 0.0; maxy = 1; incy = 0.05; y = seq(miny, maxy, incy) for (i in x) { for (e in y) { thresholded = calc.probs(i, e) diff <- abs(dat2$choice - Lag(thresholded)) diff = ifelse(is.na(diff), 0, diff) thesum[j] = sum(diff, na.rm = T) j = j + 1 } } minSum = min(thesum) minErr[s] = min(thesum) bestDeltas[s] = min(which(thesum==minSum)) * incx + minx # bestDeltasGammas[s] <- matrix(min(which(thsum==minSum))*inc + min) betterThanChance[s] = sum(pbinom(0:minSum, length(dat2$choice), 0.5)) -- Edward H. Patzelt Research Assistant – TRiCAM Lab University of Minnesota – Psychology/Psychiatry VA Medical Center Office: S355 Elliot Hall - Twin Cities Campus Phone: 612-626-0072 Email: patze003@umn.edu Please consider the environment before printing this email www.psych.umn.edu/research/tricam [[alternative HTML version deleted]]