R - 协变量多于观察值的贝叶斯树
R - Bayes Trees with more covariates than observations
我在 R
中收到无法追溯的错误消息。
我正在尝试将贝叶斯树模型拟合到协变量多于观察值的数据。
以我的知识水平,我认为这应该不是问题,但是,无论我尝试什么包,所有尝试都会导致错误。
当使用 bcf
包中的 bcf()
函数和 ncol(x) > nrow(x)
时,我收到错误:
bcfoverparRcppClean(yscale[perm], z[perm], t(x_c[perm, ]), t(x_m[perm, : drmu failed
bcfoverparRcppClean()
本身写在 C++
中,我还没有尝试深入研究。
当我只有 select 部分协变量时,该函数按预期执行。
类似的情况发生在 BayesTree
包中的 bart()
函数中。
此处,错误显示为:
NA/NaN/Inf in foreign function call (arg 7)
不用说,数据中没有 NA,也没有无穷大的值,一旦输入的观测值多于协变量,误差就会消失。
请在下面找到一个可重现的示例:
library('stats')
library('purrr')
x <- matrix(data = rnorm(100*200), nrow = 100, ncol = 200)
y <- rowSums(x)
d <- as.numeric(rbernoulli(100, p = .5))
pihat <- 1/(1+exp(-y))
library('bcf')
bcf(y, d, x, x, pihat, nburn = 1000, nsim = 500)
library('BayesTree')
bart(x.train = x, y.train = y, ndpost = 1000, nskip = 500, usequants = TRUE)
我想这一定是有意为之的行为,因为这两种方法都会发生,但我找不到概念上的原因。
在Hahn, Murray, and Carvalho (2019)中,拟合树似乎与传统树的不同之处仅在于先验诱导后验分布,该后验分布指导模型的随机搜索。
我相信这不会改变处理高维数据的能力,但这些函数并不像示例中那样工作。
我是不是漏掉了什么?如果有人能提醒我这样做的原因或者甚至想出一个解决方法(只要我没有弄错理论),我将不胜感激。
提前致谢!
如果有人遇到类似的问题。
我最终使用了 bartMachine
包中的 bartMachine()
函数。
它可以处理高维数据。
仍然对它不能与其他包一起工作的原因感兴趣,如果有人知道的话。
我在 R
中收到无法追溯的错误消息。
我正在尝试将贝叶斯树模型拟合到协变量多于观察值的数据。 以我的知识水平,我认为这应该不是问题,但是,无论我尝试什么包,所有尝试都会导致错误。
当使用 bcf
包中的 bcf()
函数和 ncol(x) > nrow(x)
时,我收到错误:
bcfoverparRcppClean(yscale[perm], z[perm], t(x_c[perm, ]), t(x_m[perm, : drmu failed
bcfoverparRcppClean()
本身写在 C++
中,我还没有尝试深入研究。
当我只有 select 部分协变量时,该函数按预期执行。
类似的情况发生在 BayesTree
包中的 bart()
函数中。
此处,错误显示为:
NA/NaN/Inf in foreign function call (arg 7)
不用说,数据中没有 NA,也没有无穷大的值,一旦输入的观测值多于协变量,误差就会消失。
请在下面找到一个可重现的示例:
library('stats')
library('purrr')
x <- matrix(data = rnorm(100*200), nrow = 100, ncol = 200)
y <- rowSums(x)
d <- as.numeric(rbernoulli(100, p = .5))
pihat <- 1/(1+exp(-y))
library('bcf')
bcf(y, d, x, x, pihat, nburn = 1000, nsim = 500)
library('BayesTree')
bart(x.train = x, y.train = y, ndpost = 1000, nskip = 500, usequants = TRUE)
我想这一定是有意为之的行为,因为这两种方法都会发生,但我找不到概念上的原因。
在Hahn, Murray, and Carvalho (2019)中,拟合树似乎与传统树的不同之处仅在于先验诱导后验分布,该后验分布指导模型的随机搜索。 我相信这不会改变处理高维数据的能力,但这些函数并不像示例中那样工作。
我是不是漏掉了什么?如果有人能提醒我这样做的原因或者甚至想出一个解决方法(只要我没有弄错理论),我将不胜感激。
提前致谢!
如果有人遇到类似的问题。
我最终使用了 bartMachine
包中的 bartMachine()
函数。
它可以处理高维数据。
仍然对它不能与其他包一起工作的原因感兴趣,如果有人知道的话。