[英]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.