使用控制变量创建散点图
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
命令来完成。
我正在尝试为两个变量创建散点图,同时针对控制变量的影响进行偏出。
我的回归如下:
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
命令来完成。