将Bootstrap的输出写入文件

3

我是R语言的新手,正在尝试对大量频率数据进行一些bootstrap标准误差估计。我已经成功地在单个数据点上使用了bootstrap,但我不知道如何保存输出结果。理想情况下,我希望只将标准误差写入新文件。

到目前为止,我尝试过以下方法:

x = c(1,2,3,4,5,6,7,8,9,10)
samplemean = function(x, d){return(mean(x[d]))}
b = boot(x, samplemean, R=1000)
b
ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = x, statistic = samplemean, R = 1000)

Bootstrap Statistics :
    original  bias    std. error
t1*      5.5 -0.0356   0.9145759
2个回答

2
你可以使用boot对象中的t(复制)插槽来计算标准误差。
require(boot)

x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

samplemean <- function(x, d) {return(mean(x[d]))}

set.seed(123)
b <- boot(x,samplemean,R=1000)
b
## Bootstrap Statistics :
##     original  bias    std. error
## t1*      5.5 -0.0232     0.90887

## str(b) first...
apply(b$t, 2, sd)
##[1] 0.90887

有人能解释一下为什么在 apply(b$t,2,sd) 函数中调用标准差时会出现标准错误吗? - Mikko
引导重采样可用于模拟多次测量困难的参数误差。引导重复的标准差是测量参数的引导(模拟)标准误差。 - Ashley

1
boot:::print.boot 函数使用该表达式计算普通引导所报告的"标准误差":
sqrt(apply(t, 2L, function(t.st) var(t.st[!is.na(t.st)])))

如果你想将它写到文件中,那么你可以传递b$t并使用cat

cat( sqrt(apply(b$t, 2L, function(t.st) var(t.st[!is.na(t.st)]))), file="seboot.txt")

(此函数之前已经进行了一些处理,以取出NA值):
t <- matrix(boot.out$t[, index], nrow = nrow(boot.out$t))
allNA <- apply(t, 2L, function(t) all(is.na(t)))
t <- matrix(t[, !allNA], nrow = nrow(t))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接