计算和绘制组均值差异
Computing and plotting difference in group means
在接下来的内容中,我通过分组变量 (foreign
) 为假变量 time
所取的每个可能值绘制了感兴趣结果 (price
) 的平均值:
sysuse auto, clear
gen time = rep78 - 3
bysort foreign time: egen avg_p = mean(price)
scatter avg_p time if (foreign==0 & time>=0) || ///
scatter avg_p time if (foreign==1 & time>=0), ///
legend(order(1 "Domestic" 2 "Foreign")) ///
ytitle("Average price") xlab(#3)
我想做的是绘制两组均值随时间的差异,而不是两个单独的均值。
我肯定遗漏了一些东西,但对我来说它看起来很复杂,因为有关平均值的信息存储在 "vertically"(在 avg_p
中)。
最简单的方法可以说是使用线性回归来估计差异:
/* Regression Way */
drop if time < 0 | missing(time)
reg price i.foreign##i.time
margins, dydx(foreign) at(time =(0(1)2))
marginsplot, noci title("Foreign vs Domestic Difference in Price")
如果回归很难让你全神贯注,另一个是涉及用 reshape
处理数据:
/* Transform the Data */
keep price time foreign
collapse (mean) price, by(time foreign)
reshape wide price, i(time) j(foreign)
gen diff = price1-price0
tw connected diff time
这是另一种方法。 graph dot
会愉快的剧情意思。
sysuse auto, clear
set scheme s1color
collapse price if inrange(rep78, 3, 5), by(foreign rep78)
reshape wide price, i(rep78) j(foreign)
rename price0 Domestic
label var Domestic
rename price1 Foreign
label var Foreign
graph dot (asis) Domestic Foreign, over(rep78) vertical ///
marker(1, ms(Oh)) marker(2, ms(+))
在接下来的内容中,我通过分组变量 (foreign
) 为假变量 time
所取的每个可能值绘制了感兴趣结果 (price
) 的平均值:
sysuse auto, clear
gen time = rep78 - 3
bysort foreign time: egen avg_p = mean(price)
scatter avg_p time if (foreign==0 & time>=0) || ///
scatter avg_p time if (foreign==1 & time>=0), ///
legend(order(1 "Domestic" 2 "Foreign")) ///
ytitle("Average price") xlab(#3)
我想做的是绘制两组均值随时间的差异,而不是两个单独的均值。
我肯定遗漏了一些东西,但对我来说它看起来很复杂,因为有关平均值的信息存储在 "vertically"(在 avg_p
中)。
最简单的方法可以说是使用线性回归来估计差异:
/* Regression Way */
drop if time < 0 | missing(time)
reg price i.foreign##i.time
margins, dydx(foreign) at(time =(0(1)2))
marginsplot, noci title("Foreign vs Domestic Difference in Price")
如果回归很难让你全神贯注,另一个是涉及用 reshape
处理数据:
/* Transform the Data */
keep price time foreign
collapse (mean) price, by(time foreign)
reshape wide price, i(time) j(foreign)
gen diff = price1-price0
tw connected diff time
这是另一种方法。 graph dot
会愉快的剧情意思。
sysuse auto, clear
set scheme s1color
collapse price if inrange(rep78, 3, 5), by(foreign rep78)
reshape wide price, i(rep78) j(foreign)
rename price0 Domestic
label var Domestic
rename price1 Foreign
label var Foreign
graph dot (asis) Domestic Foreign, over(rep78) vertical ///
marker(1, ms(Oh)) marker(2, ms(+))