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

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。

// 加载数据 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
------------------------------------------------------------------------------
我们来逐行解读这个表格:
-
标题信息
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%。
-
核心结果表
(图片来源网络,侵删)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检验。z和P>|z|: 这是Wald检验的结果,用于检验单个自变量的OR是否显著不等于1。mpg的P>|z| = 0.011: P值小于0.05,说明mpg对high_price的影响在统计上是显著的。foreign的P>|z| = 0.046: P值小于0.05,说明foreign对high_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 等后续命令来深入挖掘模型的实际含义。
