如何计算逻辑回归中不同性别分组下年龄二次项的拐点
问题解答
核心问题1:拐点计算规则
二次多项式的拐点(极值点)由一阶导数为0推导而来,公式固定为:拐点 = -(age一次项总系数)/(2*age二次项总系数)
截距项不会参与计算,求导时会直接消去
如果你的sex变量参考水平为mixed,所有交互项系数都是对应分组与mixed组的差值,你必须先计算目标性别分组的完整项系数:
- 女性一次项总系数 =
mixed组一次项系数 +poly(age,2, raw=TRUE)1:sexfemale系数 - 女性二次项总系数 =
mixed组二次项系数 +poly(age,2, raw=TRUE)2:sexfemale系数 - 男性一次项总系数 =
mixed组一次项系数 +poly(age,2, raw=TRUE)1:sexmale系数 - 男性二次项总系数 =
mixed组二次项系数 +poly(age,2, raw=TRUE)2:sexmale系数
你之前的计算直接使用交互项系数作为总系数,遗漏了参考组的基础系数,是结果偏差的核心原因。如果想简化计算,可以直接把sex的参考水平调整为你要计算的分组,此时输出的poly(age,2, raw=TRUE)1和poly(age,2, raw=TRUE)2就是该分组的总系数,直接代入公式即可:
# 调整参考水平为女性 data$sex <- relevel(factor(data$sex), ref = "female") # 重新拟合模型后直接取poly1、poly2系数计算女性拐点
核心问题2:模型设定要求
你的场景下必须使用poly(age,2, raw = TRUE)*sex的全交互设定,同时纳入age多项式主效应、sex主效应和两者交互项,该设定等价于允许每个sex分组拥有独立的截距、age一次项系数、age二次项系数,是统计上的正确设定。
你前两个模型要么缺少sex主效应,要么缺少age主效应,属于模型设定错误,计算结果自然不可靠。
可视化结果不匹配的额外原因
你用stat_smooth绘制的曲线,是仅使用female和male分组数据、不纳入任何其他控制变量的单独拟合结果,和你带控制变量的回归模型逻辑完全不同,结果存在差异属于正常现象。如果要匹配结果,你可以:
- 回归时去掉
mixed分组和其他控制变量,仅对female和male数据拟合success ~ poly(age,2)*sex模型,计算出的拐点会和可视化完全一致 - 可视化时使用原模型的边际预测结果绘图,而非单独拟合简化模型
内容的提问来源于stack exchange,提问作者Saina V
相关产品推荐
相关产品推荐

