拟合gam

问题描述

我已经创建了here可用的模拟数据

我的数据与动物随时间的增长有关,并具有以下变量:

read.csv(test.csv,header = T)
test$sex_t0 <- factor(test$sex_t0)
test$tagged <- factor(test$tagged)
test$scale_id <- factor(test$scale_id)

colnames(test)
[1] "weight_t" "age.x"    "sex_t0"   "tagged"   "scale_id"

test$scale_id是唯一标识符

test$tagged表示动物的耳标是否为(1)(0)

test$sex_t0表示动物是雄性(m)还是雌性(f)

test$age.x是动物的年龄

test$weight_t代表每只动物在六个不同时间点的体重测量结果,NA表示动物已从研究中移除

使用此数据,我将以下游戏放入mgcv

gam1 <- gam(weight_t ~ 
+                tagged + 
+                sex_t0 +
+                s(age.x,by = sex_t0,k = 5) + 
+                s(scale_id,bs = "re") + 
+                s(age.x,scale_id,bs = "re"),+            data = test,+            method = "REML")

该游戏包含taggedsex_t0的离散固定效果,到时间s(age.x,k = 5)的男女独立平滑函数,个体s(scale_id,bs = "re")的随机截距和时间s(age.x,bs = "re")中的个人。

我现在要计算并绘制带标签和未带标签的动物以及雄性和雌性动物在一段时间/相对年龄内的生长变化率。这将显示动物是否在特定时间增长得更快。年龄与否。为此,我们可以根据拟合的gam计算样条函数的一阶导数。加文·辛普森(Gavin Simpson)在herehere上有两个很棒的博客文章。还有一个从非常简单的拟合gam here计算一阶导数的示例。但是,我很难遵循这些示例,并且似乎找不到一个示例,该示例已经有人从更复杂的游戏中计算出一阶导数,该游戏还包括随机效应-任何帮助将不胜感激

编辑: 我设法从他的GitHub页面here加载Gavin Simpson derivSimulCI()函数,该函数“为加性模型中的样条项的一阶导数生成后验模拟”。但是,这给了我一个我要解决的错误。

library(devtools)
tmpf <- tempfile()
download.file("https://gist.githubusercontent.com/gavinsimpson/ca18c9c789ef5237dbc6/raw/295fc5cf7366c831ab166efaee42093a80622fa8/derivSimulCI.R",tmpf,method = "auto")
source(tmpf)

fd <- derivSimulCI(gam1,samples = 10000)
Error in Summary.factor(c(2L,1L,2L,: 
  ‘min’ not meaningful for factors 

traceback()给出以下内容

7.
stop(gettextf("%s not meaningful for factors",sQuote(.Generic))) 
6.
Summary.factor(structure(c(2L,... at C:\Users\taggarp\AppData\Local\Temp\Rtmp0u2MEM\file8b14519e163a#8
5.
seq(min(x),max(x) - (2 * eps),length = n) at C:\Users\taggarp\AppData\Local\Temp\Rtmp0u2MEM\file8b14519e163a#8
4.
FUN(X[[i]],...) 
3.
lapply(X = X,FUN = FUN,...) 
2.
sapply(model.frame(mod)[,m.terms,drop = FALSE],function(x) seq(min(x),length = n)) at C:\Users\taggarp\AppData\Local\Temp\Rtmp0u2MEM\file8b14519e163a#8
1.
derivSimulCI(wt9,samples = 10000) 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)