使用控制变量创建散点图

问题描述

我正在尝试为两个变量创建散点图,同时偏向于控制变量的影响。

我的回归如下:

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)

enter image description here

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

enter image description here

第二个图添加了建模值的散点图,并使用了一些美学选项。添加这些需要更多的工作。


您的评论与其说是对 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 命令完成。