Logistic回归新增变量后均值预测概率变化及STATA计算问询
关于Stata Logistic回归中预测概率下降及百分比变化计算的解答
一、为什么加入更多变量后均值处的预测概率会下降?
这其实是Logistic回归模型拟合后的正常现象,核心原因可以拆解为两点:
- 参数重新调整的影响:每加入新变量,Stata会重新拟合整个模型,所有变量的回归系数都会被重新估计。如果新变量(比如你例子里的
distance)和因变量outcome呈负相关,或者和已有变量存在共线性,就可能拉低所有变量均值组合下的预测概率。 - 均值计算范围的变化:
margins, atmeans是用当前模型所有变量的均值来计算预测概率的。加入新变量后,这个“平均个体”的定义变了——多了新变量的均值维度,和之前仅用部分变量均值计算的结果自然会有差异。
举个直观的例子:如果distance越大,outcome发生的概率越低,那加入distance后,用它的均值代入计算,整体预测概率自然会比不含distance时更低,这完全符合数据规律,不是模型出错了。
二、如何计算加入感兴趣变量后预测概率的百分比变化?
你可以通过分别拟合精简模型和全模型,提取两个模型在均值处的预测概率,再手动计算变化率,具体代码如下:
* 加载示例数据 use http://www.stata-press.com/data/r13/margex * 第一步:拟合不含感兴趣变量(比如distance)的精简模型并保存结果 quietly logit outcome i.sex age i.group margins, atmeans estimates store model_simple // 把精简模型结果存起来 * 第二步:拟合包含所有变量的全模型并保存结果 quietly logit outcome i.sex age distance i.group margins, atmeans estimates store model_full // 把全模型结果存起来 * 第三步:提取两个模型的均值处预测概率 estimates restore model_simple scalar prob_simple = _b[_cons] // 提取精简模型的预测概率 estimates restore model_full scalar prob_full = _b[_cons] // 提取全模型的预测概率 * 第四步:计算百分比变化并展示 scalar pct_change = (prob_full - prob_simple) / prob_simple * 100 display "加入变量后均值处预测概率的百分比变化为: " %6.2f pct_change "%"
运行这段代码后,你就能得到精确的百分比变化值。如果结果为负,就对应你观察到的预测概率下降现象。
另外,如果你想单独看某个变量(比如distance)对预测概率的边际影响,还可以用margins的at()选项固定其他变量均值,对比该变量不同取值下的概率变化:
quietly logit outcome i.sex age distance i.group margins, at(distance=(mean mean+1)) atmeans // 对比distance在均值和均值+1时的概率差异
内容的提问来源于stack exchange,提问作者rokman54
相关产品推荐
相关产品推荐

