2015-06-27 3 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

Длина к не будет являться так же, как количество строк в подмножествах. –

+0

Какова будет длина k? – luciano

+0

Это обычный бутстрап, не будет ли он таким же, как количество строк аргумента данных? –

ответ

2

Это вообще неразумно использовать subset внутри функций, но еще более неразумно индекс с вектором, который является различной длиной, чем число строк данных-объект. Функция boot передает серию индексных векторов имен строк, которые были отобраны с заменой из «юниверса» (выборки) полного набора данных. Вместо того, чтобы использовать «[» функции для 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 
Смежные вопросы