1
0
Fork 0
mirror of https://github.com/prise6/aVirtualTwins.git synced 2024-05-15 21:46:33 +02:00

Added description and roxygen comments

This commit is contained in:
prise6 2015-06-11 09:32:10 +02:00
parent fd2f5a0008
commit abfded6c96
13 changed files with 177 additions and 58 deletions

View file

@ -15,7 +15,7 @@ Suggests:
randomForest, randomForest,
caret caret
Depends: Depends:
R (>= 3.2.0), R (>= 3.0.0),
methods methods
Collate: Collate:
'VirtualTwins.R' 'VirtualTwins.R'

View file

@ -15,9 +15,12 @@
#' #'
#' @return vector \eqn{E(Y=1)} #' @return vector \eqn{E(Y=1)}
#' #'
#'
#' @include setClass.R #' @include setClass.R
#' @importClassesFrom party RandomForest #' @importClassesFrom party RandomForest
#' #'
#' @name VT.predict
#'
setGeneric("VT.predict", setGeneric("VT.predict",
function(rfor, newdata, type){standardGeneric("VT.predict")} function(rfor, newdata, type){standardGeneric("VT.predict")}
) )

View file

@ -1,17 +1,47 @@
# TREES COMPUTATIONS ------------------------------------------------------ #' Tree to find subgroup
#'
#' An abstract reference class to compute tree #' An abstract reference class to compute tree
#' #'
#' @include difft.R setClass.R #' \code{VT.tree.class} and \code{VT.tree.reg} are children of \code{VT.tree}.
#' \code{VT.tree.class} and \code{VT.tree.reg} try to find a strong association
#' between \code{difft} (in \code{VT.difft} object) and RCT variables.
#' #'
#' @field vt.difft VT.difft object #' In \code{VT.tree.reg}, a regression tree is computed on \code{difft} values.
#' @field outcome vector #' Then, thanks to the \code{threshold} it flags leafs of the \code{tree} which
#' @field threshold numeric Threshold for difft (c) #' are above the \code{threshold} (when \code{sens} is ">"). Or it flags leafs
#' @field screening logical TRUE if using varimp (default is VT.object screening field) #' which are below the \code{threshold} (when \code{sens} = "<").
#' @field sens character Sens can be ">" (default) or "<". Meaning : difft > threshold or difft < threshold #'
#' In \code{VT.tree.class}, it first flags \code{difft} above or below
#' (depending on the \code{sens}) the given \code{threshold}. Then a
#' classification tree is computed to find which variables explain flagged
#' \code{difft}.
#'
#' To sum up, \code{VT.tree} try to understand which variables are associated
#' with a big change of \code{difft}.
#'
#' Results are shown with \code{getRules()} function. \code{only.leaf} parameter
#' allows to obtain only the leaf of the \code{tree}. \code{only.fav} parameter
#' select only favorable nodes. \code{tables} shows incidence table of the rule.
#' \code{verbose} allow \code{getRules()} to be quiet. And \code{compete} show
#' also rules with \code{maxcompete} competitors from the \code{tree}.
#'
#' @include difft.R setClass.R
#'
#' @field vt.difft \code{VT.difft} object
#' @field outcome outcome vector from \code{rpart} function
#' @field threshold numeric Threshold for difft calculation (c)
#' @field screening Logical. TRUE if using varimp. Default is VT.object
#' screening field
#' @field sens character Sens can be ">" (default) or "<". Meaning :
#' \code{difft} > \code{threshold} or \code{difft} < \code{threshold}
#' @field name character Names of the tree #' @field name character Names of the tree
#' @field tree rpart Rpart object to construct the tree #' @field tree rpart Rpart object to construct the tree
#' @field Ahat vector Indicator of beglonging to Ahat #' @field Ahat vector Indicator of beglonging to Ahat
#' #'
#' @seealso \code{\link{VT.tree.reg}}, \code{\link{VT.tree.class}}
#'
#' @name VT.tree
#'
#' @import methods #' @import methods
VT.tree <- setRefClass( VT.tree <- setRefClass(
Class = "VT.tree", Class = "VT.tree",
@ -29,7 +59,7 @@ VT.tree <- setRefClass(
), ),
methods = list( methods = list(
initialize = function(vt.difft = VT.difft(), threshold = 0.05, sens = ">", screening = NULL){ initialize = function(vt.difft = VT.difft(), threshold = 0.05, sens = ">", screening = NULL){
.self$vt.difft <- vt.difft .self$vt.difft <- vt.difft
.self$threshold <- threshold .self$threshold <- threshold
@ -41,6 +71,7 @@ VT.tree <- setRefClass(
}, },
getData = function(){ getData = function(){
"Return data used for tree computation"
d <- .self$vt.difft$vt.object$data[, 3:ncol(.self$vt.difft$vt.object$data)] d <- .self$vt.difft$vt.object$data[, 3:ncol(.self$vt.difft$vt.object$data)]
if(.self$screening == T){ if(.self$screening == T){
@ -55,6 +86,7 @@ VT.tree <- setRefClass(
}, },
computeNameOfTree = function(type){ computeNameOfTree = function(type){
"return label of response variable of the tree"
return(type) return(type)
if(.self$threshold < 0 ){ if(.self$threshold < 0 ){
threshold.chr <- paste0("m", -.self$threshold) threshold.chr <- paste0("m", -.self$threshold)
@ -66,11 +98,13 @@ VT.tree <- setRefClass(
return(paste(type, tmp[1], tmp[2], sep = "")) return(paste(type, tmp[1], tmp[2], sep = ""))
}, },
run = function(){ run = function(...){
"Compute tree with rpart parameters"
if(length(.self$vt.difft$difft) == 0) stop("VT.difft::difft is an empty vector") if(length(.self$vt.difft$difft) == 0) stop("VT.difft::difft is an empty vector")
}, },
getInfos = function(){ getInfos = function(){
"Return infos about tree"
cat("\n") cat("\n")
cat(sprintf("Threshold = %0.4f", .self$threshold)) cat(sprintf("Threshold = %0.4f", .self$threshold))
cat("\n") cat("\n")
@ -86,6 +120,7 @@ VT.tree <- setRefClass(
}, },
getRules = function(only.leaf = F, only.fav = F, tables = T, verbose = T, compete = F){ getRules = function(only.leaf = F, only.fav = F, tables = T, verbose = T, compete = F){
"Retrun subgroups discovered by the tree. See details."
# On crée le tableau des competitors # On crée le tableau des competitors
if(isTRUE(compete)) if(isTRUE(compete))
@ -226,6 +261,7 @@ VT.tree <- setRefClass(
}, },
createCompetitors = function(){ createCompetitors = function(){
"Create competitors table"
fr <- .self$tree$frame fr <- .self$tree$frame
fr <- fr[fr$var != "<leaf>",] fr <- fr[fr$var != "<leaf>",]
@ -253,10 +289,12 @@ VT.tree <- setRefClass(
}, },
getIncidences = function(rule, rr.snd = T){ getIncidences = function(rule, rr.snd = T){
"Return incidence of the rule"
return(VT.incidences(.self$vt.difft, rule, rr.snd)) return(VT.incidences(.self$vt.difft, rule, rr.snd))
}, },
getAhatIncidence = function(){ getAhatIncidence = function(){
"Return Ahat incidence"
if(sum(.self$Ahat)!=0){ if(sum(.self$Ahat)!=0){
table.inc <- VT.incidences(vt.object = .self$vt.difft$vt.object, select = .self$Ahat) table.inc <- VT.incidences(vt.object = .self$vt.difft$vt.object, select = .self$Ahat)
@ -279,6 +317,7 @@ VT.tree <- setRefClass(
}, },
getAhatQuality = function(){ getAhatQuality = function(){
"Return Ahat quality"
resub <- vt.getQAOriginal(.self$Ahat, response = .self$vt.difft$vt.object$getY(), trt = .self$vt.difft$vt.object$data[, 2]) resub <- vt.getQAOriginal(.self$Ahat, response = .self$vt.difft$vt.object$getY(), trt = .self$vt.difft$vt.object$data[, 2])

View file

@ -1,9 +1,13 @@
# VT.TREE.CLASS ----------------------------------------------------------- # VT.TREE.CLASS -----------------------------------------------------------
#' A reference class to compute subgroups by classifiation tree #' Classification tree to find subgroups
#'
#' See \code{\link{VT.tree}}
#' #'
#' @include tree.R #' @include tree.R
#' #'
#' @name VT.tree.class
#'
#' @import methods #' @import methods
VT.tree.class <- setRefClass( VT.tree.class <- setRefClass(
Class = "VT.tree.class", Class = "VT.tree.class",
@ -24,6 +28,7 @@ VT.tree.class <- setRefClass(
}, },
run = function(...){ run = function(...){
"VT.tree.class:run(...) Compute classification tree with rpart parameters"
callSuper() callSuper()
data <- .self$getData() data <- .self$getData()

View file

@ -1,8 +1,12 @@
# VT.TREE.REG ------------------------------------------------------------- # VT.TREE.REG -------------------------------------------------------------
#' Regression tree to find subgroups
#'
#' See \code{\link{VT.tree}}
#'
#' @include tree.R #' @include tree.R
#' A reference class to compute subgroups by regression tree with rpart package
#' #'
#' @name VT.tree.reg
VT.tree.reg <- setRefClass( VT.tree.reg <- setRefClass(
Class = "VT.tree.reg", Class = "VT.tree.reg",
@ -20,7 +24,6 @@ VT.tree.reg <- setRefClass(
run = function(...){ run = function(...){
callSuper() callSuper()
data <- .self$getData() data <- .self$getData()
.self$tree <- rpart::rpart(as.formula(paste(.self$name, ".", sep = "~")), data = data, ...) .self$tree <- rpart::rpart(as.formula(paste(.self$name, ".", sep = "~")), data = data, ...)

View file

@ -20,7 +20,7 @@ favorable outcome is 1. Then, \deqn{difft_i = twin1_i - twin2_i IF T_i =
\item{\code{twin1}}{vector of \eqn{E(Y|T = real treatment)}} \item{\code{twin1}}{vector of \eqn{E(Y|T = real treatment)}}
\item{\code{twin2}}{vector of \eqn{E(Y|T = anoher treatment)}} \item{\code{twin2}}{vector of \eqn{E(Y|T = another treatment)}}
\item{\code{difft}}{vector of difference between twin1 and twin2} \item{\code{difft}}{vector of difference between twin1 and twin2}
}} }}

View file

@ -22,7 +22,7 @@ An abstract reference class to compute twin via random forests
\item{\code{getFullData()}}{Return twin1, twin2 and difft in column} \item{\code{getFullData()}}{Return twin1, twin2 and difft in column}
\item{\code{run()}}{Compute twin1 and twin2 computation. Switch treatment if necessary.} \item{\code{run()}}{Compute twin1 and twin2 estimation. Switch treatment if necessary.}
}} }}
\seealso{ \seealso{
\code{\link{VT.difft}}, \code{\link{VT.forest.one}}, \code{\link{VT.forest.double}} \code{\link{VT.difft}}, \code{\link{VT.forest.one}}, \code{\link{VT.forest.double}}

View file

@ -31,7 +31,7 @@ interactions}
\section{Methods}{ \section{Methods}{
\describe{ \describe{
\item{\code{run()}}{Compute twin1 and twin2 computation. Switch treatment if necessary.} \item{\code{run()}}{Compute twin1 and twin2 estimation. Switch treatment if necessary.}
}} }}
\seealso{ \seealso{
\code{\link{VT.difft}}, \code{\link{VT.forest}}, \code{\link{VT.difft}}, \code{\link{VT.forest}},

View file

@ -1,30 +0,0 @@
% Generated by roxygen2 (4.1.1): do not edit by hand
% Please edit documentation in R/tree.R
\docType{class}
\name{VT.tree-class}
\alias{VT.tree}
\alias{VT.tree-class}
\title{An abstract reference class to compute tree}
\description{
An abstract reference class to compute tree
}
\section{Fields}{
\describe{
\item{\code{vt.difft}}{VT.difft object}
\item{\code{outcome}}{vector}
\item{\code{threshold}}{numeric Threshold for difft (c)}
\item{\code{screening}}{logical TRUE if using varimp (default is VT.object screening field)}
\item{\code{sens}}{character Sens can be ">" (default) or "<". Meaning : difft > threshold or difft < threshold}
\item{\code{name}}{character Names of the tree}
\item{\code{tree}}{rpart Rpart object to construct the tree}
\item{\code{Ahat}}{vector Indicator of beglonging to Ahat}
}}

80
man/VT.tree.Rd Normal file
View file

@ -0,0 +1,80 @@
% Generated by roxygen2 (4.1.1): do not edit by hand
% Please edit documentation in R/tree.R
\docType{class}
\name{VT.tree}
\alias{VT.tree}
\title{Tree to find subgroup}
\description{
An abstract reference class to compute tree
}
\details{
\code{VT.tree.class} and \code{VT.tree.reg} are children of \code{VT.tree}.
\code{VT.tree.class} and \code{VT.tree.reg} try to find a strong association
between \code{difft} (in \code{VT.difft} object) and RCT variables.
In \code{VT.tree.reg}, a regression tree is computed on \code{difft} values.
Then, thanks to the \code{threshold} it flags leafs of the \code{tree} which
are above the \code{threshold} (when \code{sens} is ">"). Or it flags leafs
which are below the \code{threshold} (when \code{sens} = "<").
In \code{VT.tree.class}, it first flags \code{difft} above or below
(depending on the \code{sens}) the given \code{threshold}. Then a
classification tree is computed to find which variables explain flagged
\code{difft}.
To sum up, \code{VT.tree} try to understand which variables are associated
with a big change of \code{difft}.
Results are shown with \code{getRules()} function. \code{only.leaf} parameter
allows to obtain only the leaf of the \code{tree}. \code{only.fav} parameter
select only favorable nodes. \code{tables} shows incidence table of the rule.
\code{verbose} allow \code{getRules()} to be quiet. And \code{compete} show
also rules with \code{maxcompete} competitors from the \code{tree}.
}
\section{Fields}{
\describe{
\item{\code{vt.difft}}{\code{VT.difft} object}
\item{\code{outcome}}{outcome vector from \code{rpart} function}
\item{\code{threshold}}{numeric Threshold for difft calculation (c)}
\item{\code{screening}}{Logical. TRUE if using varimp. Default is VT.object
screening field}
\item{\code{sens}}{character Sens can be ">" (default) or "<". Meaning :
\code{difft} > \code{threshold} or \code{difft} < \code{threshold}}
\item{\code{name}}{character Names of the tree}
\item{\code{tree}}{rpart Rpart object to construct the tree}
\item{\code{Ahat}}{vector Indicator of beglonging to Ahat}
}}
\section{Methods}{
\describe{
\item{\code{computeNameOfTree(type)}}{return label of response variable of the tree}
\item{\code{createCompetitors()}}{Create competitors table}
\item{\code{getAhatIncidence()}}{Return Ahat incidence}
\item{\code{getAhatQuality()}}{Return Ahat quality}
\item{\code{getData()}}{Return data used for tree computation}
\item{\code{getIncidences(rule, rr.snd = T)}}{Return incidence of the rule}
\item{\code{getInfos()}}{Return infos about tree}
\item{\code{getRules(only.leaf = F, only.fav = F, tables = T, verbose = T,
compete = F)}}{Retrun subgroups discovered by the tree. See details.}
\item{\code{run(...)}}{Compute tree with rpart parameters}
}}
\seealso{
\code{\link{VT.tree.reg}}, \code{\link{VT.tree.class}}
}

View file

@ -1,11 +0,0 @@
% Generated by roxygen2 (4.1.1): do not edit by hand
% Please edit documentation in R/tree.class.R
\docType{class}
\name{VT.tree.class-class}
\alias{VT.tree.class}
\alias{VT.tree.class-class}
\title{A reference class to compute subgroups by classifiation tree}
\description{
A reference class to compute subgroups by classifiation tree
}

15
man/VT.tree.class.Rd Normal file
View file

@ -0,0 +1,15 @@
% Generated by roxygen2 (4.1.1): do not edit by hand
% Please edit documentation in R/tree.class.R
\docType{class}
\name{VT.tree.class}
\alias{VT.tree.class}
\title{Classification tree to find subgroups}
\description{
See \code{\link{VT.tree}}
}
\section{Methods}{
\describe{
\item{\code{run(...)}}{Compute tree with rpart parameters}
}}

15
man/VT.tree.reg.Rd Normal file
View file

@ -0,0 +1,15 @@
% Generated by roxygen2 (4.1.1): do not edit by hand
% Please edit documentation in R/tree.reg.R
\docType{class}
\name{VT.tree.reg}
\alias{VT.tree.reg}
\title{Regression tree to find subgroups}
\description{
See \code{\link{VT.tree}}
}
\section{Methods}{
\describe{
\item{\code{run(...)}}{Compute tree with rpart parameters}
}}