I'm wondering if the package developers would be interested in building support for "missingness incorporated as attributes" (MIA) into the BART decision tree creation process. The idea is to avoid the need to either impute missing values or drop observations with missing values, and instead to let trees route missing data left or right as part of "normal" splitting rules, and also to split on the presence of missingness itself. This is a particularly useful approach when missingness actually encodes information that could be useful for predictions. (E.g. certain variables are suppressed in census tracts with low population, and that fact is correlated with the outcome variable.)
The technical details of MIA are described in this paper: https://arxiv.org/abs/1306.0618, and are currently implemented in the bartMachine R package. Here is the high-level summary of the splitting rules using MIA (copy-pasted from the paper):
1: If xij is present and xij ≤c, send this observation left (←−); otherwise, send this
observation right (−→). If xij is missing, send this observation left (←−).
2: If xij is present and xij ≤c, send this observation left (←−); otherwise, send this
observation right (−→). If xij is missing, send this observation right (−→).
3: If xij is missing, send this observation left (←−); if it is present, regardless of its value,
send this observation right (−→) .
This could be implemented via the existing API with an additional mia argument to the bart() and bcf() functions, which would presumably default to FALSE but when TRUE would implement MIA. bartMachine offers an additional use_missing_data_dummies_as_covars argument to control whether splitting can happen on missingness; this could also be exposed via the stochtree API.
I wish I had the technical skills to write up a PR, but hopefully this should serve as a decent overview of the idea.
I'm wondering if the package developers would be interested in building support for "missingness incorporated as attributes" (MIA) into the BART decision tree creation process. The idea is to avoid the need to either impute missing values or drop observations with missing values, and instead to let trees route missing data left or right as part of "normal" splitting rules, and also to split on the presence of missingness itself. This is a particularly useful approach when missingness actually encodes information that could be useful for predictions. (E.g. certain variables are suppressed in census tracts with low population, and that fact is correlated with the outcome variable.)
The technical details of MIA are described in this paper: https://arxiv.org/abs/1306.0618, and are currently implemented in the
bartMachineR package. Here is the high-level summary of the splitting rules using MIA (copy-pasted from the paper):This could be implemented via the existing API with an additional
miaargument to thebart()andbcf()functions, which would presumably default to FALSE but when TRUE would implement MIA.bartMachineoffers an additionaluse_missing_data_dummies_as_covarsargument to control whether splitting can happen on missingness; this could also be exposed via thestochtreeAPI.I wish I had the technical skills to write up a PR, but hopefully this should serve as a decent overview of the idea.