我有一个大约144个条目和93个变量的数据集,其中每列对应一个市政当局,变量负责环境数据的年度测量(例如:温度,植被覆盖面积,降雨量等)。如前所述,变量每年进行划分,因此我有一列名为rainfall_2004
,另一列名为rainfall_2005
,依此类推。整个数据集的时间跨度为10年。这是一张更好地说明的图片:
我想开发一个脚本,每年我可以为每个城市创建一个GLM。幸运的是,我找到了Zuur的书,"生态学中的混合效应模型和扩展与R" ,它在他的一个例子中提供了这样的代码。我尝试将其改编为我的数据集,但出了点问题。我对R的知识有点受限,所以我错过了一些东西,但我找不到它。
这是Zuur的代码:
library(AED); data(RIKZ)
Beta <- vector(length = 9)
for (i in 1:9) {
Mi <- summary(lm(Richness ∼ NAP, subset = (Beach==i), data=RIKZ))
Beta[i] <- Mi$coefficients[2, 1]
}
现在是我的:
count <- dados_ampliados[, 1]
View(count)
for (i in count) {
RA <- summary(glm(dados_ampliados$infect_2004 ~ dados_ampliados$mmax_2004 +
dados_ampliados$mmin_2004 +
dados_ampliados$mprec_2004 +
dados_ampliados$mumid_2004 +
dados_ampliados$prop_for_2004 +
dados_ampliados$prop_urb_2004 +
dados_ampliados$prod_2004,
family = poisson(),
subset = (dados_ampliados$Geocode==i),
data = dados_ampliados))
count[i] <- RA$coefficients[2, 1]
}
然而我的代码又回来了:
Error in `[<-.data.frame`(`*tmp*`, i, value = 0.357095537720183) :
new columns would leave holes after existing columns
为什么会发生这样的想法?提前谢谢。
一些观察结果:
可以获取此代码中使用的文件here。这是一个WeTransfer文件,所以它不会永远持续下去。
在他的文中,Zuur解释说,他正在创建该模型来分析9个不同海滩的数据。在他的代码中,他将1:9向量的值与海滩值进行比较,因此我假设海滩没有被命名,而是编号。因此,对于矢量的每个值,他将为相应的海滩建模。然而,我的数据并没有像那样组织,但由于巴西统计和地理研究所提供了地理编码,因此我的改编包括创建144个条目的向量,每行一个,每个都由市政当局填充#39;地理编码。我和lm
的{{1}}的替代是我的主要修改。
对于疑难解答,我已尝试将glm
的值从2,1更改为1,1或1,2。错误仍然存在。