【问题标题】:Average home range across animals动物的平均家庭范围
【发布时间】:2014-07-18 00:07:26
【问题描述】:

这几天一直在为此苦苦挣扎。我在这里使用我的数据的一个子集,3 个人,每人 7 次搬迁,跟踪 3 个季节。并非所有的鱼都存在于所有季节,并且它们的位置因季节而异。我需要估计每个季节鱼类的平均栖息地面积并绘制它。

我认为 Anthony Fischbach 在下面的帖子中的回复是我需要做的,我只是中途停留(主要是因为我对空间分析和 adehabitatHR 非常陌生)。

http://r-sig-geo.2731867.n2.nabble.com/averaging-home-range-contours-td7499301.html#a7503972

df <- structure(list(Season = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L), .Label = c("Spring", "Summer", "Fall"), class = "factor"), 
Easting = c(425952.746437786, 425930.124103401, 425904.838430173, 
425897.396103185, 425859.77203381, 425769.155466566, 425698.934422453, 
425172.162553713, 425201.54784946, 425265.188960297, 425293.907156855, 
425334.519543017, 425351.98115297, 425341.657291998, 426499.521534761, 
426491.617459401, 426489.21804795, 426458.425998741, 426444.572705444, 
426435.13014907, 426428.521796826, 425206.363932968, 425214.055516556, 
425214.686198032, 425219.462846981, 425224.610973811, 425225.509004604, 
425231.130704745, 425295.438309455, 425295.033258023, 425298.385156621, 
425286.605300153, 425292.736058183, 425296.563442322, 425289.068691518, 
425262.047903812, 425245.264536305, 425236.068286685, 425246.961026478, 
425244.291558159, 425234.858476333, 425220.329721481), Northing = c(5630038.14127036, 
5630042.68938361, 5630053.17010795, 5630050.05067675, 5630050.03021924, 
5630044.42581987, 5630080.68394433, 5631660.65042482, 5631622.41326505, 
5631580.90371775, 5631564.80939618, 5631533.30748204, 5631498.46768363, 
5631476.0382073, 5629521.34564057, 5629530.46592294, 5629545.1806574, 
5629555.1802463, 5629557.15541335, 5629572.08088964, 5629598.08820948, 
5630913.54144105, 5630904.64457731, 5630904.41307655, 5630898.56103167, 
5630889.14462961, 5630887.90831366, 5630886.93779994, 5630645.78035996, 
5630647.00958702, 5630649.85318956, 5630643.90518234, 5630648.93328633, 
5630650.5466496, 5630648.65226268, 5631661.36063509, 5631635.46509059, 
5631632.70549606, 5631635.88559859, 5631631.47516021, 5631626.93945528, 
5631610.91014489), ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L), .Label = c("01", "04", "06"), class = "factor")), .Names =         
c("Season", 
"Easting", "Northing", "ID"), row.names = c(NA, 42L), class = "data.frame")

## following the advice in the link above:
library(adehabitatHR)
tagList <- unique(df$ID)

kud1 <- list()
kud_spdf <- list()
vd <- list()

## running a loop across animals, estimating 95% 
for(i in tagList){
thing <- SpatialPoints(subset(df[df$ID == i,], select = c(Easting, Northing)),   
proj4string = CRS("+proj=utm +zone=11 +ellps=WGS84"))
thing <- SpatialPointsDataFrame(coords = thing, data = subset(df[df$ID == i,], select = c(Season)))
thing$Season <- as.character(thing$Season)
kud1[[i]] <- kernelUD(thing, grid = 120, extent = 0.2, same4all=TRUE)
kud_spdf[[i]] <- estUDm2spixdf(kud1[[i]]) 
    fullgrid(kud_spdf[[i]]) <- TRUE
vd[[i]] <- kud_spdf[[i]]@data 
     }

然后我被卡住了,因为 vd 中的每条鱼都有不同数量的点(因为据我了解,网格是为每条鱼单独计算的)。如何继续对鱼进行平均、按像素求和和标准化数据等?

我对绘图部分没问题,只要我可以在 kernelUD 对象上使用getverticeshr,然后运行fortify,并使用 ggmap 和 ggplot 逐组绘图。

任何帮助将不胜感激......

【问题讨论】:

    标签: r


    【解决方案1】:

    我不确定我是否理解你的问题,但你为什么不能将物种和季节一起工作?

    sp_df <- subset(df, select = c(IDS, Easting, Northing))
    coordinates(sp_df) <- ~Easting+Northing
    #plot(sp_df, axes = T, col = )
    kud <- kernelUD(sp_df[ ,1], grid = 200, same4all=TRUE)
    hr <- kernel.area(kud, percent = 95)
    
        X01Fall X01Summer X04Spring X04Summer X06Spring X06Summer
    95 8.638694  8.118291  1.353048    2581.2    2581.2 0.4163226
    

    并从这里开始按个人汇总数据

    这里有很多选择...

    hr1 <- as.data.frame(t(hr))
    hr1$ID <- factor(rep(c(1,4,6), each = 2))
    names(hr1)[1] <- 'p95'
    # Using base functions
    aggregate(p95~ ., hr1, mean)
    
    # Fast and simple
    library(dplyr)
    hr1 %>%
      group_by(ID)%>%
      summarise(mean_hr = mean(p95))
        Source: local data frame [3 x 2]
    
      ID   mean_hr
    1  1 8.4037848
    2  4 0.8040197
    3  6 0.2109327
    

    编辑

    我不明白当个人表现出明显的空间位移时获得平均家庭范围的相关性,例如在这种情况下。

    kareas <- getverticeshr(kud, 95)
    library(ggplot2)
    kdareas <- fortify(kareas)
    ggplot(kdareas) +
      geom_polygon(aes(x=long, y=lat, group = group, fill = id, colour = id),
                   alpha = .4) +
      theme_bw() +
      coord_equal()
    

    我不明白你为什么应该这样做,但那就是我......

    【讨论】:

    • 嗯。我非常专注于将个体和季节分开,我没有意识到我可以做到这一点......这仍然让我需要对鱼等进行平均。在您的帮助下,我取得了一些进展(按照我引用的链接):kud_spdf
    • @user2602640 我一会儿试试看。
    • 不确定我是否得到它(或者我可能没有很好地说明我的问题) - 我的主要困难是计算家庭范围的 位置,不是它的区域,这样我就可以在地图上绘制跨鱼范围。如果我理解正确,您的编辑估计区域?另外-您的编辑中的hr 是否与您原始回复中的kud 相同?婴儿步骤在这里....
    • @user2602640。我知道了。确实不一样。我得考虑一下。
    • 感谢您的耐心等待和帮助!这里的数据只是约 100K、30 条鱼数据集的一小部分。当然,各个家庭范围之间存在差异,但在撰写论文时,我无法绘制 30 张地图。我需要显示一个显示平均使用情况的(每季)图。我可以通过删除标签数据并将所有数据视为来自同一条鱼来做到这一点,但这似乎不对,因为“真正喜欢”一个区域的单一鱼会影响整个范围估计。另一种方法是计算各个范围并取平均值。如果我能弄清楚如何:-)
    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2015-06-04
    • 2017-07-28
    相关资源
    最近更新 更多