geom_smooth指定method="glm"时method.args参数拟合效果不符合预期
问题原因分析
- 你当前使用的拟合公式为
y ~ x,属于线性预测项结构。泊松回归默认使用对数连接函数,意味着对数转换后的响应变量与自变量treatment呈线性关系,转换回原始响应尺度时是指数函数曲线。你当前的treatment取值范围仅为-100到0,区间范围较小,指数函数在该区间的曲率极不明显,视觉上就会呈现为直线。 - 如果你想要得到有明显弧度的拟合曲线,需要在预测项中加入非线性结构,而不是使用纯一次项的线性预测。
解决方法
你可以将拟合公式修改为包含多项式项的形式,例如二次多项式,即可得到带弧度的拟合结果,修改后的geom_smooth代码如下:
geom_smooth(data = data, mapping = aes(x= treatment, y= response, color = early_late), method = "glm", method.args = list(family= poisson), formula = y ~ poly(x, 2), se = TRUE)
如果需要更高阶的曲率,也可以将poly(x,2)中的2调整为更大的整数,注意不要取值过高导致过拟合即可。
验证方法
你可以手动拟合模型查看预测值的变化趋势,确认曲率不明显的问题:
# 拟合泊松回归模型 mod <- glm(response ~ treatment, family = poisson, data = data) # 生成连续自变量对应的预测值 pred_df <- data.frame(treatment = seq(-100, 0, 1)) pred_df$pred <- predict(mod, newdata = pred_df, type = "response") # 查看相邻预测值的差值,数值接近等距就意味着视觉上接近直线 diff(pred_df$pred)
内容的提问来源于stack exchange,提问作者user3508884
相关产品推荐
相关产品推荐

