首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理mppm中的时间相关性/趋势

如何处理mppm中的时间相关性/趋势
EN

Stack Overflow用户
提问于 2016-06-26 09:43:41
回答 1查看 168关注 0票数 1

日安,

我一直在通过Baddeley等人2015年将点过程模型与几种使用http://www.inside-r.org/packages/cran/spatstat/docs/mppm的点模式相匹配。我的点模式是保护区内大型食草动物(即雄性/雌性动物的点地点(x,y) *5岁)的年计数数据。我有一些空间协变量,如距离河流(rivD)和植被生产力(NDVI)。

最初,我拟合了一个模型,其中食草动物的反应是rivD + NDVI的一个函数,并允许系数随性别而变化(参见下面可复制的例子中的mppm1 )。然而,我的年度点模式在几年之间并不是独立的,因为有一个暂时性的增长趋势(即第一年的动物数量比第五年多出一倍)。因此,我增加了一年作为一个随机效应,认为如果我允许拦截每年改变,我可以解释这一点(请参阅mppm2)。

现在我想知道这是否是正确的方法?如果我正在拟合一个GAMM gamm {mgcv},我会添加一个时间相关结构,例如correlation = corAR1(form=~year),但不认为这在mppm中是不可能的(参见mppm3)。

我很想知道如何用mppm {spatstat}复制点模式来处理这种时间相关结构。

非常感谢

桑德拉

代码语言:javascript
复制
# R version 3.3.1 (64-bit)
library(spatstat) # spatstat version 1.45-2.008

#### Simulate point patterns
# multitype Neyman-Scott process (each cluster is a multitype process)
nclust2 = function(x0, y0, radius, n, types=factor(c("male", "female"))) {
  X = runifdisc(n, radius, centre=c(x0, y0))
  M = sample(types, n, replace=TRUE)
  marks(X) = M
  return(X)
}

year1 = rNeymanScott(5,0.1,nclust2, radius=0.1, n=5)
# plot(year1)
#-------------------
year2 = rNeymanScott(10,0.1,nclust2, radius=0.1, n=5)
# plot(year2)
#-------------------
year2 = rNeymanScott(15,0.1,nclust2, radius=0.1, n=10)
# plot(year2)
#-------------------
year3 = rNeymanScott(20,0.1,nclust2, radius=0.1, n=10)
# plot(year3)
#-------------------
year4 = rNeymanScott(25,0.1,nclust2, radius=0.1, n=15)
# plot(year4)
#-------------------
year5 = rNeymanScott(30,0.1,nclust2, radius=0.1, n=15)
# plot(year5)

#### Simulate distance to rivers
line <- psp(runif(10), runif(10), runif(10), runif(10), window=owin())
# plot(line)
# plot(year1, add=TRUE)

#------------------------ UPDATE ------------------------#
#### Create hyperframe
#---> NDVI simulated with distmap to point patterns (not ideal but just to test)
hyp.years = hyperframe(year=factor(2010:2014),
                       ppp=list(year1,year2,year3,year4,year5),
                       NDVI=list(distmap(year5),distmap(year1),distmap(year2),distmap(year3),distmap(year4)),
                       rivD=distmap(line),
                       stringsAsFactors=TRUE)
hyp.years$numYear = with(hyp.years,as.numeric(year)-1)
hyp.years

#### Run mppm models
# mppm1 = mppm(ppp~(NDVI+rivD)/marks,data=hyp.years); summary(mppm1)
#..........................
# mppm2 = mppm(ppp~(NDVI+rivD)/marks,random = ~1|year,data=hyp.years); summary(mppm2)
#..........................
# correlation = corAR1(form=~year)
# mppm3 = mppm(ppp~(NDVI+rivD)/marks,correlation = corAR1(form=~year),use.gam = TRUE,data=hyp.years); summary(mppm3)

###---> Run mppm model with annual trend and random variation in growth
mppmCorr = mppm(ppp~(NDVI+rivD+numYear)/marks,random = ~1|year,data=hyp.years)
summary(mppm1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-27 02:11:42

如果在一段时间内有人口规模的趋势,那么将这一趋势纳入模型的系统部分可能是有意义的。我建议您在数据框架中添加一个新的数值变量NumYear (例如给出自2010年以来的年数)。然后尝试在模型公式中添加简单的趋势项,如+NumYear (这将对应于您观察到的人口的指数增长)。你可以保留1|year随机效应项,这将允许人口规模的随机变化围绕长期增长趋势。

没有必要将每年的数据模式分为单独的男性和女性模式。模型公式中的变量marks可用于指定任何取决于性别的模型。

我非常肯定,mppmuse.gam=TRUE不承认correlation的论点,这可能只是被忽略了。(这取决于gam内部发生了什么)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38037160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档