2012-04-23 8 views
6

Tengo una base de datos de estimaciones de posición, y quiero calcular distribuciones mensuales de utilización de kernel. Puedo hacer esto usando el paquete de adehabitat en R, pero me gustaría estimar intervalos de confianza del 95% para estos valores usando bootstrapping que muestrean de la base de datos. Hoy he estado experimentando con el paquete de arranque, pero todavía soy bastante nuevo para R y ¡necesito más ayuda experta! El mensaje principal error que estoy recibiendo es:Bootstrapping: Error en estadística (datos, original, ...): argumentos no utilizados (original)

Error in statistic(data, original, ...) : unused argument(s) (original) 

Este es un archivo en el que he estado usando:

head(all) 
Num   Hourbin COA_Lat COA_Lon POINT_X POINT_Y month year id 
1 07/10/2010 15:00 48.56225 -53.89144 729339.9 5383461 October 2010 29912 
2 07/10/2010 16:00 48.56254 -53.89121 729355.7 5383495 October 2010 29912 
4 07/10/2010 18:00 48.56225 -53.89144 729339.7 5383461 October 2010 29912 
5 07/10/2010 19:00 48.56225 -53.89144 729339.9 5383461 October 2010 29912 
6 07/10/2010 20:00 48.56225 -53.89144 729339.8 5383461 October 2010 29912 
7 07/10/2010 21:00 48.56225 -53.89144 729339.9 5383461 October 2010 29912 

Con las columnas 5 y 6 siendo las posiciones X e Y respectivamente . Yo subconjunto este conjunto de datos para diferentes meses (es decir, obteniendo archivos llamados "oct", "nov", etc.). He intentado configurar la función kernelUD en el paquete adehabitat para que sea una función que pueda invocar para el arranque, pero hasta ahora no he tenido suerte.

kUDoct<-function(i) kernel.area(oct[,5:6],oct[,10],kern="bivnorm",unin=c("m"),unout=c("km2")) 
bootoct<-boot(oct,kUDoct,R=1000) 
Error in statistic(data, original, ...) : unused argument(s) (original) 

¡Cualquier ayuda sería muy apreciada!

M

+1

¿Qué es 'kernel.area'? ¿Dónde está 'todo'? ¿Cómo se ve 'oct'? ¿Por qué 'kUDoct' no usa el índice' i' en el cuerpo? –

Respuesta

5

Bueno, un problema que está teniendo es que no se está utilizando la función boot como la documentación que dirigir. De ?boot vemos que el segundo argumento, es statistic:

A function which when applied to data returns a vector containing the statistic(s) of interest. When sim = "parametric", the first argument to statistic must be the data. For each replicate a simulated dataset returned by ran.gen will be passed. In all other cases statistic must take at least two arguments. The first argument passed will always be the original data. The second will be a vector of indices, frequencies or weights which define the bootstrap sample.

Tenga en cuenta que esto significa que su función debe ser definida para tomar al menos dos argumentos. Tu solo acepta uno (y luego lo ignora completamente, por extraño que parezca).

La idea es que transfiera sus datos originales y un vector de indicios. Luego, calcula su estadística de interés al subdividir sus datos originales utilizando esas indicaciones, que constituirán una "muestra de arranque".

Así que en lugar de esto:

kUDoct<-function(i) kernel.area(oct[,5:6],oct[,10],kern="bivnorm",unin=c("m"),unout=c("km2")) 
bootoct<-boot(oct,kUDoct,R=1000) 

Usted probablemente querrá hacer algo más como esto:

kUDoct<-function(dat,ind) kernel.area(dat[ind,5:6],dat[ind,10],kern="bivnorm",unin=c("m"),unout=c("km2")) 
bootoct<-boot(oct,kUDoct,R=1000) 

Pero no puedo diagnosticar cualquier otro error que puede obtener, como su el ejemplo no es completamente reproducible.

+0

¡Gracias por su rápida respuesta! Me di cuenta de que solo había tenido un argumento, así que hice algo similar a tu sugerencia, que se está ejecutando en este momento, ¡así que veremos si funciona! kudoct <-function (data, indices) { kUDoct <-kernel.area (oct [, 5: 6], oct [, 10], kern = "bivnorm", unin = c ("m"), unout = c ("km2")) return (summary (kUDoct)) } bootoct <-boot (data = oct, statistic = kudoct, R = 1000) – user1195564

+0

@ user1195564 Eso no funcionará. Mire detenidamente mi ejemplo, así como los ejemplos en '? Boot'. – joran

+0

ah, sí, veo dónde me estoy equivocando. Formatearé las cosas según tu sugerencia y lo intentaré. ¡GRACIAS! – user1195564

Cuestiones relacionadas