我试图预测一年内的昆虫种群。我已经构建了我的模型(GAM,使用包mgcv)。然后我在构建了一个虚拟数据集来构建这个预测之后使用了predict()函数 - 这就是我在努力奋斗的地方。
我的问题是如何构建一个可以模拟的新虚拟数据集,比如寒冷的冬天和温暖的冬天?我只有一个温度"参数,我不知道如何通过时间(或季节)来操纵它。理想情况下,我想创造一个寒冷的冬天,夏季温度平均,夏季温暖,冬季温暖。任何建议将不胜感激!
很快,我在模型中的平滑参数是:平均温度,湿度和一年中的一天(doy)。我在模型中也有三个随机效果参数。我的模型,预测和生成的图表如下。
m1 <- gam(total ~ s(temp.avg) + s(humid) + s(doy, bs="cc", k=5) +
s(trap, bs="re")+s(site, bs="re")+s(year, bs="re"),
family=nb(),gamma=1.4,method="REML",data=dfe)
N <- 200
M <- 365
pdat1 <- with(dfe, expand.grid(year = c("2013","2014","2015","2016","2017"),
humid = mean(humid, na.rm = TRUE),
temp.avg = mean(temp.avg, na.rm = TRUE),
doy = seq(min(doy), max(doy), length = M),
trap = c("a","b","c","d"),
site = c("A","B", "C", "D")))
pred1 <- predict(m1, newdata = pdat1, type = "response", se.fit=TRUE)
crit <- qt(0.975, df = df.residual(m1)) # ~95% interval critical t
pdat1 <- transform(pdat1, fitted = pred1$fit, se = pred1$se.fit)
pdat1 <- transform(pdat1,
upper = fitted + (crit * se),
lower = fitted - (crit * se))
ggplot(pdat1, aes(x = doy, y = fitted)) +
geom_line() + theme_classic()+
labs(y = "Predicted Population", x = "Day of Year") +
theme(legend.position = "top")