如何提取gamm4对象中原始指定的随机公式(排除平滑项)
解决方法
方法一:直接提取原始指定的随机效应公式
gamm4拟合对象会保留调用时的参数,直接从fit$call中解析原始的random参数即可,这是最准确的方式:
# 提取并解析原始随机效应公式 original_random_formula <- eval(fit$call$random) original_random_formula
执行后会直接返回你最初指定的~(1|nest)+(1|year)。
方法二:从mer对象的随机公式中筛选目标项
如果必须从formula(fit$mer, random=T)的结果中过滤,可以通过正则表达式排除平滑项对应的Xr开头分组:
# 获取包含所有随机项的公式 full_random_formula <- formula(fit$mer, random = TRUE) # 拆分公式为独立项 random_terms <- attr(terms(full_random_formula), "term.labels") # 筛选出非Xr开头的项(即你指定的nest和year) target_terms <- random_terms[!grepl("^Xr", random_terms)] # 重新组合为目标公式 clean_random_formula <- as.formula(paste("~", paste(target_terms, collapse = " + "))) clean_random_formula
内容的提问来源于stack exchange,提问作者Bill Shipley
相关产品推荐
相关产品推荐

