2015-06-27 57 views
0

誰能告訴我爲什麼boot()返回下面代碼中的所有NA值?爲什麼開機返回所有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) 
+0

k的長度不會是與子集中的行數相同。 –

+0

k的長度是多少? – luciano

+0

它是一個普通的bootstrap它不會是數據參數的行數相同嗎? –

回答

2

這通常不明智的函數內使用subset,但更不明智的索引與該是不同的長度比所述數據對象的行數的一個向量。 boot函數傳遞一系列索引向量,這些索引向量已經用完整數據集的「Universe」(採樣幀)中的替換進行了採樣。而是使用「[」功能的子設置您additipnal水平後的索引完成:

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) 

} 

#after相同的呼叫:

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