使用 r 中的引导包存储系数和向量

Storing coefficients and vectors using the boot package in r

我正在估算 y= x + s(z) 类型的模型,其中 s(z) 是一个非参数函数。我想使用 bootstrap 来获取 x 上系数的标准误差和函数 s(z) 的置信带。基本上,我的估计结果给出了 x 的系数,因此是 1x1 对象,以及 s(z) 的矢量 nx1。您可以使用 gam 包 (gam) 函数来实现。为了我的需要,我使用了一个手写函数,其中 returns 一个名为 result 的列表,我从中得到 result$betax 作为 xresult$curve 的系数它存储向量值(s(z) 的估计给出了一组对应于曲线的值)。我正在 bootstrapping 使用 boot 包如下

result.boot <- boot(data, myfunction, R=3, sim = "parametric", 
                    ran.gen = myfunction.sim, mle = myfunction.mle)

我收到以下错误消息

Error in boot(pdata, myfunction, R = 3, sim = "parametric", 
ran.gen = myfunction.sim, : incorrect number of subscripts on matrix

我想它应该给出 x 上的系数向量,我将在其上计算标准误差,以及一个矩阵 nxn of s(z) 值,我将在其上计算 a s.e。对于每一行,让我有 s(z) 曲线的置信区间。我想这与我函数的输出由

给出的事实有关
est <- list("betax" = betax, "curve" = s.z, "residuals"=res)
return(est)

我该如何解决这个问题? 要重现该问题,可以使用 gam 函数

y = runif(16, min=0, max=1)
x = runif(16, min=0, max=0.5)
z = runif(16, min=0, max=0.3)
require(gam)
est <- gam(y ~ x + s(z))

我在做

est <- myfunction(y, x, z)

该解决方案意味着对手写函数的输出进行向量化,因此使其与需要将结果存储在向量中的 boot 过程兼容。

est <- myfunction(y, x, z)
good.output <- matrix(c(betax, s.z), ncol=1)

这将使boot功能正常工作。然后你只需提取 result.boot$t 的相应元素并计算你喜欢的统计数据