为什么引导返回所有NA值

时间:2015-06-27 20:11:43

标签: r mean difference resampling

有人可以告诉我为什么boot()会返回以下代码中的所有NA值吗?

library(boot)

diff.means.boot <- function(data, k) {

    m1 <- mean(subset(data, vs == 1)[k, "mpg"])
    m2 <- mean(subset(data, vs == 0)[k, "mpg"])

    return(m1-m2)

}

boot(data=mtcars, statistic=diff.means.boot, R=1000)

1 个答案:

答案 0 :(得分:2)

在函数中使用subset通常是不明智的,但使用与数据对象的行数不同的向量进行索引更不明智。

boot函数传递一系列行名称的索引向量,这些行向名称已从&#34; universe&#34;中替换。完整数据集的(采样框架)。相反,使用&#34; [&#34;在索引完成后,您可以使用其他级别的子设置

diff.means.boot <- function(data, k) {

    m1 <- mean(data[k, ][data$vs==1, "mpg"])
    m2 <- mean(data[k, ][data$vs==0, "mpg"])

    return(m1-m2)
}

在同一个电话之后:

# Bootstrap Statistics :
#     original    bias    std. error
# t1* 7.940476 -7.837067    2.079209