You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Stata中绘制按p值标记不同散点形状的系数折线图

Stata 带显著性标记折线图实现步骤

你可以按照下方步骤完成绘图,首先处理原始p值字段转成数值型变量,之后为三个Beta序列分别生成对应的标记符号变量,最后叠加图层绘图即可。

步骤1:数据预处理

首先将带括号的p值清理为数值型,再根据显著性水平赋值标记类型:

* 注意:如果你的原始变量名包含横杠(如`p-value`、`Beta-2`),引用时需要用重音符号包裹,例如`` `p-value' ``
* 清理p值变量,去掉括号转为数值
foreach var in pvalue pvalue2 pvalue3 {
    replace `var' = subinstr(`var', "(", "", .)
    replace `var' = subinstr(`var', ")", "", .)
    destring `var', replace
}

* 为每个Beta生成对应的标记符号:1=星形、2=圆形、3=方形,p≥0.1的留空不显示标记
gen mark1 = .
replace mark1 = 1 if pvalue < 0.01
replace mark1 = 2 if pvalue >=0.01 & pvalue <0.05
replace mark1 = 3 if pvalue >=0.05 & pvalue <0.1

gen mark2 = .
replace mark2 = 1 if pvalue2 < 0.01
replace mark2 = 2 if pvalue2 >=0.01 & pvalue2 <0.05
replace mark2 = 3 if pvalue2 >=0.05 & pvalue2 <0.1

gen mark3 = .
replace mark3 = 1 if pvalue3 < 0.01
replace mark3 = 2 if pvalue3 >=0.01 & pvalue3 <0.05
replace mark3 = 3 if pvalue3 >=0.05 & pvalue3 <0.1

步骤2:叠加折线与散点标记绘图

直接在twoway命令中叠加折线层和对应显著性的散点层即可,用空散点单独生成显著性标记的图例:

twoway  ///
    * 先画三条基础折线
    line Beta Beta2 Beta3 Period, lc(navy maroon olive) lw(medthick medthick medthick) ///
    * 叠加Beta的三类显著性标记
    scatter Beta Period if mark1==1, ms(star) mcolor(navy) legend_label(1 "Beta") ///
    scatter Beta Period if mark1==2, ms(circle) mcolor(navy) ///
    scatter Beta Period if mark1==3, ms(square) mcolor(navy) ///
    * 叠加Beta2的三类显著性标记
    scatter Beta2 Period if mark2==1, ms(star) mcolor(maroon) legend_label(5 "Beta_2") ///
    scatter Beta2 Period if mark2==2, ms(circle) mcolor(maroon) ///
    scatter Beta2 Period if mark2==3, ms(square) mcolor(maroon) ///
    * 叠加Beta3的三类显著性标记
    scatter Beta3 Period if mark3==1, ms(star) mcolor(olive) legend_label(9 "Beta_3") ///
    scatter Beta3 Period if mark3==2, ms(circle) mcolor(olive) ///
    scatter Beta3 Period if mark3==3, ms(square) mcolor(olive) ///
    * 生成显著性标记的专属图例(空散点不会在图上显示实际内容)
    scatteri  .  . , ms(star) mc(black) legend_label(13 "p<0.01") ///
    scatteri  .  . , ms(circle) mc(black) legend_label(14 "0.01≤p<0.05") ///
    scatteri  .  . , ms(square) mc(black) legend_label(15 "0.05≤p<0.1") ///
    * 调整坐标轴和图例样式
    xlabel(1(1)4) xtitle("Period") ytitle("系数值") ///
    legend(order(1 5 9 13 14 15) row(2) position(6))

可选调整项

  • 修改lc()参数可调整三条折线的颜色,lw()参数可调整折线粗细
  • 调整legend的order参数可修改图例显示顺序,row()参数可修改图例排列行数

内容的提问来源于stack exchange,提问作者Alberto Alvarez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:57:02