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