使用R的nlmer拟合带随机效应的Michaelis-Menten模型遇变量未找到错误
错误原因与解决方法
核心错误:变量名不匹配
错误提示object 'TIR' not found是因为你明确说明响应变量是CTIR,但代码中全程使用了TIR作为变量名,与数据集中的实际列名不符。
修正后的代码
# Load required library library(lme4) # Load data tirsfl <- read.csv("TIR.FL.csv", header=TRUE, sep=",") # 先确认数据集列名,确保CTIR和FL存在 names(tirsfl) # Michaelis-Menten函数定义 michaelis_menten_model <- function(FL, maxTIR, FoodK) { maxTIR * (FL / (FL + FoodK)) } # 拟合非线性混合模型(替换TIR为CTIR) fit <- nlmer(CTIR ~ michaelis_menten_model(FL, maxTIR, FoodK) + (1 | Tank), data = tirsfl, start = c(maxTIR = max(tirsfl$CTIR, na.rm = TRUE), FoodK = median(tirsfl$FL, na.rm = TRUE))) summary(fit)
实现你的目标需求
1. 获取AIC值
直接调用AIC()函数:
AIC(fit)
2. 获取模型参数的p值
lme4包的nlmer默认不输出p值,可通过以下方式获取:
- 使用
lmerTest包做参数检验:library(lmerTest) # 查看参数的Wald检验结果 coef(summary(fit)) # 对比全模型与零模型,判断整体效应 null_fit <- nlmer(CTIR ~ 1 + (1 | Tank), data = tirsfl, start = c(Intercept = mean(tirsfl$CTIR))) anova(fit, null_fit) - 通过参数置信区间辅助判断(若区间不包含0则参数显著):
confint(fit, method = "Wald")
3. 计算R²值
非线性混合模型的R²没有统一标准,推荐使用MuMIn包的Nakagawa方法,计算边际R²(仅固定效应解释的变异)和条件R²(固定+随机效应共同解释的变异):
library(MuMIn) r.squaredGLMM(fit)
内容的提问来源于stack exchange,提问作者Kat Kabanova
相关产品推荐
相关产品推荐

