簡體   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