菜鸟科技网

Stata logistic命令如何解读结果?

logistic 命令用于逻辑回归,这是一种广泛使用的统计方法,主要用于分析二元分类因变量(是/否、成功/失败、患病/未患病)与一个或多个自变量之间的关系。

Stata logistic命令如何解读结果?-图1
(图片来源网络,侵删)

logistic 命令的基本语法

最基本的形式如下:

logistic depvar [indepvars] [if] [in] [, options]

参数解释:

  • depvar: 因变量,必须是二元变量(只包含0和1,或其他两个数值,Stata会自动将其识别为两种类别)。
  • indepvars: 自变量,可以是一个或多个,可以是连续变量(如年龄、收入)、分类变量(如性别、种族)或虚拟变量。
  • if / in: 用于指定数据范围,if age > 18 只分析年龄大于18岁的样本。
  • options: 可选参数,用于控制模型的输出和计算方式。

核心功能与输出解读

logistic 命令最核心的输出是比值比及其置信区间和P值,这是它与 logit 命令最主要的区别。

1 运行一个简单的例子

我们使用 Stata 自带的 auto 数据集,并创建一个二元因变量 high_price(如果价格高于中位数,则为1,否则为0),然后我们用 mpg(每加仑英里数)和 foreign(是否为进口车)来预测 high_price

Stata logistic命令如何解读结果?-图2
(图片来源网络,侵删)
// 加载数据
sysuse auto, clear
// 创建二元因变量 high_price (1=高价, 0=低价)
summarize price
generate high_price = price > r(mean)
label variable high_price "High Price Car (1=Yes, 0=No)"
tabulate high_price
// 运行逻辑回归
logistic high_price mpg foreign

2 输出结果详解

运行上述命令后,你会看到如下输出:

. logistic high_price mpg foreign
Logistic regression                             Number of obs     =         74
                                                LR chi2(2)        =      22.72
                                                Prob > chi2       =     0.0000
Log likelihood = -36.238995                       Pseudo R2         =     0.2382
------------------------------------------------------------------------------
   high_price | Odds Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         mpg |   .9183811   .0314072    -2.52   0.011     .8585876    .9817892
     foreign |   9.519577   11.58182     1.99   0.046     1.047937    86.48223
       _cons |   1.43e+08   4.23e+08     1.85   0.064     .6708362    3.05e+18
------------------------------------------------------------------------------

我们来逐行解读这个表格:

  1. 标题信息

    • Logistic regression: 告诉你这是逻辑回归结果。
    • Number of obs = 74: 样本量是74个观测值。
    • LR chi2(2) = 22.72: 似然比卡方值,用于检验整个模型是否显著,自由度为2(因为你有2个自变量)。
    • Prob > chi2 = 0.0000: 上述卡方值的P值,非常小,说明你的模型整体上是统计显著的,即模型中的自变量联合起来能很好地预测因变量。
    • Log likelihood = -36.238995: 对数似然值,用于模型拟合优度的计算。
    • Pseudo R2 = 0.2382: 伪R方,类似于线性回归中的R方,但解释力有限,它表示模型解释了因变量变异的约23.82%。
  2. 核心结果表

    Stata logistic命令如何解读结果?-图3
    (图片来源网络,侵删)
    • high_price: 因变量。
    • Odds Ratio (比值比 / OR): 这是 logistic 命令最重要的输出!
      • mpg 的 OR = 0.9184: mpg 每增加一个单位,汽车为高价的几率会下降 (1 - 0.9184) * 100% = 8.16%,因为OR小于1,mpg 是一个保护因素(或负面预测因素)。
      • foreign 的 OR = 9.5196: 相比于国产车 (foreign=0),进口车 (foreign=1) 为高价的几率是国产车的9.52倍,因为OR大于1,foreign 是一个风险因素(或正面预测因素)。
    • Std. Err. (标准误): OR值的标准误差,用于计算置信区间和Z检验。
    • zP>|z|: 这是Wald检验的结果,用于检验单个自变量的OR是否显著不等于1。
      • mpgP>|z| = 0.011: P值小于0.05,说明 mpghigh_price 的影响在统计上是显著的。
      • foreignP>|z| = 0.046: P值小于0.05,说明 foreignhigh_price 的影响在统计上是显著的。
    • [95% Conf. Interval] (95%置信区间):
      • 这是OR值的95%置信区间,如果该区间不包含1,则说明该自变量在5%的显著性水平上是显著的。
      • mpg 的区间 [0.8586, 0.9818] 不包含1,所以显著。
      • foreign 的区间 [1.0479, 86.4822] 不包含1,所以显著,注意,这个区间非常宽,说明 foreign 的OR估计不是很精确。

logistic vs. logit 的关键区别

这是初学者最容易混淆的地方。

特性 logistic logit
主要输出 比值比 系数 / Log-Odds
系数 不直接显示系数 直接显示系数 (b)
系数解释 OR = exp(b) b 是自变量每增加一个单位,对数几率的变化量
何时使用 临床、公共卫生、社会科学等,关注的是“风险倍数”或“几率比” 计量经济学、理论推导等,关注的是变量的边际效应或需要将系数代入公式计算

  • 如果你想直接得到“倍数”关系,用 logistic
  • 如果你想得到“变化量”关系,或者需要做更复杂的后续计算(如计算预测概率、边际效应),用 logit

你可以用同一个模型同时运行这两个命令来比较它们的输出:

// logistic 输出 OR
logistic high_price mpg foreign
// logit 输出系数
logit high_price mpg foreign

你会发现,logit 输出的 mpg 系数约为 -0.085,而 logistic 输出的 mpg 的 OR 约为 exp(-0.085) = 0.918,两者完全对应。


重要选项

logistic 命令有很多有用的选项,这里列举几个最常用的:

  • or: 强制输出比值比,虽然 logistic 默认就是输出OR,但如果你用 logit 命令并加上 or 选项,也能得到OR,这在需要快速比较时很方便。

    logit high_price mpg foreign, or
  • vce(robust): 计算稳健标准误,当数据存在异方差性时,这能让你的标准误和P值更可靠。

    logistic high_price mpg foreign, vce(robust)
  • beta: 标准化系数,当你有多个自变量,且它们的量纲不同(比如年龄和收入)时,可以用来比较哪个变量的影响更大。beta 系数表示自变量一个标准差的变化对因变量(以标准差为单位)的影响。

    logistic high_price mpg foreign, beta
  • level(#): 改变置信区间的置信水平,默认是95%,可以改为99%或90%。

    logistic high_price mpg foreign, level(99)
  • nosub: 不显示模型拟合优度信息(如Pseudo R2)。


后续分析与命令

模型跑完后,通常还需要进行进一步的分析。

1 预测概率

使用 predict 命令可以计算每个观测值的预测概率。

// 计算预测概率,并生成新变量 phat
predict phat
// 查看前10个观测值的预测概率
list phat in 1/10

2 拟合优度检验

estat gof 命令可以提供Hosmer-Lemeshow拟合优度检验,一个不显著的P值(> 0.05)表明模型拟合良好。

estat gof

3 计算边际效应

OR值虽然直观,但它不是“风险变化”,边际效应回答的是:“自变量变化一个单位,事件发生的概率会变化多少?” 这通常更有实际意义。margins 命令是计算边际效应的利器。

// 计算连续变量 mpg 的平均边际效应
// 即 mpg 每增加1单位,high_price=1的概率平均变化多少
margins, dydx(mpg)
// 计算分类变量 foreign 的预测概率差异
// 即 foreign=1 相比于 foreign=0,high_price=1的概率平均高多少
margins foreign, predict(pr)
// 更直观的:绘制预测概率图
margins foreign, at(mpg=(10 15 20 25 30)) predict(pr)
marginsplot, noci // 绘制预测概率随 mpg 变化的图,按 foreign 分组

命令/功能 描述 示例
logistic 执行逻辑回归,直接输出比值比 logistic y x1 x2
logit 执行逻辑回归,直接输出系数 logit y x1 x2
predict 计算预测值(概率、线性预测等) predict phat, pr
estat gof 模型拟合优度检验 estat gof
margins 计算边际效应和预测概率 margins, dydx(x1)
marginsplot 绘制边际效应或预测概率图 marginsplot

掌握 logistic 命令是进行分类数据分析的基础,关键在于理解比值比的含义,并知道何时使用 logistic (看倍数) 和何时使用 logit (看变化量),以及如何使用 margins 等后续命令来深入挖掘模型的实际含义。

分享:
扫描分享到社交APP
上一篇
下一篇