mirror of
https://github.com/prise6/aVirtualTwins.git
synced 2024-05-05 20:23:10 +02:00
55 lines
1.6 KiB
R
55 lines
1.6 KiB
R
|
|
#' Difference between twins
|
|
#'
|
|
#' A reference class to represent difference between twin1 and twin2
|
|
#'
|
|
#' Difft are calculated depending on the favorable outcome chosen. It is the
|
|
#' second level of the outcome. For example, if the outcome is 0 and 1, the
|
|
#' favorable outcome is 1. Then, \deqn{difft_i = twin1_i - twin2_i IF T_i =
|
|
#' 1} \deqn{ difft_i = twin2_i - twin1_i IF T_i = 0}
|
|
#'
|
|
#' @include object.R
|
|
#'
|
|
#' @field vt.object VT.object (refClass) representing data
|
|
#' @field twin1 vector of \eqn{E(Y|T = real treatment)}
|
|
#' @field twin2 vector of \eqn{E(Y|T = another treatment)}
|
|
#' @field difft vector of difference between twin1 and twin2
|
|
#'
|
|
#' @name VT.difft
|
|
#'
|
|
#' @export VT.difft
|
|
#'
|
|
#' @seealso \code{\link{VT.forest}}, \code{\link{VT.forest.one}}, \code{\link{VT.forest.double}}
|
|
#'
|
|
#' @import methods
|
|
VT.difft <- setRefClass(
|
|
Class = "VT.difft",
|
|
|
|
fields = list(
|
|
vt.object = "VT.object",
|
|
twin1 = "vector",
|
|
twin2 = "vector",
|
|
difft = "vector"
|
|
),
|
|
|
|
methods = list(
|
|
initialize = function(vt.object = VT.object(), ...){
|
|
|
|
.self$vt.object <- vt.object
|
|
|
|
.self$twin1 <- .self$twin2 <- rep(NA, nrow(vt.object$data))
|
|
|
|
.self$initFields(...)
|
|
},
|
|
|
|
computeDifft = function(){
|
|
"Compute difference between twin1 and twin2. See details."
|
|
|
|
if(sum(is.na(.self$twin1)) != 0 | sum(is.na(.self$twin2)) != 0 ) stop("Twins must be valid")
|
|
|
|
.self$difft <- ifelse(.self$vt.object$data[, 2] == 1, .self$twin1 - .self$twin2, .self$twin2 - .self$twin1)
|
|
|
|
return(invisible(.self$difft)) # To see later
|
|
}
|
|
)
|
|
) |