使用控制变量创建散点图

Create scatterplots with control variables

我正在尝试为两个变量创建散点图,同时针对控制变量的影响进行偏出。

我的回归如下:

reg y x z, robust

如果我想制作一个普通的散点图,我会使用以下代码:

twoway scatter y x, mlabel(country) || lfitci y x

但现在因为我有控制变量 z,我不知道如何将其包含到散点图中。

我可以使用其他命令吗?谢谢

我将向模型中添加第二个控制变量以使图表更有趣。

最简单的方法是 margins:

sysuse auto, clear
keep price mpg foreign weight

/* Expected Value with CI Varying mpg */
reg price mpg i.foreign weight, robust
margins, at(mpg = (10(5)30))
marginsplot, name(ci_only, replace) ylab(#10, format(%9.0fc))

/* Add Scatterplot and Modify Aesthetic Options */
reg price mpg i.foreign c.weight, robust

forvalues v = 1(1)5 {
    gen mpg`v'=5+`v'*5
}

margins, at(mpg = (10(5)30)) generate(exp_price)

marginsplot, addplot(      ///
    scatter exp_price1 mpg1, ms(oh) mcolor(maroon) mlwidth(vvthin) || ///
    scatter exp_price2 mpg2, ms(oh) mcolor(maroon) mlwidth(vvthin) || ///
    scatter exp_price3 mpg3, ms(oh) mcolor(maroon) mlwidth(vvthin) || ///
    scatter exp_price4 mpg4, ms(oh) mcolor(maroon) mlwidth(vvthin) || ///
    scatter exp_price5 mpg5, ms(oh) mcolor(maroon) mlwidth(vvthin) || ///
, below) ///
legend(off) ylab(#10, format(%9.0fc)) recastci(rline)   ///
ciopts(lpattern(shortdash) lcolor(navy) lwidth(thin))   ///
plotopts(lcolor(navy) mcolor(navy) lwidth(thin) mlwidth(thin) ms(Oh)) ///
name(ci_plus_scatter, replace)

第一个图显示了所有汽车的预期价格变化 mpg,但保持数据中观察到的外国和重量。

第二个图添加了建模值的散点图并尝试了一些美学选项。添加这些有点麻烦。


您的评论更像是重述,而不是 PO 的定义。阅读字里行间,您可能想要这样的东西:

sysuse auto, clear
reg price mpg weight, robust
gen price_po_mpg = price - _b[mpg]*mpg
tw (scatter price_po_mpg mpg) (lfitci price_po_mpg mpg, ciplot(rline))

这个CI将关闭,因为它没有考虑mpg系数的估计,所以我不会太认真。或者,如果您打算将年龄设置为期望值的中位数并改变教育程度,则可以使用 margins 命令来完成。