首页 > 解决方案 > 比较逻辑模型中两个子样本的边际值

问题描述

我有一个带有交互项的 logit 模型。我想在两个子样本中测试这个交互系数(根据另一个变量的某个值进行划分)。由于逻辑模型,系数的解释需要边际分析(Ai 和 Norton,2003),我在为每个子样本运行模型后进行了边际分析。我不知道如何显示这两个子样本的边际值的统计差异。我将使用“出生体重数据”来进一步阐明我的意思。

webuse lbw

logit low i.smoke##c.lwt  ftv  ptl if ui==0

su ptl if e(sample), detail

global ptl_mean  = r(mean)
display $ptl_mean
global ptl_sd    = r(sd)
display $ptl_sd
global ptl_mean_plus_sigma = $ptl_mean + $ptl_sd
display $ptl_mean_plus_sigma
global ptl_mean_plus_twosigma = $ptl_mean + 2*$ptl_sd
display $ptl_mean_plus_twosigma

margins if e(sample), dydx (smoke) at( (mean) _all ptl=(0 $ptl_mean $ptl_mean_plus_sigmaa $ptl_mean_plus_twosigma )) predict(pr) saving(m1, replace)

结果

logit low i.smoke##c.lwt  ftv age ptl if ui==1

su ptl if e(sample), detail

global ptl_mean  = r(mean)
display $ptl_mean
global ptl_sd    = r(sd)
display $ptl_sd
global ptl_mean_plus_sigma = $ptl_mean + $ptl_sd
display $ptl_mean_plus_sigma
global ptl_mean_plus_twosigma = $ptl_mean + 2*$ptl_sd
display $ptl_mean_plus_twosigma

margins if e(sample), dydx (smoke) at( (mean) _all ptl=(0 $ptl_mean $ptl_mean_plus_sigmaa $ptl_mean_plus_twosigma )) predict(pr) saving(m2, replace)

结果

现在,我使用用户编写的命令 --combomarginsplot-- 来组合两个边缘图:

graph set window fontface "Times New Roman"
#delimit ;
combomarginsplot m1 m2, 
labels("ui==0" "ui==1" position(3)) 
title("Marginal Effects of ptl on low brith weight likelihood", size(medium)) 
xtitle("ptl", size(small)) 
ytitle("Change in likelihood", size(small)) 
xlabel(,labsize(small))
ylabel(,labsize(small))
legend(size(small))
noci file1opts(lpattern(shortdash) msymbol(i)) 
     file2opts(lpattern(dash) msymbol(D));
#delimit;
graph save "Graph" "marginal.gph",replace

该图将是:

有人可能会说,很容易说第二个子样本(即 ui==1)的边际值不为零。因此,我们可以得出结论,ui==0 时的边际值大于 ui==1 时的边际值。

如果两个子样本的边际值在统计上显着怎么办?如何测试他们的统计差异?

谢谢,纳维德

标签: statisticsstatalogistic-regressionmarginal-effects

解决方案


推荐阅读