我一直在使用R包adehabitatHR来寻找一些企鹅的内核密度等值线,这一切都很好。然而,当我使用mcp或kernel.area来寻找50%和95%等高线内的区域时,我得到了一些非常低的ha估计。这些鸟飞行了30-80公里,但面积估计为3.087401 x 10^-7公顷。先前的数据显示,面积估计为4000-6000公顷。有人知道可能会发生什么吗?谢谢!
#please ignore all the libraries, I'm new to R and keep them all up
library(adehabitatHR)
library(sp)
library(rgdal)
library(raster)
F14A <- read_csv("74F314A f.csv")
str(F14A)
loc <- F14A[, c("Latitude", "Longitude")]
str(loc)
# Change Lat & Long to spatial points
loc <- as.matrix.data.frame(loc)
loc <- SpatialPoints(loc)
## Estimation of KUD
ud <- kernelUD(loc, h = "href", grid = 100, same4all = FALSE,
kern = c("bivnorm"), extent = 1)
mcp(loc, percent=100)
mcp.area(loc,percent=seq(50,95, by=5), unin = c("m"),
unout = c("ha"))发布于 2017-03-13 05:17:50
等高线图看起来很好,它们很好地适应了地图,并遵循了我的轨迹。该地图是一个shapefile文件,其中还内置了GPS坐标。
问题是我的观点没有正确转换。对于任何其他有同样问题的人,我使用以下代码将其转换到UTM 55,然后kernel.area函数完美地工作。
longlatcoor<-SpatialPoints(cbind(F14A$Longitude,F14A$Latitude), proj4string=CRS("+proj=longlat +datum=WGS84"))
# converting
utmcoord<-spTransform(longlatcoor,CRS("+proj=utm +south +zone=55 +datum=WGS84"))
utmcoord #just to double check the transformation has occured
kud<-kernelUD(utmcoord, h="href", grid=100, hlim = c(0.1, 1.5), kern = c("bivnorm"), extent = 0.5,boundary=barrier)
image(kud)
kernel.area(kud,percent=seq(50,95,by=5),unin=("m"),unout=("ha"))这就产生了GPS值,比如拉特319187.6长5807109,最终的内核面积是: 50% = 1153.162,95% = 7025.186,这更接近于我的预期。
发布于 2017-03-04 07:32:06
我对你的内核带宽很好奇。如果你正在使用一个为你计算带宽的函数,那么它所做的任何优化都有可能陷入一个太小的值而变得无用(这就发生在我身上)-太小的内核带宽将导致太小的内核密度区域。
如果您正在使用的函数有contour()的实现,我会忍不住去plot(contour(ud))看看它看起来是不是一个很好的等高线图(或者不是!)如果没有,请尝试将内核带宽设置为一些不同的值,以查看结果的表现。
这可能看起来像是一个博学的观点,但带宽选择是任何涉及内核密度的分析中至关重要的一部分。不幸的是,有时黑盒软件不能像您(主题专家)那样选择适合研究的带宽。
https://stackoverflow.com/questions/42570205
复制相似问题