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.