10

我有一个位置估计数据库,并且想要计算每月内核利用率分布。我可以使用 R 中的 adehabitat 包来做到这一点,但我想使用从数据库中抽取样本来估计这些值的 95% 置信区间。今天我一直在尝试启动包,但我对 R 还是很陌生,需要更多专家的帮助!我收到的主要错误消息是:

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

这是我一直在使用的文件:

    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

第 5 列和第 6 列分别是 X 和 Y 位置。我将这个数据集分为不同月份(即获取名为“oct”、“nov”等的文件)。我尝试将 adehabitat 包中的 kernelUD 函数设置为可以调用以进行引导的函数,但到目前为止还没有运气。

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)

任何帮助将不胜感激!

4

1 回答 1

7

好吧,您遇到的一个问题是您没有使用boot文档指导您使用的功能。从?boot我们看到,第二个论点statistic是:

一个函数,当应用于数据时返回一个包含感兴趣的统计数据的向量。当 sim = "parametric" 时,statistic 的第一个参数必须是数据。对于每个复制,将传递由 ran.gen 返回的模拟数据集。在所有其他情况下,statistic 必须至少有两个参数。传递的第一个参数将始终是原始数据。第二个将是定义引导样本的索引、频率或权重的向量。

请注意,这意味着您的函数应定义为至少采用两个参数。你只接受一个(然后完全忽略它,奇怪的是)。

这个想法是你传入你的原始数据和一个索引向量。然后,您通过使用这些指标对原始数据进行子集化来计算您感兴趣的统计数据,这将构成一个“引导样本”。

所以代替这个:

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

你可能想做更多这样的事情:

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)

但我无法诊断您可能遇到的任何其他错误,因为您的示例并非完全可重现。

于 2012-04-23T17:41:54.177 回答