[Analogue-commits] r140 - pkg/R
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sun Jul 19 20:57:31 CEST 2009
Author: gsimpson
Date: 2009-07-19 20:57:31 +0200 (Sun, 19 Jul 2009)
New Revision: 140
Modified:
pkg/R/predict.wa.R
pkg/R/tran.R
Log:
more robust cube root and rootroot transformations
Modified: pkg/R/predict.wa.R
===================================================================
--- pkg/R/predict.wa.R 2009-06-14 12:12:21 UTC (rev 139)
+++ pkg/R/predict.wa.R 2009-07-19 18:57:31 UTC (rev 140)
@@ -133,6 +133,11 @@
} else if (identical(CV, "nfold")) {
boot.pred <- matrix(0, ncol = n.boot, nrow = n.fossil)
oob.pred <- matrix(NA, ncol = n.boot, nrow = n.train)
+ want <- names(object$wa.optima) %in% colnames(newdata)
+ want <- names(object$wa.optima)[want]
+ nr.new <- NROW(newdata)
+ nc <- NCOL(X)
+ nc.want <- length(want)
ind <- rep(1:nfold, length = n.train)
for(i in seq_len(n.boot)) {
if(verbose && ((i %% 100) == 0)) {
@@ -143,32 +148,54 @@
pind <- sample(ind)
for (k in seq_len(nfold)) {
sel <- pind != k
+ nr <- NROW(X[sel, , drop = FALSE]) ## number of samples
+ nr.oob <- NROW(X[-sel, , drop = FALSE])
wa.optima <- w.avg(X[sel,], ENV[sel])
+ ## CV for the training set
+ if(object$tol.dw) {
+ tol <- w.tol(X[sel, , drop = FALSE], ENV[-sel],
+ wa.optima, useN2 = useN2)
+ ## fix up problematic tolerances
+ tol <- fixUpTol(tol, O$na.tol, O$small.tol,
+ O$min.tol, O$f, ENV[-sel])
+ wa.env <- WATpred(X[sel, , drop = FALSE],
+ wa.optima, tol, nr, nc)
+ pred <- WATpred(X[-sel, ,drop=FALSE], wa.optima,
+ tol, nr.oob, nc)
+ } else {
+ wa.env <- WApred(X[sel, ,drop = FALSE], wa.optima)
+ pred <- WApred(X[-sel, ,drop=FALSE], wa.optima)
+ }
## do the model bits
- ones <- rep(1, length = length(wa.optima))
- miss <- is.na(wa.optima)
- ones[miss] <- 0
- wa.optima[miss] <- 0
- rowsum <- X[sel,] %*% ones
- wa.env <- (X[sel,] %*% wa.optima) / rowsum
- deshrink.mod <- deshrink(ENV[sel], wa.env,
- Dtype)
+ #ones <- rep(1, length = length(wa.optima))
+ #miss <- is.na(wa.optima)
+ #ones[miss] <- 0
+ #wa.optima[miss] <- 0
+ #rowsum <- X[sel,] %*% ones
+ #wa.env <- (X[sel,] %*% wa.optima) / rowsum
+ deshrink.mod <- deshrink(ENV[sel], wa.env, Dtype)
wa.env <- deshrink.mod$env
coefs <- coef(deshrink.mod) #$coef
## if we want sample specific errors or
## model performance stats
- rowsum <- X[!sel,] %*% ones
- pred <- (X[!sel,] %*% wa.optima) / rowsum
+ #rowsum <- X[!sel,] %*% ones
+ #pred <- (X[!sel,] %*% wa.optima) / rowsum
oob.pred[!sel,i] <- deshrinkPred(pred, coefs)
## do the prediction step
- want <- names(wa.optima) %in% colnames(newdata)
- want <- names(wa.optima)[want]
- ones <- rep(1, length = length(want))
- miss <- miss[want]
- ones[miss] <- 0
- rowsum <- newdata[,want] %*% ones
- pred <- (newdata[,want] %*% wa.optima[want]) /
- rowsum
+ #want <- names(wa.optima) %in% colnames(newdata)
+ #want <- names(wa.optima)[want]
+ #ones <- rep(1, length = length(want))
+ #miss <- miss[want]
+ #ones[miss] <- 0
+ #rowsum <- newdata[,want] %*% ones
+ #pred <- (newdata[,want] %*% wa.optima[want]) /
+ # rowsum
+ pred <- if(object$tol.dw) {
+ WATpred(newdata[,want], wa.optima[want],
+ tol[want], nr.new, nc.want)
+ } else {
+ WApred(newdata[,want], wa.optima[want])
+ }
boot.pred[,i] <- deshrinkPred(pred, coefs)
}
}
Modified: pkg/R/tran.R
===================================================================
--- pkg/R/tran.R 2009-06-14 12:12:21 UTC (rev 139)
+++ pkg/R/tran.R 2009-07-19 18:57:31 UTC (rev 140)
@@ -19,8 +19,8 @@
} else {
x <- switch(method,
sqrt = sqrt(x),
- cubert = x^(1/3),
- rootroot = x^(1/4),
+ cubert = sign(x) * exp(log(abs(x)) / 3), #x^(1/3),
+ rootroot = sign(x) * exp(log(abs(x)) / 3), #x^(1/4),
log = {x <- sweep(x, 2, a, "*")
x <- sweep(x, 2, b, "+")
log(x, base = base)} ,
More information about the Analogue-commits
mailing list