rollback {arvoRe}R Documentation

Usage

rollback(TheTree)

Arguments

TheTree

Examples

##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--    or do  help(data=index)  for the standard data sets.

## The function is currently defined as
function(TheTree) {
        Matrixset <- convert2matrix(TheTree)
        
        x <- Matrixset$x
        probMAT <- Matrixset$probMAT
        utilityMAT <- Matrixset$utilityMAT
        effectivenessMAT <- Matrixset$effectivenessMAT
        
        num.col <- dim(probMAT)[2]
        num.lin <- dim(probMAT)[1]
        
        ans.ce <- matrix(0, num.lin, num.col)
        ans.cost <- matrix(0, num.lin, num.col)
        ans.effectiveness <- matrix(0, num.lin, num.col)
        
        for (i in 1:(num.col)) {
                nodes <- as.numeric(names(table(x[,i])))
                for (j in nodes) {
                        position <- which(x[,i] == j)
                        sub.x <- x[position, i:num.col]
                        lines.sub <- length(position)
                        column.sub <- num.col - i + 1
                        sub.x <- matrix(sub.x, lines.sub, column.sub)
                        sub.prob <- probMAT[position, i:num.col]
                        sub.prob <- matrix(sub.prob, lines.sub, column.sub)
                        sub.util <- utilityMAT[position, i:num.col]
                        sub.util <- matrix(sub.util, lines.sub, column.sub)
                        sub.effectiveness <- effectivenessMAT[position, i:num.col]
                        sub.effectiveness <- matrix(sub.effectiveness, lines.sub, column.sub)
                        
                        if (is.null(sub.prob)) {
                                sub.prob[,1] <- 1
                                sub.util[,1] <- 0
                                sub.effectiveness[,1] <- 1
                                val.expected.ce <- sum ( apply(sub.prob, 1, prod) * apply(sub.util/sub.effectiveness, 1, sum) )
                                val.expected.cost <- sum ( apply(sub.prob, 1, prod) * apply(sub.util, 1, sum) )
                                val.expected.effectiveness <- sum ( apply(sub.prob, 1, prod) * apply(sub.effectiveness, 1, sum) )
                        } else {
                                sub.prob[,1] <- 1
                                val.expected <- sum ( apply(sub.prob,1,prod) * apply(sub.util/sub.effectiveness,1,sum) )
                                val.expected.cost <- sum ( apply(sub.prob, 1, prod) * apply(sub.util, 1, sum) )
                                val.expected.effectiveness <- sum ( apply(sub.prob, 1, prod) * apply(sub.effectiveness, 1, sum) )
                        }
                        ans.ce[position, i] <- val.expected
                        ans.cost[position, i] <- val.expected.cost
                        ans.effectiveness[position, i] <- val.expected.effectiveness
                }       
        }
        ans <- list("CE" = ans.ce, "Cost" = ans.cost, "Effectiveness" = ans.effectiveness)
        return(ans)
  }

[Package arvoRe version 0.1.7 Index]