问题描述
我已经创建了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")
该游戏包含tagged
和sex_t0
的离散固定效果,到时间s(age.x,k = 5)
的男女独立平滑函数,个体s(scale_id,bs = "re")
的随机截距和时间s(age.x,bs = "re")
中的个人。
我现在要计算并绘制带标签和未带标签的动物以及雄性和雌性动物在一段时间/相对年龄内的生长变化率。这将显示动物是否在特定时间增长得更快。年龄与否。为此,我们可以根据拟合的gam计算样条函数的一阶导数。加文·辛普森(Gavin Simpson)在here和here上有两个很棒的博客文章。还有一个从非常简单的拟合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 (将#修改为@)