Return a warning when g^*=NA
osofr opened this issue · comments
Sometimes the user may set the intervention node (g^*) to NA
. If this value is actually being applied, then we should produce a warning, since the resulting weights will be also NA
.
The best place to catch it is probably here:
https://github.com/osofr/stremr/blob/master/R/DeterministicBinaryOutcomeModel.R#L29-L44
fit = function(overwrite = FALSE, data, ...) { # Move overwrite to a field? ... self$overwrite
self$n <- data$nobs
self$define.subset.idx(data)
private$probA1 <- data$get.outvar(TRUE, self$gstar.Name)
# private$.isNA.probA1 <- is.na(private$probA1)
# self$subset_idx <- rep.int(TRUE, self$n)
self$subset_idx <- seq_len(self$n)
private$.outvar <- data$get.outvar(TRUE, self$getoutvarnm) # Always a vector of 0/1
# private$.isNA.outvar <- is.na(private$.outvar)
self$is.fitted <- TRUE
# **********************************************************************
# to save RAM space when doing many stacked regressions wipe out all internal data:
# self$wipe.alldat
# **********************************************************************
invisible(self)
},
Or here (private$probA1
is the g^*):
https://github.com/osofr/stremr/blob/master/R/DeterministicBinaryOutcomeModel.R#L53-L67
predictAeqa = function(newdata, ...) { # P(A^s[i]=a^s|W^s=w^s) - calculating the likelihood for indA[i] (n vector of a`s)
assert_that(self$is.fitted)
if (missing(newdata)) {
indA <- self$getoutvarval
} else {
indA <- newdata$get.outvar(self$getsubset, self$getoutvarnm) # Always a vector of 0/1
}
assert_that(is.integerish(indA)) # check that observed exposure is always a vector of integers
probAeqa <- rep.int(1L, self$n) # for missing values, the likelihood is always set to P(A = a) = 1.
# probA1 <- private$probA1[self$getsubset]
probA1 <- private$probA1
probAeqa[self$getsubset] <- probA1^(indA) * (1 - probA1)^(1L - indA)
self$wipe.alldat # to save RAM space when doing many stacked regressions wipe out all internal data:
return(probAeqa)
},
`