Perché l'errore “aggiustamento stimato 'a' è NA” generato dal pacchetto di avvio R quando si calcolano gli intervalli di confidenza usando il metodo bca?


14

Ho un vettore di numeri che ho caricato qui (... / code / MyData.Rdata) usando dput.

Vorrei ottenere il bca ci quindi ho scritto questo codice:

my.mean <- function(dat, idx){
 return (mean(dat[idx], na.rm = TRUE))
} 

boot.out<-boot(data=my.data, statistic = my.mean, R=1000)

Ma quando eseguo quanto segue ottengo questo:

> boot.ci(boot.out)
Error in bca.ci(boot.out, conf, index[1L], L = L, t = t.o, t0 = t0.o,  : 
estimated adjustment 'a' is NA
In addition: Warning message:
In boot.ci(boot.out) : bootstrap variances needed for studentized intervals

Qualcuno può aiutarmi a capire cosa sta causando questo errore? Grazie per l'aiuto!


3
Ho provato con R = 10000 invece di R = 1000 (e specificando type = 'bca' invece di type = 'all' poiché questo è ciò che vuoi davvero) e funziona. Quindi la mia conclusione sarebbe che ciò che sta causando questo errore non è abbastanza repliche bootstrap ... ma non posso dire altro ...
ocram

Risposte:


23

Come puoi vedere dal tuo messaggio di errore, boot.cichiama bca.ci. Poiché l' boot.outoggetto non fornisce L, i valori di influenza empirica per la statistica che stai calcolando sui dati, bca.cicerca di calcolarli utilizzando la empinffunzione e quindi (come dice Michael) li utilizza per calcolare la costante di accelerazione:

L <- empinf(boot.out, index = index, t = t.o, ...)
a <- sum(L^3)/(6 * sum(L^2)^1.5)

Ma con un numero limitato di repliche, a empinfvolte fallisce e restituisce un vettore di NAvalori. Il risultato è che non si hanno valori per L, anon è possibile calcolarli e si ottiene l'errore. Come dice ocram, l'aumento del numero di repliche di boostrap risolverà questo problema. Anche raddoppiare Ral 2000 dovrebbe probabilmente farlo.


1
+1 @Kieran Grazie! Sono contento che la mia ipotesi abbia avuto una certa validità. Hai la risposta giusta dalla tua conoscenza dei programmi R coinvolti. quindi la mia risposta non è più necessaria. A qualcuno o non piaceva che io indovinassi o pensavo che la mia risposta dovesse essere un commento. Per tutti questi motivi ha senso per me cancellarlo ora.
Michael R. Chernick,

4
Per gli altri che soffrono del problema: secondo stat.ethz.ch/pipermail/r-help/2011-February/269006.html il numero di ripetizioni deve essere maggiore del numero di righe di dati. Sono stato leggermente sorpreso che sono necessarie così tante ripetizioni ...
BurninLeo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.