You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

effects函数使用问题:如何从模型获取指定预测变量的拟合值?

解决effects包effect函数返回非目标预测点的问题

问题原因

effect()函数对连续型预测变量默认会生成5个从最小值到最大值的等距点,而非原始数据中的唯一取值,所以你得到的是0、2、5、8、10这5个点,而非设定的0、1、6、10。

解决方案

方法1:在effect()中指定目标取值

通过xlevels参数明确指定time的目标取值,该方法同时适用于lm和lme4::lmer模型:

# 拟合模型(lm示例,lmer用法一致)
model <- lm(y ~ time, data = df)
# 指定time的目标取值生成效应
fx <- effect("time", model, xlevels = list(time = c(0, 1, 6, 10)))
# 提取目标时间点和对应拟合值
target_time <- fx$x
fitted_values <- fx$fit

方法2:直接使用predict()函数(更灵活)

构造包含目标时间点的新数据框,用predict()直接生成拟合值,这是通用方法,完全适配混合模型:

# 构造目标时间点的数据框
new_df <- data.frame(time = c(0, 1, 6, 10))

# 对lm模型预测
predict(model, newdata = new_df)

# 对lmer模型预测(仅固定效应,与effect结果一致)
# 假设你有混合模型:model_lmer <- lmer(y ~ time + (1|group), data = df)
predict(model_lmer, newdata = new_df, re.form = NA)
# 如果需要包含随机效应,去掉re.form参数即可

内容的提问来源于stack exchange,提问作者SylvainC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:17:41