3

我是 R 新手,正在尝试对大型频率数据文件的标准误差进行一些引导估计。我的引导程序在单个数据点上工作正常,但我不知道如何保存输出。理想情况下,我只想将标准错误写入新文件。

这是我迄今为止尝试过的:

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
4

2 回答 2

2

t您可以使用对象中的(复制)槽计算标准错误boot

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
于 2012-08-11T00:10:59.547 回答
1

boot:::print.boot 函数使用这个表达式来计算它为普通引导程序报告的“std.error”:

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))
于 2012-08-11T00:37:58.490 回答