美好的一天,
我一直在使用Baddeley et al. 2015使用mppm {spatstat}将点过程模型拟合到几个点模式。 我的观点模式是受保护区( owin )的大型食草动物的年度计数数据(即雄性/雌性动物的点位置( x,y )* 5年)。我有许多空间协变量,例如到河流的距离(rivD)和植被生产力(NDVI)。
最初,我拟合了一个模型,草食动物的反应是rivD + NDVI的函数,并允许系数因性别而异(参见下面的可重复实例中的mppm1)。然而,我的年度点模式在年份之间并不是独立的,因为存在时间上的增加趋势(即,与第5年相比,第1年的动物数量呈指数增长)。 所以我将年份作为一个随机效应添加,认为如果我允许拦截每年更改,我可以解释这一点(见mppm2)。
现在我想知道这是否是正确的方法呢?如果我正在拟合GAMM gamm {mgcv}
,我会添加时间相关结构,例如correlation = corAR1(form=~year)
,但不认为mppm
可以这样做(参见mppm3)?
我非常感谢有关如何使用mppm {spatstat}
在复制点模式中处理此时间关联结构的任何想法。
非常感谢
桑德拉
# 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)
答案 0 :(得分:1)
如果随着时间的推移,人口规模存在趋势,那么将此趋势包含在模型的系统部分中可能是有意义的。我建议你在数据框中添加一个新的数字变量NumYear
(例如给出自2010年以来的年数)。然后尝试将简单的趋势术语(例如+NumYear
)添加到模型公式中(这将对应于您观察到的人口的指数增长。)您可以保留1|year
随机效应项,然后允许随机人口规模的变化围绕的长期增长趋势。
没有必要将每年的数据模式分成单独的男性和女性模式。模型公式中的变量marks
可用于指定任何依赖于性别的模型。
我非常确定mppm
与use.gam=TRUE
无法识别参数correlation
,这可能只是被忽略了。 (这取决于gam
内发生的事情)。