diff --git a/07_final_assignment/.RData b/07_final_assignment/.RData index 019e1f3..8d596fd 100644 --- a/07_final_assignment/.RData +++ b/07_final_assignment/.RData Binary files differ diff --git a/07_final_assignment/baboonSimulation.R b/07_final_assignment/baboonSimulation.R index b415679..ed528ff 100644 --- a/07_final_assignment/baboonSimulation.R +++ b/07_final_assignment/baboonSimulation.R @@ -5,6 +5,8 @@ library(parallel) library(doParallel) library(foreach) +library(itsadug) +library(mgcv) enableJIT(3) @@ -459,17 +461,11 @@ #...RUN, MONKEY, RUN! cl <- makeCluster(num.cores) registerDoParallel(cl) - foreach(i=1:num.cores) %dopar% do.experiment(i) -##new version: -#...RUN, MONKEY, RUN! -#registerDoParallel(cores=num.cores) -#foreach(i=1:num.cores) %dopar% do.experiment(i) - ######################################################################################## -#### VISUALIZATION & PLOTTING +#### HARVESTING DATA & VISUALIZATION I ######################################################################################## harvest.data <- function(write.to.file=FALSE, folder="results_backup") { @@ -498,6 +494,8 @@ if(!any(names(data)==value)) { stop("'value' needs to be part of the data.frame") } + v.index = which(names(data)==value) + sequence <- round(sequence, 3) z <- matrix(nrow=length(sequence), ncol=length(sequence)) @@ -506,7 +504,6 @@ alpha <- round(data[i, ]$alpha, 3) beta <- round(data[i, ]$beta, 3) - value <- data[i, ]$value a.index <- get.index(sequence, alpha) b.index <- get.index(sequence, beta) @@ -517,9 +514,8 @@ print(beta) stop("sequence must contain alpha and beta values") } - - z[a.index, b.index] <- data[i, ]$NumWordsLearned - z[b.index, a.index] <- data[i, ]$NumWordsLearned + z[a.index, b.index] <- data[i, v.index] + z[b.index, a.index] <- data[i, v.index] } return(z) } @@ -527,7 +523,6 @@ data = harvest.data(TRUE) - mat1 = matrix(rexp(15*15, rate=.1), ncol=15, nrow=15) conditions <- c("GeneralAccuracy", "WordAccuracy", "NonwordAccuracy") @@ -544,8 +539,65 @@ col = topo.colors(100)) } + ######################################################################################## -#### DATA ANALYSIS +#### MODEL FITTING & VISUALIZATION II +######################################################################################## + +### GeneralAccuracy +m1.g = gam(GeneralAccuracy ~ s(alpha) + s(beta), data=data) +summary(m1) + +m2.g = gam(GeneralAccuracy ~ s(alpha) + s(beta) + ti(alpha, beta), data=data) +summary(m2.g) + +compareML(m1.g, m2.g) +#m1 preferred + +vis.gam(m1.g, plot.type="contour", color="topo", main="GeneralAccuracy") + + + +### WordAccuracy +m1.w = gam(WordAccuracy ~ s(alpha) + s(beta), data=data) +summary(m1.w) + +m2.w = gam(WordAccuracy ~ s(alpha) + s(beta) + ti(alpha, beta), data=data) +summary(m2.w) + +compareML(m1.w, m2.w) +#m1 preferred + +vis.gam(m1.w, plot.type="contour", color="topo", main="WordAccuracy") + + +### NonwordAccuracy +m1.n = gam(NonwordAccuracy ~ s(alpha) + s(beta), data=data) +summary(m1.n) + +m2.n = gam(NonwordAccuracy ~ s(alpha) + s(beta) + ti(alpha, beta), data=data) +summary(m2.n) + +compareML(m1.n, m2.n) +#m1 preferred + +vis.gam(m1.n, plot.type="contour", color="topo", main="NonwordAccuracy") + + +### model criticism +qqnorm(m1.g$residuals) +qqnorm(m1.w$residuals) +qqnorm(m1.n$residuals) +# mostly ok + +acf(resid(m1.g)) +acf(resid(m1.w)) +acf(resid(m1.n)) +# ok + + +######################################################################################## +#### OTHER ANALYSIS SNIPPETS ######################################################################################## @@ -600,36 +652,5 @@ anova(m2, m3) -######################################################################################## -#### IGNORE THIS BLOCK -> unused code -######################################################################################## - - - -res.matrix = matrix(nrow=length(a.seq), ncol=length(b.seq)) -counter = 1 -counter.a = 1 -for( a in a.seq) { - counter.b = 1 - for (b in b.seq) { - res.matrix[counter.a, counter.b] = as.numeric(resultdat[counter, ]$GeneralAccuracy) - counter = counter + 1 - counter.b = counter.b + 1 - } - counter.a = counter.a + 1 -} - -View(res.matrix) - -# TODO: Durchlaufen lassen fuer ca 50k Trials fuer verschiedene alpha, beta zwischen 0 und 1 -# TODO: Plotten der verschiedenen Ergebnisse (num,acc) als heatmap 2d plot. -# TODO: Plotten der Unterschiede zu den Vorgabeaffen und optimale alpha beta fuer diese finden. - -mat1 = matrix(rexp(15*15, rate=.1), ncol=15, nrow=15) -#mat2 = matrix(rexp(200, rate=.1), ncol=50, nrow=50) - -image.plot(mat1, main="Word Accuracy", xlab="alpha", ylab="beta", - useRaster=TRUE, col = topo.colors(100)) - # EOF