繁体   English   中英

使用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 )函数来实现。 对于我的需要,我使用一个手写函数,该函数返回一个名为result的列表,从该列表中,我具有result$betax作为x上的系数,而result$curve存储矢量值( s(z)的估计给出了一个集合对应于一条曲线的值)。 我正在使用boot包进行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上给出一个系数向量,在该向量上我将计算标准误差,在s(z)值的矩阵nxn上,我将为每行计算一个se,使我有信心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过程兼容,该boot过程要求将结果存储在向量中。

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

这将使boot功能正常工作。 然后,您只需提取result.boot $ t的相应元素,然后计算所需的统计信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM